const struct symbol_table *tbl,
struct expr **res);
extern void symbolic_constant_print(const struct symbol_table *tbl,
- const struct expr *expr);
+ const struct expr *expr, bool quotes);
extern void symbol_table_print(const struct symbol_table *tbl,
const struct datatype *dtype);
for (s = ct_label_tbl->symbols; s->identifier != NULL; s++) {
if (bit != s->value)
continue;
- printf("%s", s->identifier);
+ printf("\"%s\"", s->identifier);
return;
}
/* can happen when connlabel.conf is altered after rules were added */
if (dtype->print != NULL)
return dtype->print(expr);
if (dtype->sym_tbl != NULL)
- return symbolic_constant_print(dtype->sym_tbl, expr);
+ return symbolic_constant_print(dtype->sym_tbl, expr,
+ false);
} while ((dtype = dtype->basetype));
BUG("datatype %s has no print method or symbol table\n",
}
void symbolic_constant_print(const struct symbol_table *tbl,
- const struct expr *expr)
+ const struct expr *expr, bool quotes)
{
unsigned int len = div_round_up(expr->len, BITS_PER_BYTE);
const struct symbolic_constant *s;
if (s->identifier == NULL)
return expr_basetype(expr)->print(expr);
- printf("%s", s->identifier);
+ if (quotes)
+ printf("\"%s\"", s->identifier);
+ else
+ printf("%s", s->identifier);
}
void symbol_table_print(const struct symbol_table *tbl,
static void mark_type_print(const struct expr *expr)
{
- return symbolic_constant_print(mark_tbl, expr);
+ return symbolic_constant_print(mark_tbl, expr, true);
}
static struct error_record *mark_type_parse(const struct expr *sym,
static void realm_type_print(const struct expr *expr)
{
- return symbolic_constant_print(realm_tbl, expr);
+ return symbolic_constant_print(realm_tbl, expr, true);
}
static struct error_record *realm_type_parse(const struct expr *sym,
ifindex = mpz_get_uint32(expr->value);
if (nft_if_indextoname(ifindex, name))
- printf("%s", name);
+ printf("\"%s\"", name);
else
printf("%d", ifindex);
}
pw = getpwuid(uid);
if (pw != NULL)
- printf("%s", pw->pw_name);
+ printf("\"%s\"", pw->pw_name);
else
printf("%d", uid);
return;
gr = getgrgid(gid);
if (gr != NULL)
- printf("%s", gr->gr_name);
+ printf("\"%s\"", gr->gr_name);
else
printf("%u", gid);
return;
static void pkttype_type_print(const struct expr *expr)
{
- return symbolic_constant_print(&pkttype_type_tbl, expr);
+ return symbolic_constant_print(&pkttype_type_tbl, expr, false);
}
static const struct datatype pkttype_type = {
static void devgroup_type_print(const struct expr *expr)
{
- return symbolic_constant_print(devgroup_tbl, expr);
+ return symbolic_constant_print(devgroup_tbl, expr, true);
}
static struct error_record *devgroup_type_parse(const struct expr *sym,
static void ethertype_print(const struct expr *expr)
{
- return symbolic_constant_print(ðertype_tbl, expr);
+ return symbolic_constant_print(ðertype_tbl, expr, false);
}
const struct datatype ethertype_type = {
*netdev;test-netdev;ingress
-dup to lo;ok
-dup to mark map { 0x00000001 : lo, 0x00000002 : lo};ok
+dup to "lo";ok
+dup to mark map { 0x00000001 : "lo", 0x00000002 : "lo"};ok
-# dup to lo
+# dup to "lo"
netdev test-netdev ingress
[ immediate reg 1 0x00000001 ]
[ dup sreg_dev 1 ]
-# dup to mark map { 0x00000001 : lo, 0x00000002 : lo}
+# dup to mark map { 0x00000001 : "lo", 0x00000002 : "lo"}
__map%d test-netdev b
__map%d test-netdev 0
element 00000001 : 00000001 0 [end] element 00000002 : 00000001 0 [end]
*netdev;test-netdev;ingress
-fwd to lo;ok
-fwd to mark map { 0x00000001 : lo, 0x00000002 : lo};ok
+fwd to "lo";ok
+fwd to mark map { 0x00000001 : "lo", 0x00000002 : "lo"};ok
-# fwd to lo
+# fwd to "lo"
netdev test-netdev ingress
[ immediate reg 1 0x00000001 ]
[ fwd sreg_dev 1 ]
-# fwd to mark map { 0x00000001 : lo, 0x00000002 : lo}
+# fwd to mark map { 0x00000001 : "lo", 0x00000002 : "lo"}
__map%d test-netdev b
__map%d test-netdev 0
element 00000001 : 00000001 0 [end] element 00000002 : 00000001 0 [end]
meta mark xor 0x03 == 0x01;ok;mark 0x00000002
meta mark xor 0x03 != 0x01;ok;mark != 0x00000002
-meta iif eth0 accept;ok;iif eth0 accept
-meta iif eth0 accept;ok;iif eth0 accept
-meta iif != eth0 accept;ok;iif != eth0 accept
-meta iif != eth0 accept;ok;iif != eth0 accept
+meta iif "eth0" accept;ok;iif "eth0" accept
+meta iif "eth0" accept;ok;iif "eth0" accept
+meta iif != "eth0" accept;ok;iif != "eth0" accept
+meta iif != "eth0" accept;ok;iif != "eth0" accept
meta iifname "eth0";ok;iifname "eth0"
meta iifname != "eth0";ok;iifname != "eth0"
meta iiftype != ppp;ok;iiftype != ppp
meta iiftype ppp;ok;iiftype ppp
-meta oif lo accept;ok;oif lo accept
-meta oif != lo accept;ok;oif != lo accept
-meta oif {eth0, lo} accept;ok
-- meta oif != {eth0, lo} accept;ok
+meta oif "lo" accept;ok;oif "lo" accept
+meta oif != "lo" accept;ok;oif != "lo" accept
+meta oif {"eth0", "lo"} accept;ok
+- meta oif != {"eth0", "lo"} accept;ok
meta oifname "eth0";ok;oifname "eth0"
meta oifname != "eth0";ok;oifname != "eth0"
meta oiftype != ether;ok;oiftype != ether
meta oiftype ether;ok;oiftype ether
-meta skuid {bin, root, daemon} accept;ok;skuid { 0, 1, 2} accept
-- meta skuid != {bin, root, daemon} accept;ok
-meta skuid root;ok;skuid 0
-meta skuid != root;ok;skuid != 0
+meta skuid {"bin", "root", "daemon"} accept;ok;skuid { 0, 1, 2} accept
+- meta skuid != {"bin", "root", "daemon"} accept;ok
+meta skuid "root";ok;skuid 0
+meta skuid != "root";ok;skuid != 0
meta skuid lt 3000 accept;ok;skuid < 3000 accept
meta skuid gt 3000 accept;ok;skuid > 3000 accept
meta skuid eq 3000 accept;ok;skuid 3000 accept
meta skuid { 2001-2005} accept;ok;skuid { 2001-2005} accept
- meta skuid != { 2001-2005} accept;ok
-meta skgid {bin, root, daemon} accept;ok;skgid { 0, 1, 2} accept
-- meta skgid != {bin, root, daemon} accept;ok
-meta skgid root;ok;skgid 0
-meta skgid != root;ok;skgid != 0
+meta skgid {"bin", "root", "daemon"} accept;ok;skgid { 0, 1, 2} accept
+- meta skgid != {"bin", "root", "daemon"} accept;ok
+meta skgid "root";ok;skgid 0
+meta skgid != "root";ok;skgid != 0
meta skgid lt 3000 accept;ok;skgid < 3000 accept
meta skgid gt 3000 accept;ok;skgid > 3000 accept
meta skgid eq 3000 accept;ok;skgid 3000 accept
meta mark set 0x32 or 0xfffff;ok;mark set 0x000fffff
meta mark set 0xfffe xor 0x16;ok;mark set 0x0000ffe8
-meta iif lo;ok;iif lo
-meta oif lo;ok;oif lo
+meta iif "lo";ok;iif "lo"
+meta oif "lo";ok;oif "lo"
meta oifname "eth2" accept;ok;oifname "eth2" accept
meta skuid 3000;ok;skuid 3000
meta skgid 3000;ok;skgid 3000
# BUG: meta nftrace 1;ok
# <cmdline>:1:1-37: Error: Could not process rule: Operation not supported
- meta nftrace 1;ok
-meta rtclassid cosmos;ok;rtclassid cosmos
+meta rtclassid "cosmos";ok;rtclassid "cosmos"
meta pkttype broadcast;ok;pkttype broadcast
meta pkttype unicast;ok;pkttype unicast
meta cpu { 2-3, 5-7};ok
-meta cpu != { 2,3};ok; cpu != { 2,3}
-meta iifgroup 0;ok;iifgroup default
-meta iifgroup != 0;ok;iifgroup != default
-meta iifgroup default;ok;iifgroup default
-meta iifgroup != default;ok;iifgroup != default
-meta iifgroup {default};ok;iifgroup {default}
-- meta iifgroup != {default};ok
+meta iifgroup 0;ok;iifgroup "default"
+meta iifgroup != 0;ok;iifgroup != "default"
+meta iifgroup "default";ok;iifgroup "default"
+meta iifgroup != "default";ok;iifgroup != "default"
+meta iifgroup {"default"};ok;iifgroup {"default"}
+- meta iifgroup != {"default"};ok
meta iifgroup { 11,33};ok
meta iifgroup {11-33};ok
- meta iifgroup != {11,33};ok
- meta iifgroup != {11-33};ok
-meta oifgroup 0;ok;oifgroup default
-meta oifgroup != 0;ok;oifgroup != default
-meta oifgroup default;ok;oifgroup default
-meta oifgroup != default;ok;oifgroup != default
-meta oifgroup {default};ok;oifgroup {default}
-- meta oifgroup != {default};ok
+meta oifgroup 0;ok;oifgroup "default"
+meta oifgroup != 0;ok;oifgroup != "default"
+meta oifgroup "default";ok;oifgroup "default"
+meta oifgroup != "default";ok;oifgroup != "default"
+meta oifgroup {"default"};ok;oifgroup {"default"}
+- meta oifgroup != {"default"};ok
meta oifgroup { 11,33};ok
meta oifgroup {11-33};ok
- meta oifgroup != {11,33};ok
meta cgroup {1048577-1048578};ok;cgroup { 1048577-1048578}
# meta cgroup != { 1048577-1048578};ok;cgroup != { 1048577-1048578}
-meta iif . meta oif { lo . eth0 };ok
-meta iif . meta oif . meta mark { lo . eth0 . 0x0000000a };ok
-meta iif . meta oif vmap { lo . eth0 : drop };ok
+meta iif . meta oif { "lo" . "eth0" };ok
+meta iif . meta oif . meta mark { "lo" . "eth0" . 0x0000000a };ok
+meta iif . meta oif vmap { "lo" . "eth0" : drop };ok
meta random eq 1;ok;meta random 1
meta random gt 1000000;ok;meta random > 1000000
[ meta load mark => reg 1 ]
[ cmp neq reg 1 0x00000002 ]
-# meta iif eth0 accept
+# meta iif "eth0" accept
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000002 ]
[ immediate reg 0 accept ]
-# meta iif eth0 accept
+# meta iif "eth0" accept
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000002 ]
[ immediate reg 0 accept ]
-# meta iif != eth0 accept
+# meta iif != "eth0" accept
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp neq reg 1 0x00000002 ]
[ immediate reg 0 accept ]
-# meta iif != eth0 accept
+# meta iif != "eth0" accept
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp neq reg 1 0x00000002 ]
[ meta load iiftype => reg 1 ]
[ cmp eq reg 1 0x00000200 ]
-# meta oif lo accept
+# meta oif "lo" accept
ip test-ip4 input
[ meta load oif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 0 accept ]
-# meta oif != lo accept
+# meta oif != "lo" accept
ip test-ip4 input
[ meta load oif => reg 1 ]
[ cmp neq reg 1 0x00000001 ]
[ immediate reg 0 accept ]
-# meta oif {eth0, lo} accept
+# meta oif {"eth0", "lo"} accept
__set%d test-ip4 3
__set%d test-ip4 0
element 00000002 : 0 [end] element 00000001 : 0 [end]
[ meta load oiftype => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
-# meta skuid {bin, root, daemon} accept
+# meta skuid {"bin", "root", "daemon"} accept
__set%d test-ip4 3
__set%d test-ip4 0
element 00000001 : 0 [end] element 00000000 : 0 [end] element 00000002 : 0 [end]
[ lookup reg 1 set __set%d ]
[ immediate reg 0 accept ]
-# meta skuid root
+# meta skuid "root"
ip test-ip4 input
[ meta load skuid => reg 1 ]
[ cmp eq reg 1 0x00000000 ]
-# meta skuid != root
+# meta skuid != "root"
ip test-ip4 input
[ meta load skuid => reg 1 ]
[ cmp neq reg 1 0x00000000 ]
[ lookup reg 1 set __set%d ]
[ immediate reg 0 accept ]
-# meta skgid {bin, root, daemon} accept
+# meta skgid {"bin", "root", "daemon"} accept
__set%d test-ip4 3
__set%d test-ip4 0
element 00000001 : 0 [end] element 00000000 : 0 [end] element 00000002 : 0 [end]
[ lookup reg 1 set __set%d ]
[ immediate reg 0 accept ]
-# meta skgid root
+# meta skgid "root"
ip test-ip4 input
[ meta load skgid => reg 1 ]
[ cmp eq reg 1 0x00000000 ]
-# meta skgid != root
+# meta skgid != "root"
ip test-ip4 input
[ meta load skgid => reg 1 ]
[ cmp neq reg 1 0x00000000 ]
[ immediate reg 1 0x0000ffe8 ]
[ meta set mark with reg 1 ]
-# meta iif lo
+# meta iif "lo"
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
-# meta oif lo
+# meta oif "lo"
ip test-ip4 input
[ meta load oif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ meta load skgid => reg 1 ]
[ cmp eq reg 1 0x00000bb8 ]
-# meta rtclassid cosmos
+# meta rtclassid "cosmos"
ip test-ip4 input
[ meta load rtclassid => reg 1 ]
[ cmp eq reg 1 0x00000000 ]
[ meta load iifgroup => reg 1 ]
[ cmp neq reg 1 0x00000000 ]
-# meta iifgroup default
+# meta iifgroup "default"
ip test-ip4 input
[ meta load iifgroup => reg 1 ]
[ cmp eq reg 1 0x00000000 ]
-# meta iifgroup != default
+# meta iifgroup != "default"
ip test-ip4 input
[ meta load iifgroup => reg 1 ]
[ cmp neq reg 1 0x00000000 ]
-# meta iifgroup {default}
+# meta iifgroup {"default"}
__set%d test-ip4 3
__set%d test-ip4 0
element 00000000 : 0 [end]
[ meta load oifgroup => reg 1 ]
[ cmp neq reg 1 0x00000000 ]
-# meta oifgroup default
+# meta oifgroup "default"
ip test-ip4 input
[ meta load oifgroup => reg 1 ]
[ cmp eq reg 1 0x00000000 ]
-# meta oifgroup != default
+# meta oifgroup != "default"
ip test-ip4 input
[ meta load oifgroup => reg 1 ]
[ cmp neq reg 1 0x00000000 ]
-# meta oifgroup {default}
+# meta oifgroup {"default"}
__set%d test-ip4 3
__set%d test-ip4 0
element 00000000 : 0 [end]
[ lookup reg 1 set __set%d ]
-# meta iif . meta oif { lo . eth0 }
+# meta iif . meta oif { "lo" . "eth0" }
__set%d test-ip4 3
__set%d test-ip4 0
element 00000001 00000002 : 0 [end]
[ meta load oif => reg 9 ]
[ lookup reg 1 set __set%d ]
-# meta iif . meta oif . meta mark { lo . eth0 . 0x0000000a }
+# meta iif . meta oif . meta mark { "lo" . "eth0" . 0x0000000a }
__set%d test-ip4 3
__set%d test-ip4 0
element 00000001 00000002 0000000a : 0 [end]
[ meta load mark => reg 10 ]
[ lookup reg 1 set __set%d ]
-# meta iif . meta oif vmap { lo . eth0 : drop }
+# meta iif . meta oif vmap { "lo" . "eth0" : drop }
__map%d test-ip4 b
__map%d test-ip4 0
element 00000001 00000002 : 0 [end]
- udp checksum != { 33-55};ok
# limit impact to lo
-iif lo udp checksum set 0;ok
-iif lo udp dport set 65535;ok
+iif "lo" udp checksum set 0;ok
+iif "lo" udp dport set 65535;ok
[ payload load 2b @ transport header + 6 => reg 1 ]
[ lookup reg 1 set __set%d ]
-# iif lo udp checksum set 0
+# iif "lo" udp checksum set 0
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ transport header + 6 csum_type 1 csum_off 6 ]
-# iif lo udp dport set 65535
+# iif "lo" udp dport set 65535
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ payload load 2b @ transport header + 6 => reg 1 ]
[ lookup reg 1 set __set%d ]
-# iif lo udp checksum set 0
+# iif "lo" udp checksum set 0
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ transport header + 6 csum_type 1 csum_off 6 ]
-# iif lo udp dport set 65535
+# iif "lo" udp dport set 65535
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ payload load 2b @ transport header + 6 => reg 1 ]
[ lookup reg 1 set __set%d ]
-# iif lo udp checksum set 0
+# iif "lo" udp checksum set 0
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ transport header + 6 csum_type 1 csum_off 6 ]
-# iif lo udp dport set 65535
+# iif "lo" udp dport set 65535
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ payload load 2b @ transport header + 6 => reg 1 ]
[ lookup reg 1 set __set%d ]
-# iif lo udp checksum set 0
+# iif "lo" udp checksum set 0
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ transport header + 6 csum_type 1 csum_off 6 ]
-# iif lo udp dport set 65535
+# iif "lo" udp dport set 65535
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
*ip;test-ip4;input
dup to 192.168.2.1;ok
-dup to 192.168.2.1 device eth0;ok
-dup to ip saddr map { 192.168.2.120 : 192.168.2.1 } device eth0;ok
+dup to 192.168.2.1 device "eth0";ok
+dup to ip saddr map { 192.168.2.120 : 192.168.2.1 } device "eth0";ok
[ immediate reg 1 0x0102a8c0 ]
[ dup sreg_addr 1 ]
-# dup to 192.168.2.1 device eth0
+# dup to 192.168.2.1 device "eth0"
ip test-ip4 test
[ immediate reg 1 0x0102a8c0 ]
[ immediate reg 2 0x00000002 ]
[ dup sreg_addr 1 sreg_dev 2 ]
-# dup to ip saddr map { 192.168.2.120 : 192.168.2.1 } device eth0
+# dup to ip saddr map { 192.168.2.120 : 192.168.2.1 } device "eth0"
__map%d test-ip4 b
__map%d test-ip4 0
element 7802a8c0 : 0102a8c0 0 [end]
ip hdrlength 16;fail
# limit impact to lo
-iif lo ip daddr set 127.0.0.1;ok
-iif lo ip checksum set 0;ok
-iif lo ip id set 0;ok
-iif lo ip ecn set 1;ok;iif lo ip ecn set ect1
-iif lo ip ecn set ce;ok
-
-iif lo ip dscp set af23;ok
-iif lo ip dscp set cs0;ok
+iif "lo" ip daddr set 127.0.0.1;ok
+iif "lo" ip checksum set 0;ok
+iif "lo" ip id set 0;ok
+iif "lo" ip ecn set 1;ok;iif "lo" ip ecn set ect1
+iif "lo" ip ecn set ce;ok
+
+iif "lo" ip dscp set af23;ok
+iif "lo" ip dscp set cs0;ok
[ bitwise reg 1 = (reg=1 & 0x0000000f ) ^ 0x00000000 ]
[ cmp eq reg 1 0x0000000f ]
-# iif lo ip daddr set 127.0.0.1
+# iif "lo" ip daddr set 127.0.0.1
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x0100007f ]
[ payload write reg 1 => 4b @ network header + 16 csum_type 1 csum_off 10 ]
-# iif lo ip checksum set 0
+# iif "lo" ip checksum set 0
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ network header + 10 csum_type 1 csum_off 10 ]
-# iif lo ip id set 0
+# iif "lo" ip id set 0
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ network header + 4 csum_type 1 csum_off 10 ]
-# iif lo ip ecn set 1
+# iif "lo" ip ecn set 1
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000fcff ) ^ 0x00000100 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip ecn set ce
+# iif "lo" ip ecn set ce
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000fcff ) ^ 0x00000300 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip dscp set af23
+# iif "lo" ip dscp set af23
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000003ff ) ^ 0x00005800 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip dscp set cs0
+# iif "lo" ip dscp set cs0
ip test-ip4 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000000f ) ^ 0x00000000 ]
[ cmp eq reg 1 0x0000000f ]
-# iif lo ip daddr set 127.0.0.1
+# iif "lo" ip daddr set 127.0.0.1
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x0100007f ]
[ payload write reg 1 => 4b @ network header + 16 csum_type 1 csum_off 10 ]
-# iif lo ip checksum set 0
+# iif "lo" ip checksum set 0
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ network header + 10 csum_type 1 csum_off 10 ]
-# iif lo ip id set 0
+# iif "lo" ip id set 0
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ network header + 4 csum_type 1 csum_off 10 ]
-# iif lo ip ecn set 1
+# iif "lo" ip ecn set 1
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000fcff ) ^ 0x00000100 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip ecn set ce
+# iif "lo" ip ecn set ce
inet test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000fcff ) ^ 0x00000300 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip dscp set af23
+# iif "lo" ip dscp set af23
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000003ff ) ^ 0x00005800 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip dscp set cs0
+# iif "lo" ip dscp set cs0
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000fc ) ^ 0x00000000 ]
[ lookup reg 1 set __set%d ]
-# iif lo ip daddr set 127.0.0.1
+# iif "lo" ip daddr set 127.0.0.1
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x0100007f ]
[ payload write reg 1 => 4b @ network header + 16 csum_type 1 csum_off 10 ]
-# iif lo ip checksum set 0
+# iif "lo" ip checksum set 0
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ network header + 10 csum_type 1 csum_off 10 ]
-# iif lo ip id set 0
+# iif "lo" ip id set 0
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 ]
[ payload write reg 1 => 2b @ network header + 4 csum_type 1 csum_off 10 ]
-# iif lo ip ecn set 1
+# iif "lo" ip ecn set 1
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000fcff ) ^ 0x00000100 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip ecn set ce
+# iif "lo" ip ecn set ce
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x0000fcff ) ^ 0x00000300 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip dscp set af23
+# iif "lo" ip dscp set af23
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000003ff ) ^ 0x00005800 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 1 csum_off 10 ]
-# iif lo ip dscp set cs0
+# iif "lo" ip dscp set cs0
netdev test-netdev ingress
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
*ip6;test-ip6;input
dup to abcd::1;ok
-dup to abcd::1 device eth0;ok
-dup to ip6 saddr map { abcd::1 : cafe::cafe } device eth0;ok
+dup to abcd::1 device "eth0";ok
+dup to ip6 saddr map { abcd::1 : cafe::cafe } device "eth0";ok
[ immediate reg 1 0x0000cdab 0x00000000 0x00000000 0x01000000 ]
[ dup sreg_addr 1 ]
-# dup to abcd::1 device eth0
+# dup to abcd::1 device "eth0"
ip6 test test
[ immediate reg 1 0x0000cdab 0x00000000 0x00000000 0x01000000 ]
[ immediate reg 2 0x00000002 ]
[ dup sreg_addr 1 sreg_dev 2 ]
-# dup to ip6 saddr map { abcd::1 : cafe::cafe } device eth0
+# dup to ip6 saddr map { abcd::1 : cafe::cafe } device "eth0"
__map%d test-ip6 b
__map%d test-ip6 0
element 0000cdab 00000000 00000000 01000000 : 0000feca 00000000 00000000 feca0000 0 [end]
ip6 daddr != ::1234:1234:1234:1234:1234:1234:1234-1234:1234::1234:1234:1234:1234:1234;ok;ip6 daddr != 0:1234:1234:1234:1234:1234:1234:1234-1234:1234:0:1234:1234:1234:1234:1234
# limit impact to lo
-iif lo ip6 daddr set ::1;ok
-iif lo ip6 hoplimit set 1;ok
-iif lo ip6 dscp set af42;ok
-iif lo ip6 dscp set 63;ok;iif lo ip6 dscp set 0x3f
-iif lo ip6 ecn set ect0;ok
-iif lo ip6 ecn set ce;ok
+iif "lo" ip6 daddr set ::1;ok
+iif "lo" ip6 hoplimit set 1;ok
+iif "lo" ip6 dscp set af42;ok
+iif "lo" ip6 dscp set 63;ok;iif "lo" ip6 dscp set 0x3f
+iif "lo" ip6 ecn set ect0;ok
+iif "lo" ip6 ecn set ce;ok
-iif lo ip6 flowlabel set 0;ok
-iif lo ip6 flowlabel set 12345;ok
-iif lo ip6 flowlabel set 0xfffff;ok;iif lo ip6 flowlabel set 1048575
+iif "lo" ip6 flowlabel set 0;ok
+iif "lo" ip6 flowlabel set 12345;ok
+iif "lo" ip6 flowlabel set 0xfffff;ok;iif "lo" ip6 flowlabel set 1048575
-iif lo ip6 ecn set 4;fail
-iif lo ip6 dscp set 64;fail
-iif lo ip6 flowlabel set 1048576;fail
+iif "lo" ip6 ecn set 4;fail
+iif "lo" ip6 dscp set 64;fail
+iif "lo" ip6 flowlabel set 1048576;fail
[ cmp lt reg 1 0x34120000 0x34123412 0x34123412 0x34123412 ]
[ cmp gt reg 1 0x34123412 0x34120000 0x34123412 0x34123412 ]
-# iif lo ip6 daddr set ::1
+# iif "lo" ip6 daddr set ::1
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 0x00000000 0x00000000 0x01000000 ]
[ payload write reg 1 => 16b @ network header + 24 csum_type 0 csum_off 0 ]
-# iif lo ip6 hoplimit set 1
+# iif "lo" ip6 hoplimit set 1
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000001 ]
[ payload write reg 1 => 1b @ network header + 7 csum_type 0 csum_off 0 ]
-# iif lo ip6 dscp set af42
+# iif "lo" ip6 dscp set af42
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x00003ff0 ) ^ 0x00000009 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 0 csum_off 0 ]
-# iif lo ip6 dscp set 63
+# iif "lo" ip6 dscp set 63
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x00003ff0 ) ^ 0x0000c00f ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 0 csum_off 0 ]
-# iif lo ip6 ecn set ect0
+# iif "lo" ip6 ecn set ect0
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000cf ) ^ 0x00000020 ]
[ payload write reg 1 => 1b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 ecn set ce
+# iif "lo" ip6 ecn set ce
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000cf ) ^ 0x00000030 ]
[ payload write reg 1 => 1b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 flowlabel set 0
+# iif "lo" ip6 flowlabel set 0
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000f0 ) ^ 0x00000000 ]
[ payload write reg 1 => 3b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 flowlabel set 12345
+# iif "lo" ip6 flowlabel set 12345
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000f0 ) ^ 0x00393000 ]
[ payload write reg 1 => 3b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 flowlabel set 0xfffff
+# iif "lo" ip6 flowlabel set 0xfffff
inet test-inet input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ cmp lt reg 1 0x34120000 0x34123412 0x34123412 0x34123412 ]
[ cmp gt reg 1 0x34123412 0x34120000 0x34123412 0x34123412 ]
-# iif lo ip6 daddr set ::1
+# iif "lo" ip6 daddr set ::1
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000000 0x00000000 0x00000000 0x01000000 ]
[ payload write reg 1 => 16b @ network header + 24 csum_type 0 csum_off 0 ]
-# iif lo ip6 hoplimit set 1
+# iif "lo" ip6 hoplimit set 1
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ immediate reg 1 0x00000001 ]
[ payload write reg 1 => 1b @ network header + 7 csum_type 0 csum_off 0 ]
-# iif lo ip6 dscp set af42
+# iif "lo" ip6 dscp set af42
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x00003ff0 ) ^ 0x00000009 ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 0 csum_off 0 ]
-# iif lo ip6 dscp set 63
+# iif "lo" ip6 dscp set 63
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x00003ff0 ) ^ 0x0000c00f ]
[ payload write reg 1 => 2b @ network header + 0 csum_type 0 csum_off 0 ]
-# iif lo ip6 ecn set ect0
+# iif "lo" ip6 ecn set ect0
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000cf ) ^ 0x00000020 ]
[ payload write reg 1 => 1b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 ecn set ce
+# iif "lo" ip6 ecn set ce
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000cf ) ^ 0x00000030 ]
[ payload write reg 1 => 1b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 flowlabel set 0
+# iif "lo" ip6 flowlabel set 0
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000f0 ) ^ 0x00000000 ]
[ payload write reg 1 => 3b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 flowlabel set 12345
+# iif "lo" ip6 flowlabel set 12345
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]
[ bitwise reg 1 = (reg=1 & 0x000000f0 ) ^ 0x00393000 ]
[ payload write reg 1 => 3b @ network header + 1 csum_type 0 csum_off 0 ]
-# iif lo ip6 flowlabel set 0xfffff
+# iif "lo" ip6 flowlabel set 0xfffff
ip6 test-ip6 input
[ meta load iif => reg 1 ]
[ cmp eq reg 1 0x00000001 ]