From f8bf621362cc7fa45731c87ef485f7fb298e1e13 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Wed, 16 Jun 2021 18:45:56 +0200 Subject: src: queue: allow use of MAP statement for queue number retrieval This allows to chose a queue number at run time using map statements, e.g.: queue flags bypass to ip saddr map { 192.168.7/24 : 0, 192.168.0/24 : 1 } Signed-off-by: Florian Westphal --- tests/py/any/queue.t | 1 + tests/py/any/queue.t.json | 34 ++++++++++++++++++++++++++++++++++ tests/py/any/queue.t.payload | 9 +++++++++ 3 files changed, 44 insertions(+) (limited to 'tests/py') diff --git a/tests/py/any/queue.t b/tests/py/any/queue.t index 670dfd92..446b8b18 100644 --- a/tests/py/any/queue.t +++ b/tests/py/any/queue.t @@ -25,3 +25,4 @@ queue flags bypass to numgen inc mod 65536;ok queue to jhash oif . meta mark mod 32;ok queue to oif;fail queue num oif;fail +queue flags bypass to oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 };ok diff --git a/tests/py/any/queue.t.json b/tests/py/any/queue.t.json index 18ed3c81..162bdff8 100644 --- a/tests/py/any/queue.t.json +++ b/tests/py/any/queue.t.json @@ -140,3 +140,37 @@ } ] +# queue flags bypass to oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 } +[ + { + "queue": { + "flags": "bypass", + "num": { + "map": { + "data": { + "set": [ + [ + "eth0", + 0 + ], + [ + "ppp0", + 2 + ], + [ + "eth1", + 2 + ] + ] + }, + "key": { + "meta": { + "key": "oifname" + } + } + } + } + } + } +] + diff --git a/tests/py/any/queue.t.payload b/tests/py/any/queue.t.payload index 35e757ee..02660afa 100644 --- a/tests/py/any/queue.t.payload +++ b/tests/py/any/queue.t.payload @@ -46,3 +46,12 @@ ip ip [ numgen reg 1 = inc mod 65536 ] [ queue sreg_qnum 1 bypass ] + +# queue flags bypass to oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 } +__map%d test-ip4 b size 3 +__map%d test-ip4 0 + element 30687465 00000000 00000000 00000000 : 00000000 0 [end] element 30707070 00000000 00000000 00000000 : 00000002 0 [end] element 31687465 00000000 00000000 00000000 : 00000002 0 [end] +ip + [ meta load oifname => reg 1 ] + [ lookup reg 1 set __map%d dreg 1 ] + [ queue sreg_qnum 1 bypass ] -- cgit v1.2.3