# meta length 1000 ip test-ip4 input [ meta load len => reg 1 ] [ cmp eq reg 1 0x000003e8 ] # meta length 22 ip test-ip4 input [ meta load len => reg 1 ] [ cmp eq reg 1 0x00000016 ] # meta length != 233 ip test-ip4 input [ meta load len => reg 1 ] [ cmp neq reg 1 0x000000e9 ] # meta length 33-45 ip test-ip4 input [ meta load len => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gte reg 1 0x21000000 ] [ cmp lte reg 1 0x2d000000 ] # meta length != 33-45 ip test-ip4 input [ meta load len => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ range neq reg 1 0x21000000 0x2d000000 ] # meta length { 33, 55, 67, 88} __set%d test-ip4 3 __set%d test-ip4 0 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end] ip test-ip4 input [ meta load len => reg 1 ] [ lookup reg 1 set __set%d ] # meta length { 33-55} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] ip test-ip4 input [ meta load len => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta length { 33-55, 67-88} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] element 43000000 : 0 [end] element 59000000 : 1 [end] ip test-ip4 input [ meta load len => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta length { 33-55, 55-88, 100-120} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 21000000 : 0 [end] element 59000000 : 1 [end] element 64000000 : 0 [end] element 79000000 : 1 [end] ip test-ip4 input [ meta load len => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta length != { 33, 55, 67, 88} __set%d test-ip4 3 __set%d test-ip4 0 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end] ip test-ip4 input [ meta load len => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta length != { 33-55} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] ip test-ip4 input [ meta load len => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d 0x1 ] # meta protocol { ip, arp, ip6, vlan } __set%d test-ip4 3 __set%d test-ip4 0 element 00000008 : 0 [end] element 00000608 : 0 [end] element 0000dd86 : 0 [end] element 00000081 : 0 [end] ip test-ip4 input [ meta load protocol => reg 1 ] [ lookup reg 1 set __set%d ] # meta protocol != {ip, arp, ip6, vlan} __set%d test-ip4 3 __set%d test-ip4 0 element 00000008 : 0 [end] element 00000608 : 0 [end] element 0000dd86 : 0 [end] element 00000081 : 0 [end] ip test-ip4 input [ meta load protocol => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta protocol ip ip test-ip4 input [ meta load protocol => reg 1 ] [ cmp eq reg 1 0x00000008 ] # meta protocol != ip ip test-ip4 input [ meta load protocol => reg 1 ] [ cmp neq reg 1 0x00000008 ] # meta l4proto 22 ip test-ip4 input [ meta load l4proto => reg 1 ] [ cmp eq reg 1 0x00000016 ] # meta l4proto != 233 ip test-ip4 input [ meta load l4proto => reg 1 ] [ cmp neq reg 1 0x000000e9 ] # meta l4proto 33-45 ip test-ip4 input [ meta load l4proto => reg 1 ] [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ cmp gte reg 1 0x00000021 ] [ cmp lte reg 1 0x0000002d ] # meta l4proto != 33-45 ip test-ip4 input [ meta load l4proto => reg 1 ] [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ range neq reg 1 0x00000021 0x0000002d ] # meta l4proto { 33, 55, 67, 88} __set%d test-ip4 3 __set%d test-ip4 0 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end] ip test-ip4 input [ meta load l4proto => reg 1 ] [ lookup reg 1 set __set%d ] # meta l4proto != { 33, 55, 67, 88} __set%d test-ip4 3 __set%d test-ip4 0 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end] ip test-ip4 input [ meta load l4proto => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta l4proto { 33-55} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] ip test-ip4 input [ meta load l4proto => reg 1 ] [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ lookup reg 1 set __set%d ] # meta l4proto != { 33-55} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] ip test-ip4 input [ meta load l4proto => reg 1 ] [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ lookup reg 1 set __set%d 0x1 ] # meta l4proto ipv6-icmp icmpv6 type nd-router-advert ip test-ip4 input [ meta load l4proto => reg 1 ] [ cmp eq reg 1 0x0000003a ] [ payload load 1b @ transport header + 0 => reg 1 ] [ cmp eq reg 1 0x00000086 ] # meta mark 0x4 ip test-ip4 input [ meta load mark => reg 1 ] [ cmp eq reg 1 0x00000004 ] # meta mark 0x32 ip test-ip4 input [ meta load mark => reg 1 ] [ cmp eq reg 1 0x00000032 ] # meta mark and 0x03 == 0x01 ip test-ip4 input [ meta load mark => reg 1 ] [ bitwise reg 1 = (reg=1 & 0x00000003 ) ^ 0x00000000 ] [ cmp eq reg 1 0x00000001 ] # meta mark and 0x03 != 0x01 ip test-ip4 input [ meta load mark => reg 1 ] [ bitwise reg 1 = (reg=1 & 0x00000003 ) ^ 0x00000000 ] [ cmp neq reg 1 0x00000001 ] # meta mark 0x10 ip test-ip4 input [ meta load mark => reg 1 ] [ cmp eq reg 1 0x00000010 ] # meta mark != 0x10 ip test-ip4 input [ meta load mark => reg 1 ] [ cmp neq reg 1 0x00000010 ] # meta mark or 0x03 == 0x01 ip test-ip4 input [ meta load mark => reg 1 ] [ bitwise reg 1 = (reg=1 & 0xfffffffc ) ^ 0x00000003 ] [ cmp eq reg 1 0x00000001 ] # meta mark or 0x03 != 0x01 ip test-ip4 input [ meta load mark => reg 1 ] [ bitwise reg 1 = (reg=1 & 0xfffffffc ) ^ 0x00000003 ] [ cmp neq reg 1 0x00000001 ] # meta mark xor 0x03 == 0x01 ip test-ip4 input [ meta load mark => reg 1 ] [ cmp eq reg 1 0x00000002 ] # meta mark xor 0x03 != 0x01 ip test-ip4 input [ meta load mark => reg 1 ] [ cmp neq reg 1 0x00000002 ] # meta iif "lo" accept ip test-ip4 input [ meta load iif => reg 1 ] [ cmp eq reg 1 0x00000001 ] [ immediate reg 0 accept ] # meta iif != "lo" accept ip test-ip4 input [ meta load iif => reg 1 ] [ cmp neq reg 1 0x00000001 ] [ immediate reg 0 accept ] # meta iifname "dummy0" ip test-ip4 input [ meta load iifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ] # meta iifname != "dummy0" ip test-ip4 input [ meta load iifname => reg 1 ] [ cmp neq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ] # meta iifname {"dummy0", "lo"} __set%d test-ip4 3 __set%d test-ip4 0 element 6d6d7564 00003079 00000000 00000000 : 0 [end] element 00006f6c 00000000 00000000 00000000 : 0 [end] ip test-ip4 input [ meta load iifname => reg 1 ] [ lookup reg 1 set __set%d ] # meta iifname != {"dummy0", "lo"} __set%d test-ip4 3 __set%d test-ip4 0 element 6d6d7564 00003079 00000000 00000000 : 0 [end] element 00006f6c 00000000 00000000 00000000 : 0 [end] ip test-ip4 input [ meta load iifname => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta iifname "dummy*" ip test-ip4 input [ meta load iifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00000079 ] # meta iifname "dummy\*" ip test-ip4 input [ meta load iifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00002a79 0x00000000 0x00000000 ] # meta iiftype {ether, ppp, ipip, ipip6, loopback, sit, ipgre} __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end] ip test-ip4 input [ meta load iiftype => reg 1 ] [ lookup reg 1 set __set%d ] # meta iiftype != {ether, ppp, ipip, ipip6, loopback, sit, ipgre} __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end] ip test-ip4 input [ meta load iiftype => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta iiftype != ether ip test-ip4 input [ meta load iiftype => reg 1 ] [ cmp neq reg 1 0x00000001 ] # meta iiftype ether ip test-ip4 input [ meta load iiftype => reg 1 ] [ cmp eq reg 1 0x00000001 ] # meta iiftype != ppp ip test-ip4 input [ meta load iiftype => reg 1 ] [ cmp neq reg 1 0x00000200 ] # meta iiftype ppp ip test-ip4 input [ meta load iiftype => reg 1 ] [ cmp eq reg 1 0x00000200 ] # 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 ip test-ip4 input [ meta load oif => reg 1 ] [ cmp neq reg 1 0x00000001 ] [ immediate reg 0 accept ] # meta oif {"lo"} accept __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] ip test-ip4 input [ meta load oif => reg 1 ] [ lookup reg 1 set __set%d ] [ immediate reg 0 accept ] # meta oif != {"lo"} accept __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] ip test-ip4 input [ meta load oif => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] # meta oifname "dummy0" ip test-ip4 input [ meta load oifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ] # meta oifname != "dummy0" ip test-ip4 input [ meta load oifname => reg 1 ] [ cmp neq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ] # meta oifname { "dummy0", "lo"} __set%d test-ip4 3 __set%d test-ip4 0 element 6d6d7564 00003079 00000000 00000000 : 0 [end] element 00006f6c 00000000 00000000 00000000 : 0 [end] ip test-ip4 input [ meta load oifname => reg 1 ] [ lookup reg 1 set __set%d ] # meta oifname "dummy*" ip test-ip4 input [ meta load oifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00000079 ] # meta oifname "dummy\*" ip test-ip4 input [ meta load oifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00002a79 0x00000000 0x00000000 ] # meta oiftype {ether, ppp, ipip, ipip6, loopback, sit, ipgre} __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end] ip test-ip4 input [ meta load oiftype => reg 1 ] [ lookup reg 1 set __set%d ] # meta oiftype != {ether, ppp, ipip, ipip6, loopback, sit, ipgre} __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end] ip test-ip4 input [ meta load oiftype => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta oiftype != ether ip test-ip4 input [ meta load oiftype => reg 1 ] [ cmp neq reg 1 0x00000001 ] # meta oiftype ether ip test-ip4 input [ meta load oiftype => reg 1 ] [ cmp eq reg 1 0x00000001 ] # 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] ip test-ip4 input [ meta load skuid => reg 1 ] [ lookup reg 1 set __set%d ] [ immediate reg 0 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] ip test-ip4 input [ meta load skuid => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] # meta skuid "root" ip test-ip4 input [ meta load skuid => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta skuid != "root" ip test-ip4 input [ meta load skuid => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta skuid lt 3000 accept ip test-ip4 input [ meta load skuid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp lt reg 1 0xb80b0000 ] [ immediate reg 0 accept ] # meta skuid gt 3000 accept ip test-ip4 input [ meta load skuid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gt reg 1 0xb80b0000 ] [ immediate reg 0 accept ] # meta skuid eq 3000 accept ip test-ip4 input [ meta load skuid => reg 1 ] [ cmp eq reg 1 0x00000bb8 ] [ immediate reg 0 accept ] # meta skuid 3001-3005 accept ip test-ip4 input [ meta load skuid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gte reg 1 0xb90b0000 ] [ cmp lte reg 1 0xbd0b0000 ] [ immediate reg 0 accept ] # meta skuid != 2001-2005 accept ip test-ip4 input [ meta load skuid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ range neq reg 1 0xd1070000 0xd5070000 ] [ immediate reg 0 accept ] # meta skuid { 2001-2005} accept __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] ip test-ip4 input [ meta load skuid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] [ immediate reg 0 accept ] # meta skuid != { 2001-2005} accept __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] ip test-ip4 input [ meta load skuid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 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] ip test-ip4 input [ meta load skgid => reg 1 ] [ lookup reg 1 set __set%d ] [ immediate reg 0 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] ip test-ip4 input [ meta load skgid => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] # meta skgid "root" ip test-ip4 input [ meta load skgid => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta skgid != "root" ip test-ip4 input [ meta load skgid => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta skgid lt 3000 accept ip test-ip4 input [ meta load skgid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp lt reg 1 0xb80b0000 ] [ immediate reg 0 accept ] # meta skgid gt 3000 accept ip test-ip4 input [ meta load skgid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gt reg 1 0xb80b0000 ] [ immediate reg 0 accept ] # meta skgid eq 3000 accept ip test-ip4 input [ meta load skgid => reg 1 ] [ cmp eq reg 1 0x00000bb8 ] [ immediate reg 0 accept ] # meta skgid 2001-2005 accept ip test-ip4 input [ meta load skgid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gte reg 1 0xd1070000 ] [ cmp lte reg 1 0xd5070000 ] [ immediate reg 0 accept ] # meta skgid != 2001-2005 accept ip test-ip4 input [ meta load skgid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ range neq reg 1 0xd1070000 0xd5070000 ] [ immediate reg 0 accept ] # meta skgid { 2001-2005} accept __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] ip test-ip4 input [ meta load skgid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] [ immediate reg 0 accept ] # meta skgid != { 2001-2005} accept __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] ip test-ip4 input [ meta load skgid => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] # meta mark set 0xffffffc8 xor 0x16 ip test-ip4 input [ immediate reg 1 0xffffffde ] [ meta set mark with reg 1 ] # meta mark set 0x16 and 0x16 ip test-ip4 input [ immediate reg 1 0x00000016 ] [ meta set mark with reg 1 ] # meta mark set 0xffffffe9 or 0x16 ip test-ip4 input [ immediate reg 1 0xffffffff ] [ meta set mark with reg 1 ] # meta mark set 0xffffffde and 0x16 ip test-ip4 input [ immediate reg 1 0x00000016 ] [ meta set mark with reg 1 ] # meta mark set 0xf045ffde or 0x10 ip test-ip4 input [ immediate reg 1 0xf045ffde ] [ meta set mark with reg 1 ] # meta mark set 0xffffffde or 0x16 ip test-ip4 input [ immediate reg 1 0xffffffde ] [ meta set mark with reg 1 ] # meta mark set 0x32 or 0xfffff ip test-ip4 input [ immediate reg 1 0x000fffff ] [ meta set mark with reg 1 ] # meta mark set 0xfffe xor 0x16 ip test-ip4 input [ immediate reg 1 0x0000ffe8 ] [ meta set mark with reg 1 ] # meta iif "lo" ip test-ip4 input [ meta load iif => reg 1 ] [ cmp eq reg 1 0x00000001 ] # meta oif "lo" ip test-ip4 input [ meta load oif => reg 1 ] [ cmp eq reg 1 0x00000001 ] # meta oifname "dummy2" accept ip test-ip4 input [ meta load oifname => reg 1 ] [ cmp eq reg 1 0x6d6d7564 0x00003279 0x00000000 0x00000000 ] [ immediate reg 0 accept ] # meta skuid 3000 ip test-ip4 input [ meta load skuid => reg 1 ] [ cmp eq reg 1 0x00000bb8 ] # meta skgid 3000 ip test-ip4 input [ meta load skgid => reg 1 ] [ cmp eq reg 1 0x00000bb8 ] # meta rtclassid "cosmos" ip test-ip4 input [ meta load rtclassid => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta pkttype broadcast ip test-ip4 input [ meta load pkttype => reg 1 ] [ cmp eq reg 1 0x00000001 ] # meta pkttype host ip test-ip4 input [ meta load pkttype => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta pkttype multicast ip test-ip4 input [ meta load pkttype => reg 1 ] [ cmp eq reg 1 0x00000002 ] # meta pkttype != broadcast ip test-ip4 input [ meta load pkttype => reg 1 ] [ cmp neq reg 1 0x00000001 ] # meta pkttype != host ip test-ip4 input [ meta load pkttype => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta pkttype != multicast ip test-ip4 input [ meta load pkttype => reg 1 ] [ cmp neq reg 1 0x00000002 ] # meta pkttype { broadcast, multicast} accept __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 : 0 [end] element 00000002 : 0 [end] ip test-ip4 input [ meta load pkttype => reg 1 ] [ lookup reg 1 set __set%d ] [ immediate reg 0 accept ] # meta cpu 1 ip test-ip4 input [ meta load cpu => reg 1 ] [ cmp eq reg 1 0x00000001 ] # meta cpu != 1 ip test-ip4 input [ meta load cpu => reg 1 ] [ cmp neq reg 1 0x00000001 ] # meta cpu 1-3 ip test-ip4 input [ meta load cpu => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gte reg 1 0x01000000 ] [ cmp lte reg 1 0x03000000 ] # meta cpu != 1-2 ip test-ip4 input [ meta load cpu => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ range neq reg 1 0x01000000 0x02000000 ] # meta cpu { 2,3} __set%d test-ip4 3 __set%d test-ip4 0 element 00000002 : 0 [end] element 00000003 : 0 [end] ip test-ip4 input [ meta load cpu => reg 1 ] [ lookup reg 1 set __set%d ] # meta cpu != { 2,3} __set%d test-ip4 3 __set%d test-ip4 0 element 00000002 : 0 [end] element 00000003 : 0 [end] ip test-ip4 input [ meta load cpu => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta cpu { 2-3, 5-7} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 02000000 : 0 [end] element 04000000 : 1 [end] element 05000000 : 0 [end] element 08000000 : 1 [end] ip test-ip4 input [ meta load cpu => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta iifgroup 0 ip test-ip4 input [ meta load iifgroup => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta iifgroup != 0 ip test-ip4 input [ meta load iifgroup => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta iifgroup "default" ip test-ip4 input [ meta load iifgroup => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta iifgroup != "default" ip test-ip4 input [ meta load iifgroup => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta iifgroup {"default"} __set%d test-ip4 3 __set%d test-ip4 0 element 00000000 : 0 [end] ip test-ip4 input [ meta load iifgroup => reg 1 ] [ lookup reg 1 set __set%d ] # meta iifgroup != {"default"} __set%d test-ip4 3 __set%d test-ip4 0 element 00000000 : 0 [end] ip test-ip4 input [ meta load iifgroup => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta iifgroup { 11,33} __set%d test-ip4 3 __set%d test-ip4 0 element 0000000b : 0 [end] element 00000021 : 0 [end] ip test-ip4 input [ meta load iifgroup => reg 1 ] [ lookup reg 1 set __set%d ] # meta iifgroup {11-33} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] ip test-ip4 input [ meta load iifgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta iifgroup != { 11,33} __set%d test-ip4 3 __set%d test-ip4 0 element 0000000b : 0 [end] element 00000021 : 0 [end] ip test-ip4 input [ meta load iifgroup => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta iifgroup != {11-33} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] ip test-ip4 input [ meta load iifgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d 0x1 ] # meta oifgroup 0 ip test-ip4 input [ meta load oifgroup => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta oifgroup != 0 ip test-ip4 input [ meta load oifgroup => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta oifgroup "default" ip test-ip4 input [ meta load oifgroup => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta oifgroup != "default" ip test-ip4 input [ meta load oifgroup => reg 1 ] [ cmp neq reg 1 0x00000000 ] # meta oifgroup {"default"} __set%d test-ip4 3 __set%d test-ip4 0 element 00000000 : 0 [end] ip test-ip4 input [ meta load oifgroup => reg 1 ] [ lookup reg 1 set __set%d ] # meta oifgroup != {"default"} __set%d test-ip4 3 __set%d test-ip4 0 element 00000000 : 0 [end] ip test-ip4 input [ meta load oifgroup => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta oifgroup { 11,33} __set%d test-ip4 3 __set%d test-ip4 0 element 0000000b : 0 [end] element 00000021 : 0 [end] ip test-ip4 input [ meta load oifgroup => reg 1 ] [ lookup reg 1 set __set%d ] # meta oifgroup {11-33} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] ip test-ip4 input [ meta load oifgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta oifgroup != { 11,33} __set%d test-ip4 3 __set%d test-ip4 0 element 0000000b : 0 [end] element 00000021 : 0 [end] ip test-ip4 input [ meta load oifgroup => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta oifgroup != {11-33} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] ip test-ip4 input [ meta load oifgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d 0x1 ] # meta cgroup 1048577 ip test-ip4 input [ meta load cgroup => reg 1 ] [ cmp eq reg 1 0x00100001 ] # meta cgroup != 1048577 ip test-ip4 input [ meta load cgroup => reg 1 ] [ cmp neq reg 1 0x00100001 ] # meta cgroup { 1048577, 1048578 } __set%d test-ip4 3 __set%d test-ip4 0 element 00100001 : 0 [end] element 00100002 : 0 [end] ip test-ip4 input [ meta load cgroup => reg 1 ] [ lookup reg 1 set __set%d ] # meta cgroup != { 1048577, 1048578} __set%d test-ip4 3 __set%d test-ip4 0 element 00100001 : 0 [end] element 00100002 : 0 [end] ip test-ip4 input [ meta load cgroup => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta cgroup 1048577-1048578 ip test-ip4 input [ meta load cgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gte reg 1 0x01001000 ] [ cmp lte reg 1 0x02001000 ] # meta cgroup != 1048577-1048578 ip test-ip4 input [ meta load cgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ range neq reg 1 0x01001000 0x02001000 ] # meta cgroup {1048577-1048578} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 01001000 : 0 [end] element 03001000 : 1 [end] ip test-ip4 input [ meta load cgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] # meta cgroup != { 1048577-1048578} __set%d test-ip4 7 __set%d test-ip4 0 element 00000000 : 1 [end] element 01001000 : 0 [end] element 03001000 : 1 [end] ip test-ip4 input [ meta load cgroup => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d 0x1 ] # meta iif . meta oif { "lo" . "lo" } __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 00000001 : 0 [end] ip test-ip4 output [ meta load iif => reg 1 ] [ meta load oif => reg 9 ] [ lookup reg 1 set __set%d ] # meta iif . meta oif . meta mark { "lo" . "lo" . 0x0000000a } __set%d test-ip4 3 __set%d test-ip4 0 element 00000001 00000001 0000000a : 0 [end] ip test-ip4 output [ meta load iif => reg 1 ] [ meta load oif => reg 9 ] [ meta load mark => reg 10 ] [ lookup reg 1 set __set%d ] # meta iif . meta oif vmap { "lo" . "lo" : drop } __map%d test-ip4 b __map%d test-ip4 0 element 00000001 00000001 : 0 [end] ip test-ip4 output [ meta load iif => reg 1 ] [ meta load oif => reg 9 ] [ lookup reg 1 set __map%d dreg 0 ] # meta random eq 1 ip test-ip4 input [ meta load prandom => reg 1 ] [ cmp eq reg 1 0x01000000 ] # meta random gt 1000000 ip test-ip4 input [ meta load prandom => reg 1 ] [ cmp gt reg 1 0x40420f00 ] # meta priority root ip test-ip4 input [ meta load priority => reg 1 ] [ cmp eq reg 1 0xffffffff ] # meta priority none netdev test-netdev ingress [ meta load priority => reg 1 ] [ cmp eq reg 1 0x00000000 ] # meta priority 1:1234 ip test-ip4 input [ meta load priority => reg 1 ] [ cmp eq reg 1 0x00011234 ] # meta priority bcad:dadc ip test-ip4 input [ meta load priority => reg 1 ] [ cmp eq reg 1 0xbcaddadc ] # meta priority aabb:0 ip test-ip4 input [ meta load priority => reg 1 ] [ cmp eq reg 1 0xaabb0000 ] # meta priority != bcad:dadc ip test-ip4 input [ meta load priority => reg 1 ] [ cmp neq reg 1 0xbcaddadc ] # meta priority != aabb:0 ip test-ip4 input [ meta load priority => reg 1 ] [ cmp neq reg 1 0xaabb0000 ] # meta priority bcad:dada-bcad:dadc ip test-ip4 input [ meta load priority => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ cmp gte reg 1 0xdadaadbc ] [ cmp lte reg 1 0xdcdaadbc ] # meta priority != bcad:dada-bcad:dadc ip test-ip4 input [ meta load priority => reg 1 ] [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ range neq reg 1 0xdadaadbc 0xdcdaadbc ] # meta priority {bcad:dada, bcad:dadc, aaaa:bbbb} __set%d test-ip4 3 __set%d test-ip4 0 element bcaddada : 0 [end] element bcaddadc : 0 [end] element aaaabbbb : 0 [end] ip test-ip4 input [ meta load priority => reg 1 ] [ lookup reg 1 set __set%d ] # meta priority set cafe:beef ip test-ip4 input [ immediate reg 1 0xcafebeef ] [ meta set priority with reg 1 ] # meta priority != {bcad:dada, bcad:dadc, aaaa:bbbb} __set%d test-ip4 3 __set%d test-ip4 0 element bcaddada : 0 [end] element bcaddadc : 0 [end] element aaaabbbb : 0 [end] ip test-ip4 input [ meta load priority => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] # meta priority 0x87654321 ip test-ip4 input [ meta load priority => reg 1 ] [ cmp eq reg 1 0x87654321 ] # meta priority 2271560481 ip test-ip4 input [ meta load priority => reg 1 ] [ cmp eq reg 1 0x87654321 ]