]> git.proxmox.com Git - ovs.git/blame - tests/ovs-ofctl.at
tests: Add more tests for VLAN match encoding and decoding.
[ovs.git] / tests / ovs-ofctl.at
CommitLineData
0e581146
BP
1AT_BANNER([ovs-ofctl])
2
27527aa0
BP
3AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
4AT_DATA([flows.txt], [[
5# comment
6tcp,tp_src=123,actions=flood
7in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
8udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
9tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
10udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
11cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
12actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
13]])
14
15AT_CHECK([ovs-ofctl parse-flows flows.txt
16], [0], [stdout])
17AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
18[[usable protocols: any
19chosen protocol: OpenFlow10-table_id
20OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
21OFPT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
22OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
23OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
24OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
25OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
26OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
27]])
28AT_CLEANUP
29
30AT_SETUP([ovs-ofctl parse-flows (NXM)])
53ddd40a 31AT_DATA([flows.txt], [[
0e581146
BP
32# comment
33tcp,tp_src=123,actions=flood
34in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
0e581146 35udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
eedc0097
JP
36tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
37udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
0e581146 38cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
96fc46e8 39actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
73f33563 40tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
b9298d3f 41actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
53ddd40a 42actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, NXM_NX_REG0[0..12])
6c1491fb 43table=1,actions=drop
8368c090 44tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
7525e578 45metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
daff3353
EJ
46actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
47actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
48actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
49actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
a368bb53
EJ
50actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
51actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
db968317 52actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
a368bb53
EJ
53actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
54actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
29901626 55actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
a993007b
BP
56send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
57check_overlap,actions=output:1,exit,output:2
0e553d9c 58actions=fin_timeout(idle_timeout=5,hard_timeout=15)
a7349929 59actions=controller(max_len=123,reason=invalid_ttl,id=555)
53ddd40a 60]])
29901626 61
53ddd40a 62AT_CHECK([ovs-ofctl parse-flows flows.txt
f1f41fb6 63], [0], [stdout])
27527aa0
BP
64AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
65[[usable protocols: NXM+table_id
66chosen protocol: NXM+table_id
67NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
68NXT_FLOW_MOD: ADD table:255 in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
69NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
70NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
71NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
72NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
73NXT_FLOW_MOD: ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
74NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
75NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
76NXT_FLOW_MOD: ADD table:255 actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multipath(symmetric_l4,1024,iter_hash,5000,5050,NXM_NX_REG0[0..12])
e896c2d4
BP
77NXT_FLOW_MOD: ADD table:1 actions=drop
78NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
7525e578 79NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
daff3353
EJ
80NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
81NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
82NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
83NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
a368bb53
EJ
84NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
85NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
db968317 86NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
a368bb53
EJ
87NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
88NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
29901626 89NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
a993007b
BP
90NXT_FLOW_MOD: ADD table:255 send_flow_rem actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
91NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
0e553d9c 92NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
a7349929 93NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
53ddd40a 94]])
88ca35ee
BP
95AT_CLEANUP
96
97AT_SETUP([ovs-ofctl -F nxm parse-flows])
98AT_DATA([flows.txt], [
99# comment
100tcp,tp_src=123,actions=flood
101in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
bad68a99 102arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
fa8223b7 103ipv6,ipv6_label=0x12345 actions=2
d31f1109
JP
104ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
105ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
106ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
107tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
108udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
109in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
88ca35ee
BP
110udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
111tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
112udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
685a51a5 113icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
47284b1f 114icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
685a51a5
JP
115icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
116icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
47284b1f 117icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
88ca35ee
BP
118cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
119actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
120tun_id=0x1234,cookie=0x5678,actions=flood
121actions=drop
8368c090 122tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
cb8ca532
BP
123dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
124dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
125dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
126dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
88ca35ee
BP
127])
128AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
129AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
27527aa0
BP
130usable protocols: NXM
131chosen protocol: NXM-table_id
88ca35ee
BP
132NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
133NXT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
bad68a99 134NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
fa8223b7 135NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
d31f1109
JP
136NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
137NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
138NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
139NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
140NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
141NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
88ca35ee
BP
142NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
143NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
144NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
685a51a5 145NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
47284b1f 146NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
685a51a5
JP
147NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
148NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
47284b1f 149NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
88ca35ee
BP
150NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
151NXT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
152NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
153NXT_FLOW_MOD: ADD actions=drop
8368c090 154NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
cb8ca532
BP
155NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
156NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
157NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
158NXT_FLOW_MOD: ADD actions=drop
0e581146
BP
159])
160AT_CLEANUP
09246b99 161
4f564f8d 162AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
f393f81e 163AT_DATA([flows.txt], [[
4f564f8d
BP
164# comment
165tcp,tp_src=123,actions=flood
166in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
bad68a99 167arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
fa8223b7 168ipv6,ipv6_label=0x12345 actions=2
d31f1109
JP
169ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
170ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
171ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
172tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
173udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
174in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
4f564f8d
BP
175udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
176tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
177udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
685a51a5
JP
178icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
179icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
180icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
4f564f8d
BP
181cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
182actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
183tun_id=0x1234,cookie=0x5678,actions=flood
184actions=drop
f393f81e 185reg0=123,actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:55->NXM_NX_REG2[0..31],move:NXM_NX_REG0[0..31]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
b5e5143b 186actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
eb3e79c0 187actions=autopath(5,NXM_NX_REG0[])
33d8c6b4 188vlan_tci=0x1123/0x1fff,actions=drop
f393f81e 189]])
4f564f8d 190AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout])
f393f81e 191AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
27527aa0
BP
192[[usable protocols: NXM
193chosen protocol: NXM-table_id
194NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
4f564f8d 195NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
bad68a99 196NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
fa8223b7 197NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
d31f1109
JP
198NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
199NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
200NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
201NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=drop
202NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=drop
203NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(0003), NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(86) actions=drop
4f564f8d
BP
204NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_VLAN_TCI_W(f000/f000), NXM_OF_IP_PROTO(11) idle:5 actions=strip_vlan,output:0
205NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=set_queue:37,output:1
206NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=pop_queue,output:1
685a51a5
JP
207NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571) actions=drop
208NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_SLL(000ae4256bb0) actions=drop
209NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571), NXM_NX_ND_TLL(000ae4256bb1) actions=drop
4f564f8d
BP
210NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
211NXT_FLOW_MOD: ADD <any> actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
212NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
213NXT_FLOW_MOD: ADD <any> actions=drop
d90611f1 214NXT_FLOW_MOD: ADD NXM_NX_REG0(0000007b) actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:0x37->NXM_NX_REG2[],move:NXM_NX_REG0[]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
b5e5143b 215NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
eb3e79c0 216NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
33d8c6b4 217NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
f393f81e 218]])
4f564f8d
BP
219AT_CLEANUP
220
09246b99
BP
221AT_SETUP([ovs-ofctl parse-nx-match])
222AT_KEYWORDS([nx-match])
223AT_DATA([nx-match.txt], [dnl
224<any>
225
226# in port
227NXM_OF_IN_PORT(0000)
228NXM_OF_IN_PORT(fffe)
229
230# eth dst
231NXM_OF_ETH_DST(0002e30f80a4)
1e37a2d7
BP
232NXM_OF_ETH_DST_W(010000000000/010000000000)
233NXM_OF_ETH_DST_W(000000000000/010000000000)
06da29ee 234NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1e37a2d7 235NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
fbcbc814 236NXM_OF_ETH_DST_W(60175619848f/000000000000)
1e37a2d7 237NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
73c0ce34 238NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
09246b99
BP
239
240# eth src
241NXM_OF_ETH_SRC(020898456ddb)
73c0ce34
JS
242NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
243NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
fbcbc814 244NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
09246b99
BP
245
246# eth type
247NXM_OF_ETH_TYPE(0800)
248NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
249
250# vlan tci
251NXM_OF_VLAN_TCI(f009)
252NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
253NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
254NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
66642cb4 255NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
09246b99 256NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
fbcbc814
SH
257NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
258NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
09246b99 259NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
66642cb4 260NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
09246b99
BP
261
262# IP TOS
263NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
530180fd 264NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
09246b99
BP
265NXM_OF_IP_TOS(f0)
266
530180fd
JP
267# IP ECN
268NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
269NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
270NXM_NX_IP_ECN(03)
271
09246b99
BP
272# IP protocol
273NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
274NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
275NXM_OF_IP_PROTO(05)
276
a61680c6
JP
277# IP TTL
278NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
279NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
280NXM_NX_IP_TTL(80)
281
09246b99
BP
282# IP source
283NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
284NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
c08201d6 285NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
fbcbc814
SH
286NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
287NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
09246b99
BP
288NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
289NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
290
291# IP destination
292NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
06da29ee 293NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
c08201d6 294NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
fbcbc814
SH
295NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
296NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
09246b99
BP
297NXM_OF_IP_DST(ac100014)
298NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
299
300# TCP source port
301NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
73f33563 302NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
fbcbc814
SH
303NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
304NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
09246b99
BP
305NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
306
307# TCP destination port
308NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
73f33563 309NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
fbcbc814
SH
310NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
311NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
09246b99
BP
312NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
313
314# UDP source port
315NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
73f33563 316NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
fbcbc814
SH
317NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
318NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
09246b99
BP
319NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
320
321# UDP destination port
322NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
73f33563 323NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
fbcbc814
SH
324NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
325NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
09246b99
BP
326NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
327
328# ICMP type
329NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
330NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
331
332# ICMP code
333NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
334NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
335NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
336NXM_OF_ICMP_CODE(00)
337
338# ARP opcode
339NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
340NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
341NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
342NXM_OF_ARP_OP(0001)
343NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
344
bad68a99 345# ARP source protocol address
09246b99 346NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
06da29ee 347NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
c08201d6 348NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
fbcbc814
SH
349NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
350NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
09246b99 351NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
06da29ee 352NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
09246b99 353
bad68a99 354# ARP destination protocol address
09246b99 355NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
06da29ee 356NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
c08201d6 357NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
fbcbc814
SH
358NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
359NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
09246b99
BP
360NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
361NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
362
bad68a99
JP
363# ARP source hardware address
364NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
365NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
366NXM_NX_ARP_SHA(0002e30f80a4)
367
368# ARP destination hardware address
369NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
370NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
371NXM_NX_ARP_THA(0002e30f80a4)
372
d31f1109
JP
373# IPv6 source
374NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
375NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
376NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
ff0b06ee 377NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
fbcbc814
SH
378NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
379NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
d31f1109
JP
380NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
381
382# IPv6 destination
383NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
384NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
ff0b06ee 385NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
fbcbc814
SH
386NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
387NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
d31f1109
JP
388NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
389
626186c3
SH
390# IPv6 Flow Label
391NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
392NXM_NX_IPV6_LABEL(0000000f)
393NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
394
ff0b06ee
BP
395# ND target address
396NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
397NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
398NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
fbcbc814
SH
399NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
400NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
ff0b06ee
BP
401NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
402
685a51a5
JP
403# ND source hardware address
404NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
405NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
406NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
407NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
408
409# ND destination hardware address
410NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
411NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
412NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
413NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
414
7257b535
BP
415# IPv4 fragments.
416NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
417NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
418NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
419NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
420NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
421NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
422NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
423NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
424NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
425NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
fbcbc814
SH
426NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
427NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
7257b535
BP
428NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
429
430# IPv6 fragments.
431NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
432NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
433NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
434NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
435NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
436NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
437NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
438NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
439NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
440NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
fbcbc814
SH
441NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
442NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
7257b535
BP
443NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
444
e729e793
JP
445# Flow cookie.
446NXM_NX_COOKIE(00000000abcdef01)
447NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
fbcbc814
SH
448NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
449NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
e729e793 450
09246b99
BP
451# Tunnel ID.
452NXM_NX_TUN_ID(00000000abcdef01)
8368c090 453NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
fbcbc814
SH
454NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
455NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
b6c9e612
BP
456
457# Register 0.
458NXM_NX_REG0(acebdf56)
459NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
fbcbc814
SH
460NXM_NX_REG0_W(a0e0d050/ffffffff)
461NXM_NX_REG0_W(a0e0d050/00000000)
558d80cb
BP
462
463# Invalid field number.
46401020304(1111/2222)
465
466# Unimplemented registers.
467#
468# This test assumes that at least two registers, but fewer than 16,
469# registers are implemented.
47000010004(12345678)
47100010108(12345678/12345678)
47200011e04(12345678)
47300011f08(12345678/12345678)
09246b99 474])
102ce766 475AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
09246b99
BP
476<any>
477
478# in port
abe529af 479NXM_OF_IN_PORT(0000)
09246b99
BP
480NXM_OF_IN_PORT(fffe)
481
482# eth dst
483NXM_OF_ETH_DST(0002e30f80a4)
1e37a2d7
BP
484NXM_OF_ETH_DST_W(010000000000/010000000000)
485NXM_OF_ETH_DST_W(000000000000/010000000000)
06da29ee 486NXM_OF_ETH_DST_W(010000000000/010000000000)
1e37a2d7 487NXM_OF_ETH_DST(0002e30f80a4)
fbcbc814 488<any>
1e37a2d7 489NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
73c0ce34 490NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
09246b99
BP
491
492# eth src
493NXM_OF_ETH_SRC(020898456ddb)
73c0ce34
JS
494NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
495NXM_OF_ETH_SRC(020898456ddb)
fbcbc814 496<any>
09246b99
BP
497
498# eth type
499NXM_OF_ETH_TYPE(0800)
500NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
501
502# vlan tci
503NXM_OF_VLAN_TCI(f009)
2e0525bc 504nx_pull_match() returned error OFPBMC_DUP_FIELD
09246b99
BP
505NXM_OF_VLAN_TCI(0000)
506NXM_OF_VLAN_TCI(3123)
66642cb4 507NXM_OF_VLAN_TCI(0123)
09246b99 508NXM_OF_VLAN_TCI_W(1123/1fff)
fbcbc814
SH
509NXM_OF_VLAN_TCI(1123)
510<any>
09246b99 511NXM_OF_VLAN_TCI_W(f000/f000)
66642cb4 512NXM_OF_VLAN_TCI_W(0000/e000)
09246b99
BP
513
514# IP TOS
515NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
2e0525bc
SH
516nx_pull_match() returned error OFPBMC_BAD_VALUE
517nx_pull_match() returned error OFPBMC_BAD_PREREQ
530180fd
JP
518
519# IP ECN
520NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
2e0525bc
SH
521nx_pull_match() returned error OFPBMC_BAD_VALUE
522nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
523
524# IP protocol
525NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
526NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
2e0525bc 527nx_pull_match() returned error OFPBMC_BAD_PREREQ
a61680c6
JP
528
529# IP TTL
530NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
531NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
2e0525bc 532nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
533
534# IP source
535NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
536NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
c08201d6 537NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
fbcbc814
SH
538NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
539NXM_OF_ETH_TYPE(0800)
2e0525bc
SH
540nx_pull_match() returned error OFPBMC_BAD_PREREQ
541nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
542
543# IP destination
544NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
545NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
c08201d6 546NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
fbcbc814
SH
547NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
548NXM_OF_ETH_TYPE(0800)
2e0525bc
SH
549nx_pull_match() returned error OFPBMC_BAD_PREREQ
550nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
551
552# TCP source port
553NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
73f33563 554NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
fbcbc814
SH
555NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
556NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
2e0525bc 557nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
558
559# TCP destination port
560NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
73f33563 561NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
fbcbc814
SH
562NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
563NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
2e0525bc 564nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
565
566# UDP source port
567NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
73f33563 568NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
fbcbc814
SH
569NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
570NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
2e0525bc 571nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
572
573# UDP destination port
574NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
73f33563 575NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
fbcbc814
SH
576NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
577NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
2e0525bc 578nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
579
580# ICMP type
581NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
2e0525bc 582nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
583
584# ICMP code
585NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
2e0525bc
SH
586nx_pull_match() returned error OFPBMC_BAD_PREREQ
587nx_pull_match() returned error OFPBMC_BAD_PREREQ
588nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
589
590# ARP opcode
591NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
2e0525bc
SH
592nx_pull_match() returned error OFPBMC_BAD_VALUE
593nx_pull_match() returned error OFPBMC_BAD_PREREQ
594nx_pull_match() returned error OFPBMC_BAD_PREREQ
595nx_pull_match() returned error OFPBMC_DUP_FIELD
09246b99 596
bad68a99 597# ARP source protocol address
09246b99
BP
598NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
599NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
c08201d6 600NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
fbcbc814
SH
601NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
602NXM_OF_ETH_TYPE(0806)
2e0525bc
SH
603nx_pull_match() returned error OFPBMC_BAD_PREREQ
604nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99 605
bad68a99 606# ARP destination protocol address
09246b99
BP
607NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
608NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
c08201d6 609NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
fbcbc814
SH
610NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
611NXM_OF_ETH_TYPE(0806)
2e0525bc
SH
612nx_pull_match() returned error OFPBMC_BAD_PREREQ
613nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99 614
bad68a99
JP
615# ARP source hardware address
616NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
2e0525bc
SH
617nx_pull_match() returned error OFPBMC_BAD_PREREQ
618nx_pull_match() returned error OFPBMC_BAD_PREREQ
bad68a99
JP
619
620# ARP destination hardware address
621NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
2e0525bc
SH
622nx_pull_match() returned error OFPBMC_BAD_PREREQ
623nx_pull_match() returned error OFPBMC_BAD_PREREQ
bad68a99 624
d31f1109
JP
625# IPv6 source
626NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
2e0525bc 627nx_pull_match() returned error OFPBMC_BAD_PREREQ
d31f1109 628NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
ff0b06ee 629NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
fbcbc814
SH
630NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
631NXM_OF_ETH_TYPE(86dd)
2e0525bc 632nx_pull_match() returned error OFPBMC_BAD_PREREQ
d31f1109
JP
633
634# IPv6 destination
635NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
2e0525bc 636nx_pull_match() returned error OFPBMC_BAD_PREREQ
ff0b06ee 637NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
fbcbc814
SH
638NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
639NXM_OF_ETH_TYPE(86dd)
2e0525bc 640nx_pull_match() returned error OFPBMC_BAD_PREREQ
d31f1109 641
626186c3
SH
642# IPv6 Flow Label
643nx_pull_match() returned error OFPBMC_BAD_VALUE
644nx_pull_match() returned error OFPBMC_BAD_PREREQ
645NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
646
ff0b06ee
BP
647# ND target address
648NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
649NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
650NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
fbcbc814
SH
651NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
652NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
ff0b06ee
BP
653NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
654
685a51a5
JP
655# ND source hardware address
656NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
2e0525bc
SH
657nx_pull_match() returned error OFPBMC_BAD_PREREQ
658nx_pull_match() returned error OFPBMC_BAD_PREREQ
659nx_pull_match() returned error OFPBMC_BAD_PREREQ
685a51a5
JP
660
661# ND destination hardware address
662NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
2e0525bc
SH
663nx_pull_match() returned error OFPBMC_BAD_PREREQ
664nx_pull_match() returned error OFPBMC_BAD_PREREQ
665nx_pull_match() returned error OFPBMC_BAD_PREREQ
685a51a5 666
7257b535
BP
667# IPv4 fragments.
668NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
669NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
670NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
671NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
672NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
673NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
674NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
675NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
676NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
677NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
fbcbc814
SH
678NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
679NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
2e0525bc 680nx_pull_match() returned error OFPBMC_BAD_VALUE
7257b535
BP
681
682# IPv6 fragments.
683NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
684NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
685NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
686NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
687NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
688NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
689NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
690NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
691NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
692NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
fbcbc814
SH
693NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
694NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
2e0525bc 695nx_pull_match() returned error OFPBMC_BAD_VALUE
7257b535 696
e729e793
JP
697# Flow cookie.
698NXM_NX_COOKIE(00000000abcdef01)
699NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
fbcbc814
SH
700NXM_NX_COOKIE(84200000abcdef01)
701<any>
e729e793 702
09246b99
BP
703# Tunnel ID.
704NXM_NX_TUN_ID(00000000abcdef01)
8368c090 705NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
fbcbc814
SH
706NXM_NX_TUN_ID(84200000abcdef01)
707<any>
b6c9e612
BP
708
709# Register 0.
710NXM_NX_REG0(acebdf56)
711NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
fbcbc814
SH
712NXM_NX_REG0(a0e0d050)
713<any>
558d80cb
BP
714
715# Invalid field number.
2e0525bc 716nx_pull_match() returned error OFPBMC_BAD_FIELD
558d80cb
BP
717
718# Unimplemented registers.
719#
720# This test assumes that at least two registers, but fewer than 16,
721# registers are implemented.
722NXM_NX_REG0(12345678)
723NXM_NX_REG0_W(12345678/12345678)
2e0525bc
SH
724nx_pull_match() returned error OFPBMC_BAD_FIELD
725nx_pull_match() returned error OFPBMC_BAD_FIELD
09246b99
BP
726])
727AT_CLEANUP
0fbc9f11 728
96628ae8
BP
729AT_SETUP([ovs-ofctl parse-ofp10-match])
730AT_KEYWORDS([OF1.0])
731AT_DATA([test-data], [dnl
732# in_port=65534
733003820fe fffe 000000000000 000000000000 0000 00 00 0000 00 00 0000 dnl
73400000000 00000000 0000 0000
735
736# dl_src=00:01:02:03:04:05
737003820fb 0000 000102030405 000000000000 0000 00 00 0000 00 00 0000 dnl
73800000000 00000000 0000 0000
739
740# dl_dst=10:20:30:40:50:60
741003820f7 0000 000000000000 102030405060 0000 00 00 0000 00 00 0000 dnl
74200000000 00000000 0000 0000
743
744# dl_vlan=291
745003820fd 0000 000000000000 000000000000 0123 00 00 0000 00 00 0000 dnl
74600000000 00000000 0000 0000
747
748# dl_vlan_pcp=5
749002820ff 0000 000000000000 000000000000 0000 05 00 0000 00 00 0000 dnl
75000000000 00000000 0000 0000
751
752# dl_vlan=291,dl_vlan_pcp=4
753002820fd 0000 000000000000 000000000000 0123 04 00 0000 00 00 0000 dnl
75400000000 00000000 0000 0000
755
756# vlan_tci=0x0000
757003820fd 0000 000000000000 000000000000 ffff 00 00 0000 00 00 0000 dnl
75800000000 00000000 0000 0000
759
760dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
761dnl OVS ignores it and drops it on output.
762# vlan_tci=0x0000
763# 1: 28 -> 38
764# 20: 05 -> 00
765002820fd 0000 000000000000 000000000000 ffff 05 00 0000 00 00 0000 dnl
76600000000 00000000 0000 0000
767
768dnl Invalid VID and PCP discards out-of-range bits:
769# dl_vlan=256,dl_vlan_pcp=7
770# 18: f1 -> 01
771# 20: ff -> 07
772002820fd 0000 000000000000 000000000000 f100 ff 00 0000 00 00 0000 dnl
77300000000 00000000 0000 0000
774
775# dl_type=0x1234
776003820ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
77700000000 00000000 0000 0000
778
779# ip,nw_proto=5
780003820cf 0000 000000000000 000000000000 0000 00 00 0800 00 05 0000 dnl
78100000000 00000000 0000 0000
782
783dnl Ignore nw_proto if not IP or ARP:
784# dl_type=0x1234,nw_proto=5
785# normal: 3: cf -> ef
786# normal: 25: 05 -> 00
787& ofp_util|INFO|normalization changed ofp_match, details:
788& ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
789& ofp_util|INFO|post: dl_type=0x1234
790003820cf 0000 000000000000 000000000000 0000 00 00 1234 00 05 0000 dnl
79100000000 00000000 0000 0000
792
793# ip,nw_tos=252
794001820ef 0000 000000000000 000000000000 0000 00 00 0800 fc 00 0000 dnl
79500000000 00000000 0000 0000
796
797dnl Ignore nw_tos if not IP:
798# arp,nw_tos=4
799# 24: 05 -> 04
800# normal: 1: 18 -> 38
801# normal: 24: 04 -> 00
802& ofp_util|INFO|normalization changed ofp_match, details:
803& ofp_util|INFO| pre: arp,nw_tos=4
804& ofp_util|INFO|post: arp
805001820ef 0000 000000000000 000000000000 0000 00 00 0806 05 00 0000 dnl
80600000000 00000000 0000 0000
807
808dnl Low 2 bits of invalid TOS are forced to 0:
809# ip,nw_tos=48
810# 24: 31 -> 30
811001820ef 0000 000000000000 000000000000 0000 00 00 0800 31 00 0000 dnl
81200000000 00000000 0000 0000
813
814# arp,arp_op=2
815003820cf 0000 000000000000 000000000000 0000 00 00 0806 00 02 0000 dnl
81600000000 00000000 0000 0000
817
818# ip,nw_src=192.168.128.85
819003800ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
820c0a88055 00000000 0000 0000
821
822# ip,nw_src=192.168.128.0/24
823# 31: 55 -> 00
824003808ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
825c0a88055 00000000 0000 0000
826
827# ip,nw_dst=192.168.128.85
828003020ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
82900000000 c0a88055 0000 0000
830
831# ip,nw_dst=192.168.128.0/24
832# 35: 55 -> 00
833003220ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
83400000000 c0a88055 0000 0000
835
836# arp,nw_src=192.168.128.85
837003800ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
838c0a88055 00000000 0000 0000
839
840# arp,nw_src=192.168.128.0/24
841# 31: 55 -> 00
842003808ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
843c0a88055 00000000 0000 0000
844
845# arp,nw_dst=192.168.128.85
846003020ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
84700000000 c0a88055 0000 0000
848
849# arp,nw_dst=192.168.128.0/24
850# 35: 55 -> 00
851003220ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
85200000000 c0a88055 0000 0000
853
854dnl Ignore nw_src if not IP or ARP:
855# dl_type=0x1234,nw_src=192.168.128.0/24
856# 31: 55 -> 00
857# normal: 2: 08 -> 20
858# normal: 28: c0 -> 00
859# normal: 29: a8 -> 00
860# normal: 30: 80 -> 00
861& ofp_util|INFO|normalization changed ofp_match, details:
862& ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
863& ofp_util|INFO|post: dl_type=0x1234
864003808ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
865c0a88055 00000000 0000 0000
866
867dnl Ignore nw_dst if not IP or ARP:
868# dl_type=0x1234,nw_dst=192.168.128.0/24
869# 35: 55 -> 00
870# normal: 1: 32 -> 38
871# normal: 32: c0 -> 00
872# normal: 33: a8 -> 00
873# normal: 34: 80 -> 00
874& ofp_util|INFO|normalization changed ofp_match, details:
875& ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
876& ofp_util|INFO|post: dl_type=0x1234
877003220ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
87800000000 c0a88055 0000 0000
879
880# tcp,tp_src=443
8810038208f 0000 000000000000 000000000000 0000 00 00 0800 00 06 0000 dnl
88200000000 00000000 01bb 0000
883
884# tcp,tp_dst=443
8850038204f 0000 000000000000 000000000000 0000 00 00 0800 00 06 0000 dnl
88600000000 00000000 0000 01bb
887
888# udp,tp_src=443
8890038208f 0000 000000000000 000000000000 0000 00 00 0800 00 11 0000 dnl
89000000000 00000000 01bb 0000
891
892# udp,tp_dst=443
8930038204f 0000 000000000000 000000000000 0000 00 00 0800 00 11 0000 dnl
89400000000 00000000 0000 01bb
895
896# icmp,icmp_type=5
8970038208f 0000 000000000000 000000000000 0000 00 00 0800 00 01 0000 dnl
89800000000 00000000 0005 0000
899
900# icmp,icmp_code=8
9010038204f 0000 000000000000 000000000000 0000 00 00 0800 00 01 0000 dnl
90200000000 00000000 0000 0008
903
904dnl Ignore tp_src if not TCP or UDP:
905# ip,nw_proto=21,tp_src=443
906# normal: 3: 8f -> cf
907# normal: 36: 01 -> 00
908# normal: 37: bb -> 00
909& ofp_util|INFO|normalization changed ofp_match, details:
910& ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
911& ofp_util|INFO|post: ip,nw_proto=21
9120038208f 0000 000000000000 000000000000 0000 00 00 0800 00 15 0000 dnl
91300000000 00000000 01bb 0000
914
915dnl Ignore tp_dst if not TCP or UDP:
916# ip,nw_proto=21,tp_dst=443
917# normal: 3: 4f -> cf
918# normal: 38: 01 -> 00
919# normal: 39: bb -> 00
920dnl The normalization details are suppressed here due to rate-limiting.
9210038204f 0000 000000000000 000000000000 0000 00 00 0800 00 15 0000 dnl
92200000000 00000000 0000 01bb
923
924])
925sed '/^[[#&]]/d' < test-data > input.txt
926sed -n 's/^# //p; /^$/p' < test-data > expout
927sed -n 's/^& //p' < test-data > experr
928AT_CAPTURE_FILE([input.txt])
929AT_CAPTURE_FILE([expout])
930AT_CAPTURE_FILE([experr])
931AT_CHECK(
932 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
933 [0], [expout], [experr])
934AT_CLEANUP
935
410698cf
BP
936AT_SETUP([ovs-ofctl parse-ofp11-match])
937AT_KEYWORDS([OF1.1])
938AT_DATA([test-data], [dnl
939# in_port=65534
9400000 0058 fffffffe 000003fe dnl
941000000000000ffffffffffff 000000000000ffffffffffff dnl
9420000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
94300000000 00 000000 0000000000000000ffffffffffffffff
944
945# bad ofp11_match: OFPBMC_BAD_VALUE
946& ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
9470000 0058 12345678 000003fe dnl
948000000000000ffffffffffff 000000000000ffffffffffff dnl
9490000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
95000000000 00 000000 0000000000000000ffffffffffffffff
951
952# dl_src=00:01:02:03:04:05
9530000 0058 00000000 000003ff dnl
954000102030405000000000000 000000000000ffffffffffff dnl
9550000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
95600000000 00 000000 0000000000000000ffffffffffffffff
957
958# dl_src=55:55:55:55:55:55/55:55:55:55:55:55
9590000 0058 00000000 000003ff dnl
960555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
9610000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
96200000000 00 000000 0000000000000000ffffffffffffffff
963
964# dl_dst=00:01:02:03:04:05
9650000 0058 00000000 000003ff dnl
966000000000000ffffffffffff 000102030405000000000000 dnl
9670000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
96800000000 00 000000 0000000000000000ffffffffffffffff
969
970# dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
9710000 0058 00000000 000003ff dnl
972000000000000ffffffffffff 010000000000feffffffffff dnl
9730000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
97400000000 00 000000 0000000000000000ffffffffffffffff
975
976# dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
9770000 0058 00000000 000003ff dnl
978000000000000ffffffffffff 000102030405010000000000 dnl
9790000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
98000000000 00 000000 0000000000000000ffffffffffffffff
981
982# dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
9830000 0058 00000000 000003ff dnl
984000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
9850000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
98600000000 00 000000 0000000000000000ffffffffffffffff
987
988dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
989dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
990# in_port=1
991# 11: fa -> fe
992# 38: 03 -> 00
9930000 0058 00000001 000003fa dnl
994000000000000ffffffffffff 000000000000ffffffffffff dnl
9950000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
99600000000 00 000000 0000000000000000ffffffffffffffff
997
998# dl_vlan=291
9990000 0058 00000000 000003fd dnl
1000000000000000ffffffffffff 000000000000ffffffffffff dnl
10010123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
100200000000 00 000000 0000000000000000ffffffffffffffff
1003
1004dnl OFPVID_NONE:
1005# vlan_tci=0x0000
10060000 0058 00000000 000003fd dnl
1007000000000000ffffffffffff 000000000000ffffffffffff dnl
1008ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
100900000000 00 000000 0000000000000000ffffffffffffffff
1010
1011dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1012dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1013# vlan_tci=0x0000
1014# 11: f9 -> fd
1015# 38: 05 -> 00
10160000 0058 00000000 000003f9 dnl
1017000000000000ffffffffffff 000000000000ffffffffffff dnl
1018ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
101900000000 00 000000 0000000000000000ffffffffffffffff
1020
1021# vlan_tci=0x1000/0x1000
10220000 0058 00000000 000003fd dnl
1023000000000000ffffffffffff 000000000000ffffffffffff dnl
1024fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
102500000000 00 000000 0000000000000000ffffffffffffffff
1026
1027dnl Try invalid VID:
1028# bad ofp11_match: OFPBMC_BAD_VALUE
10290000 0058 00000000 000003fd dnl
1030000000000000ffffffffffff 000000000000ffffffffffff dnl
10311234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
103200000000 00 000000 0000000000000000ffffffffffffffff
1033
1034# dl_vlan_pcp=4
10350000 0058 00000000 000003f9 dnl
1036000000000000ffffffffffff 000000000000ffffffffffff dnl
1037fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
103800000000 00 000000 0000000000000000ffffffffffffffff
1039
1040# dl_vlan=10,dl_vlan_pcp=6
10410000 0058 00000000 000003f9 dnl
1042000000000000ffffffffffff 000000000000ffffffffffff dnl
1043000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
104400000000 00 000000 0000000000000000ffffffffffffffff
1045
1046# dl_type=0x1234
10470000 0058 00000000 000003f7 dnl
1048000000000000ffffffffffff 000000000000ffffffffffff dnl
10490000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
105000000000 00 000000 0000000000000000ffffffffffffffff
1051
1052# ip,nw_tos=252
10530000 0058 00000000 000003e7 dnl
1054000000000000ffffffffffff 000000000000ffffffffffff dnl
10550000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
105600000000 00 000000 0000000000000000ffffffffffffffff
1057
1058dnl Try invalid TOS:
1059# bad ofp11_match: OFPBMC_BAD_VALUE
10600000 0058 00000000 000003e7 dnl
1061000000000000ffffffffffff 000000000000ffffffffffff dnl
10620000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
106300000000 00 000000 0000000000000000ffffffffffffffff
1064
1065# ip,nw_proto=5
10660000 0058 00000000 000003d7 dnl
1067000000000000ffffffffffff 000000000000ffffffffffff dnl
10680000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
106900000000 00 000000 0000000000000000ffffffffffffffff
1070
1071# arp,arp_op=2
10720000 0058 00000000 000003d7 dnl
1073000000000000ffffffffffff 000000000000ffffffffffff dnl
10740000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
107500000000 00 000000 0000000000000000ffffffffffffffff
1076
1077# ip,nw_src=192.168.128.0/24
10780000 0058 00000000 000003f7 dnl
1079000000000000ffffffffffff 000000000000ffffffffffff dnl
10800000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
108100000000 00 000000 0000000000000000ffffffffffffffff
1082
c08201d6
BP
1083# ip,nw_src=128.160.128.0/165.165.165.165
1084# 44: c0 -> 80
1085# 45: a8 -> a0
410698cf
BP
10860000 0058 00000000 000003f7 dnl
1087000000000000ffffffffffff 000000000000ffffffffffff dnl
10880000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
108900000000 00 000000 0000000000000000ffffffffffffffff
1090
1091# ip,nw_dst=192.168.128.0/24
10920000 0058 00000000 000003f7 dnl
1093000000000000ffffffffffff 000000000000ffffffffffff dnl
10940000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
109500000000 00 000000 0000000000000000ffffffffffffffff
1096
c08201d6
BP
1097# ip,nw_dst=128.160.128.0/165.165.165.165
1098# 52: c0 -> 80
1099# 53: a8 -> a0
410698cf
BP
11000000 0058 00000000 000003f7 dnl
1101000000000000ffffffffffff 000000000000ffffffffffff dnl
11020000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
110300000000 00 000000 0000000000000000ffffffffffffffff
1104
1105# arp,nw_src=192.168.128.0/24
11060000 0058 00000000 000003f7 dnl
1107000000000000ffffffffffff 000000000000ffffffffffff dnl
11080000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
110900000000 00 000000 0000000000000000ffffffffffffffff
1110
1111# arp,nw_dst=192.168.128.0/24
11120000 0058 00000000 000003f7 dnl
1113000000000000ffffffffffff 000000000000ffffffffffff dnl
11140000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
111500000000 00 000000 0000000000000000ffffffffffffffff
1116
1117# tcp,tp_src=443
11180000 0058 00000000 00000397 dnl
1119000000000000ffffffffffff 000000000000ffffffffffff dnl
11200000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
112100000000 00 000000 0000000000000000ffffffffffffffff
1122
1123# tcp,tp_dst=443
11240000 0058 00000000 00000357 dnl
1125000000000000ffffffffffff 000000000000ffffffffffff dnl
11260000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
112700000000 00 000000 0000000000000000ffffffffffffffff
1128
1129# udp,tp_src=443
11300000 0058 00000000 00000397 dnl
1131000000000000ffffffffffff 000000000000ffffffffffff dnl
11320000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
113300000000 00 000000 0000000000000000ffffffffffffffff
1134
1135# icmp,icmp_type=5
11360000 0058 00000000 00000397 dnl
1137000000000000ffffffffffff 000000000000ffffffffffff dnl
11380000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
113900000000 00 000000 0000000000000000ffffffffffffffff
1140
1141# icmp,icmp_code=8
11420000 0058 00000000 00000357 dnl
1143000000000000ffffffffffff 000000000000ffffffffffff dnl
11440000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
114500000000 00 000000 0000000000000000ffffffffffffffff
1146
1147# udp,tp_src=443
11480000 0058 00000000 00000397 dnl
1149000000000000ffffffffffff 000000000000ffffffffffff dnl
11500000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
115100000000 00 000000 0000000000000000ffffffffffffffff
1152
1153# udp,tp_dst=443
11540000 0058 00000000 00000357 dnl
1155000000000000ffffffffffff 000000000000ffffffffffff dnl
11560000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
115700000000 00 000000 0000000000000000ffffffffffffffff
1158
1159dnl SCTP, no ports.
1160# ip,nw_proto=132
11610000 0058 00000000 000003d7 dnl
1162000000000000ffffffffffff 000000000000ffffffffffff dnl
11630000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
116400000000 00 000000 0000000000000000ffffffffffffffff
1165
1166dnl SCTP tp_src matching not supported:
1167# bad ofp11_match: OFPBMC_BAD_FIELD
11680000 0058 00000000 00000397 dnl
1169000000000000ffffffffffff 000000000000ffffffffffff dnl
11700000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
117100000000 00 000000 0000000000000000ffffffffffffffff
1172
1173dnl SCTP tp_dst matching not supported:
1174# bad ofp11_match: OFPBMC_BAD_FIELD
11750000 0058 00000000 00000357 dnl
1176000000000000ffffffffffff 000000000000ffffffffffff dnl
11770000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
117800000000 00 000000 0000000000000000ffffffffffffffff
1179
1180dnl Ignore tp_src if not TCP or UDP or SCTP:
1181# ip,nw_proto=21
1182# 11: 97 -> d7
1183# 60: 01 -> 00
1184# 61: bb -> 00
11850000 0058 00000000 00000397 dnl
1186000000000000ffffffffffff 000000000000ffffffffffff dnl
11870000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
118800000000 00 000000 0000000000000000ffffffffffffffff
1189
1190dnl Ignore tp_dst if not TCP or UDP or SCTP:
1191# ip,nw_proto=22
1192# 11: 57 -> d7
1193# 62: 01 -> 00
1194# 63: bb -> 00
11950000 0058 00000000 00000357 dnl
1196000000000000ffffffffffff 000000000000ffffffffffff dnl
11970000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
119800000000 00 000000 0000000000000000ffffffffffffffff
1199
1200dnl mpls_label not yet supported:
1201# bad ofp11_match: OFPBMC_BAD_TAG
12020000 0058 00000000 000002f7 dnl
1203000000000000ffffffffffff 000000000000ffffffffffff dnl
12040000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
120512345678 00 000000 0000000000000000ffffffffffffffff
1206
1207dnl mpls_tc not yet supported:
1208# bad ofp11_match: OFPBMC_BAD_TAG
12090000 0058 00000000 000001f7 dnl
1210000000000000ffffffffffff 000000000000ffffffffffff dnl
12110000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
121200000000 5a 000000 0000000000000000ffffffffffffffff
1213
1214dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1215# dl_type=0x1234
1216# 10: 00 -> 03
1217# 64: 12 -> 00
1218# 65: 34 -> 00
1219# 66: 56 -> 00
1220# 67: 78 -> 00
1221# 68: 5a -> 00
12220000 0058 00000000 000000f7 dnl
1223000000000000ffffffffffff 000000000000ffffffffffff dnl
12240000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
122512345678 5a 000000 0000000000000000ffffffffffffffff
1226
969fc56c
JS
1227dnl metadata match:
1228# metadata=0x1234567890abcdef
12290000 0058 00000000 000003ff dnl
1230000000000000ffffffffffff 000000000000ffffffffffff dnl
12310000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
123200000000 00 000000 1234567890abcdef0000000000000000
1233
1234dnl metadata match:
1235# metadata=0x5555555555555555/0x5555555555555555
410698cf
BP
12360000 0058 00000000 000003ff dnl
1237000000000000ffffffffffff 000000000000ffffffffffff dnl
12380000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
969fc56c
JS
123900000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1240
1241dnl metadata match:
1242# metadata=0x1234000090ab0000/0xffff0000ffff0000
1243# 74: 56 -> 00
1244# 75: 78 -> 00
1245# 78: cd -> 00
1246# 79: ef -> 00
12470000 0058 00000000 000003ff dnl
1248000000000000ffffffffffff 000000000000ffffffffffff dnl
12490000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
125000000000 00 000000 1234567890abcdef0000ffff0000ffff
410698cf
BP
1251
1252])
1253sed '/^[[#&]]/d' < test-data > input.txt
1254sed -n 's/^# //p; /^$/p' < test-data > expout
1255sed -n 's/^& //p' < test-data > experr
1256AT_CAPTURE_FILE([input.txt])
1257AT_CAPTURE_FILE([expout])
1258AT_CAPTURE_FILE([experr])
1259AT_CHECK(
1260 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1261 [0], [expout], [experr])
1262AT_CLEANUP
1263
102ce766
EJ
1264AT_SETUP([ovs-ofctl parse-nx-match loose])
1265AT_KEYWORDS([nx-match])
1266AT_DATA([nx-match.txt], [dnl
1267NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1268])
1269
1270AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
2e0525bc 1271nx_pull_match() returned error OFPBMC_BAD_FIELD
102ce766
EJ
1272])
1273
1274AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1275NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1276])
1277AT_CLEANUP
1278
b5ae8913
SH
1279AT_SETUP([ovs-ofctl parse-oxm])
1280AT_KEYWORDS([oxm])
1281AT_DATA([oxm.txt], [dnl
1282<any>
1283
1284# in port
1285OXM_OF_IN_PORT(00000000)
1286OXM_OF_IN_PORT(fffffffe)
1287
969fc56c
JS
1288# metadata
1289OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1290OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1291OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1292OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
fbcbc814 1293OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
969fc56c 1294
b5ae8913
SH
1295# eth dst
1296OXM_OF_ETH_DST(0002e30f80a4)
1297OXM_OF_ETH_DST_W(010000000000/010000000000)
1298OXM_OF_ETH_DST_W(000000000000/010000000000)
1299OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1300OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
fbcbc814 1301OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
b5ae8913
SH
1302OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1303
1304# eth src
1305OXM_OF_ETH_SRC(020898456ddb)
1306
1307# eth type
1308OXM_OF_ETH_TYPE(0800)
1309OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1310
1311# IP ECN
1312OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1313OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1314OXM_OF_IP_ECN(03)
1315
1316# IP protocol
1317OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1318OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1319OXM_OF_IP_PROTO(05)
1320
1321# IP source
1322OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1323OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
fbcbc814
SH
1324OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1325OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
b5ae8913
SH
1326OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1327OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1328
1329# IP destination
1330OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1331OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
fbcbc814
SH
1332OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1333OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
b5ae8913
SH
1334OXM_OF_IPV4_DST(ac100014)
1335OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1336
1337# TCP source port
1338OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1339OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
fbcbc814
SH
1340OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1341OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
b5ae8913
SH
1342OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1343
1344# TCP destination port
1345OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1346OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
fbcbc814
SH
1347OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1348OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
b5ae8913
SH
1349OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1350
1351# UDP source port
1352OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1353OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
fbcbc814
SH
1354OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1355OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
b5ae8913
SH
1356OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1357
1358# UDP destination port
1359OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1360OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
fbcbc814
SH
1361OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1362OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
b5ae8913
SH
1363OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1364
1365# ICMP type
1366OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1367OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1368
1369# ICMP code
1370OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1371OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1372OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1373OXM_OF_ICMPV4_CODE(00)
1374
1375# ARP opcode
1376OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1377OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1378OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1379OXM_OF_ARP_OP(0001)
1380OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1381
1382# ARP source protocol address
1383OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1384OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
fbcbc814
SH
1385OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1386OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
b5ae8913
SH
1387OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1388OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1389
1390# ARP destination protocol address
1391OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1392OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
fbcbc814
SH
1393OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1394OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
b5ae8913
SH
1395OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1396OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1397
1398# ARP source hardware address
1399OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1400OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1401OXM_OF_ARP_SHA(0002e30f80a4)
e878338b
SH
1402OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1403OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1404OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
b5ae8913
SH
1405
1406# ARP destination hardware address
1407OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1408OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1409OXM_OF_ARP_THA(0002e30f80a4)
e878338b
SH
1410OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1411OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1412OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
b5ae8913
SH
1413
1414# IPv6 source
1415OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1416OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1417OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
1418OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1419OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
b5ae8913
SH
1420OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1421
1422# IPv6 destination
1423OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1424OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1425OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
1426OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1427OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
b5ae8913
SH
1428OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1429
626186c3
SH
1430# IPv6 Flow Label
1431OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1432OXM_OF_IPV6_FLABEL(0000000f)
1433OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
32455024
SH
1434OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1435OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1436OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1437OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1438OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1439OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
626186c3 1440
b5ae8913
SH
1441# ND source hardware address
1442OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1443OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1444OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1445OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1446
1447# ND destination hardware address
1448OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1449OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1450OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1451OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1452
1453# Invalid field number.
145401020304(1111/2222)
1455])
1456AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1457<any>
1458
1459# in port
1460OXM_OF_IN_PORT(00000000)
1461OXM_OF_IN_PORT(fffffffe)
1462
969fc56c
JS
1463# metadata
1464OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1465OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1466OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1467OXM_OF_METADATA(1234567890abcdef)
fbcbc814 1468<any>
969fc56c 1469
b5ae8913
SH
1470# eth dst
1471OXM_OF_ETH_DST(0002e30f80a4)
1472OXM_OF_ETH_DST_W(010000000000/010000000000)
1473OXM_OF_ETH_DST_W(000000000000/010000000000)
1474OXM_OF_ETH_DST_W(010000000000/010000000000)
1475OXM_OF_ETH_DST(0002e30f80a4)
fbcbc814 1476<any>
b5ae8913
SH
1477OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1478
1479# eth src
1480OXM_OF_ETH_SRC(020898456ddb)
1481
1482# eth type
1483OXM_OF_ETH_TYPE(0800)
1484OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1485
1486# IP ECN
1487OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1488nx_pull_match() returned error OFPBMC_BAD_VALUE
1489nx_pull_match() returned error OFPBMC_BAD_PREREQ
1490
1491# IP protocol
1492OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1493OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1494nx_pull_match() returned error OFPBMC_BAD_PREREQ
1495
1496# IP source
1497OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1498OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
fbcbc814
SH
1499OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1500OXM_OF_ETH_TYPE(0800)
b5ae8913
SH
1501nx_pull_match() returned error OFPBMC_BAD_PREREQ
1502nx_pull_match() returned error OFPBMC_BAD_PREREQ
1503
1504# IP destination
1505OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1506OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
fbcbc814
SH
1507OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1508OXM_OF_ETH_TYPE(0800)
b5ae8913
SH
1509nx_pull_match() returned error OFPBMC_BAD_PREREQ
1510nx_pull_match() returned error OFPBMC_BAD_PREREQ
1511
1512# TCP source port
1513OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1514OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
fbcbc814
SH
1515OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1516OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
b5ae8913
SH
1517nx_pull_match() returned error OFPBMC_BAD_PREREQ
1518
1519# TCP destination port
1520OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1521OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
fbcbc814
SH
1522OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1523OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
b5ae8913
SH
1524nx_pull_match() returned error OFPBMC_BAD_PREREQ
1525
1526# UDP source port
1527OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1528OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
fbcbc814
SH
1529OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1530OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
b5ae8913
SH
1531nx_pull_match() returned error OFPBMC_BAD_PREREQ
1532
1533# UDP destination port
1534OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1535OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
fbcbc814
SH
1536OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1537OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
b5ae8913
SH
1538nx_pull_match() returned error OFPBMC_BAD_PREREQ
1539
1540# ICMP type
1541OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1542nx_pull_match() returned error OFPBMC_BAD_PREREQ
1543
1544# ICMP code
1545OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1546nx_pull_match() returned error OFPBMC_BAD_PREREQ
1547nx_pull_match() returned error OFPBMC_BAD_PREREQ
1548nx_pull_match() returned error OFPBMC_BAD_PREREQ
1549
1550# ARP opcode
1551OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1552nx_pull_match() returned error OFPBMC_BAD_VALUE
1553nx_pull_match() returned error OFPBMC_BAD_PREREQ
1554nx_pull_match() returned error OFPBMC_BAD_PREREQ
1555nx_pull_match() returned error OFPBMC_DUP_FIELD
1556
1557# ARP source protocol address
1558OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1559OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
fbcbc814
SH
1560OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1561OXM_OF_ETH_TYPE(0806)
b5ae8913
SH
1562nx_pull_match() returned error OFPBMC_BAD_PREREQ
1563nx_pull_match() returned error OFPBMC_BAD_PREREQ
1564
1565# ARP destination protocol address
1566OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1567OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
fbcbc814
SH
1568OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1569OXM_OF_ETH_TYPE(0806)
b5ae8913
SH
1570nx_pull_match() returned error OFPBMC_BAD_PREREQ
1571nx_pull_match() returned error OFPBMC_BAD_PREREQ
1572
1573# ARP source hardware address
1574OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1575nx_pull_match() returned error OFPBMC_BAD_PREREQ
1576nx_pull_match() returned error OFPBMC_BAD_PREREQ
e878338b
SH
1577OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1578OXM_OF_ETH_TYPE(0806)
1579OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
b5ae8913
SH
1580
1581# ARP destination hardware address
1582OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1583nx_pull_match() returned error OFPBMC_BAD_PREREQ
1584nx_pull_match() returned error OFPBMC_BAD_PREREQ
e878338b
SH
1585OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1586OXM_OF_ETH_TYPE(0806)
1587OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
b5ae8913
SH
1588
1589# IPv6 source
1590OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1591nx_pull_match() returned error OFPBMC_BAD_PREREQ
1592OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
1593OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1594OXM_OF_ETH_TYPE(86dd)
b5ae8913
SH
1595nx_pull_match() returned error OFPBMC_BAD_PREREQ
1596
1597# IPv6 destination
1598OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1599nx_pull_match() returned error OFPBMC_BAD_PREREQ
1600OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
1601OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1602OXM_OF_ETH_TYPE(86dd)
b5ae8913
SH
1603nx_pull_match() returned error OFPBMC_BAD_PREREQ
1604
626186c3
SH
1605# IPv6 Flow Label
1606nx_pull_match() returned error OFPBMC_BAD_VALUE
1607nx_pull_match() returned error OFPBMC_BAD_PREREQ
1608OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
32455024
SH
1609OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1610OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1611OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1612OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1613OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1614OXM_OF_ETH_TYPE(86dd)
626186c3 1615
b5ae8913
SH
1616# ND source hardware address
1617OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(87), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1618nx_pull_match() returned error OFPBMC_BAD_PREREQ
1619nx_pull_match() returned error OFPBMC_BAD_PREREQ
1620nx_pull_match() returned error OFPBMC_BAD_PREREQ
1621
1622# ND destination hardware address
1623OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(88), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1624nx_pull_match() returned error OFPBMC_BAD_PREREQ
1625nx_pull_match() returned error OFPBMC_BAD_PREREQ
1626nx_pull_match() returned error OFPBMC_BAD_PREREQ
1627
1628# Invalid field number.
1629nx_pull_match() returned error OFPBMC_BAD_FIELD
1630])
1631AT_CLEANUP
1632
1633AT_SETUP([ovs-ofctl parse-oxm loose])
1634AT_KEYWORDS([oxm])
1635AT_DATA([oxm.txt], [dnl
1636OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1637])
1638
1639AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1640nx_pull_match() returned error OFPBMC_BAD_FIELD
1641])
1642
1643AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1644OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1645])
1646AT_CLEANUP
1647
df778240
BP
1648dnl Check all of the patterns mentioned in the "VLAN Matching" section
1649dnl in the DESIGN file at top level.
1650AT_SETUP([ovs-ofctl check-vlan])
1651AT_KEYWORDS([VLAN])
1652
1653dnl [1]
1654AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
1655 -> 0000/0000
1656NXM: <any> -> 0000/0000
1657OF1.0: 0000/1,00/1 -> 0000/0000
1658OF1.1: 0000/1,00/1 -> 0000/0000
1659])
1660
1661dnl [2]
1662AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
1663vlan_tci=0x0000 -> 0000/ffff
1664NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
1665OF1.0: ffff/0,00/1 -> 0000/ffff
1666OF1.1: ffff/0,00/1 -> 0000/ffff
1667])
1668
1669dnl [3]
1670AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
1671dl_vlan=2748 -> 1abc/1fff
1672NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
1673OF1.0: 0abc/0,00/1 -> 1abc/1fff
1674OF1.1: 0abc/0,00/1 -> 1abc/1fff
1675])
1676
1677dnl [4]
1678AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
1679dl_vlan_pcp=5 -> b000/f000
1680NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
1681OF1.0: 0000/1,05/0 -> b000/f000
1682OF1.1: fffe/0,05/0 -> b000/f000
1683])
1684
1685dnl [5]
1686AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
1687dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
1688NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
1689OF1.0: 0abc/0,05/0 -> babc/ffff
1690OF1.1: 0abc/0,05/0 -> babc/ffff
1691])
1692
1693dnl [6]
1694AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
1695vlan_tci=0x0000/0x0fff -> 0000/0fff
1696NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
1697OF1.0: 0000/0,00/1 -> 1000/1fff
1698OF1.1: 0000/0,00/1 -> 1000/1fff
1699])
1700
1701dnl [7]
1702AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
1703vlan_tci=0x0000/0xf000 -> 0000/f000
1704NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
1705OF1.0: ffff/0,00/1 -> 0000/ffff
1706OF1.1: ffff/0,00/1 -> 0000/ffff
1707])
1708
1709dnl [8]
1710AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
1711vlan_tci=0x0000/0xefff -> 0000/efff
1712NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
1713OF1.0: 0000/0,00/0 -> 1000/ffff
1714OF1.1: 0000/0,00/0 -> 1000/ffff
1715])
1716
1717dnl [9]
1718AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
1719vlan_tci=0x1001/0x1001 -> 1001/1001
1720NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
1721OF1.0: 0001/0,00/1 -> 1001/1fff
1722OF1.1: 0001/0,00/1 -> 1001/1fff
1723])
1724
1725dnl [10]
1726AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
1727vlan_tci=0x3000/0x3000 -> 3000/3000
1728NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
1729OF1.0: 0000/1,01/0 -> 3000/f000
1730OF1.1: fffe/0,01/0 -> 3000/f000
1731])
1732AT_CHECK
1733AT_CLEANUP
1734
7525e578
JS
1735dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
1736dnl such as tunnels and metadata.
1737AT_SETUP([ovs-ofctl -F option and NXM features])
0fbc9f11 1738AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
27527aa0 1739 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
0fbc9f11 1740])
7525e578
JS
1741AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
1742 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1743])
0fbc9f11
BP
1744AT_CLEANUP
1745
1746dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1747dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1748dnl additionally show up as the top 32 bits of the cookie.) This checks
1749dnl for regression against bug #4566.
1750AT_SETUP([ovs-ofctl -F option with flow_mods])
023e1e0a 1751OVS_VSWITCHD_START
0fbc9f11 1752AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
ef0ce8ae 1753AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
0fbc9f11 1754NXST_FLOW reply:
ef0ce8ae 1755 tun_id=0x12345678 actions=drop
0fbc9f11 1756])
023e1e0a 1757OVS_VSWITCHD_STOP
0fbc9f11 1758AT_CLEANUP
f9cbfbe4
BP
1759
1760dnl Check that "-F openflow10" is really honored on dump-flows.
1761dnl (If it isn't, then dump-flows will show the register match.)
1762AT_SETUP([ovs-ofctl dump-flows honors -F option])
023e1e0a 1763OVS_VSWITCHD_START
f9cbfbe4 1764AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
ef0ce8ae 1765AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
f9cbfbe4 1766OFPST_FLOW reply:
ef0ce8ae 1767 actions=drop
f9cbfbe4 1768])
023e1e0a 1769OVS_VSWITCHD_STOP
f9cbfbe4
BP
1770AT_CLEANUP
1771
1772dnl Check that "-F openflow10" fails on dump-flows if the requested match
1773dnl can't be represented in OpenFlow 1.0.
1774AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
023e1e0a 1775OVS_VSWITCHD_START
f9cbfbe4 1776AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
27527aa0 1777 [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
f9cbfbe4 1778])
023e1e0a 1779OVS_VSWITCHD_STOP
f9cbfbe4 1780AT_CLEANUP
01b389b1
BP
1781
1782dnl Check that add-flow reports non-normalized flows (feature #5029).
1783AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
023e1e0a 1784OVS_VSWITCHD_START
01b389b1
BP
1785AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1786 [0], [], [dnl
1787ofp_util|INFO|normalization changed ofp_match, details:
1788ofp_util|INFO| pre: nw_src=1.2.3.4
1789ofp_util|INFO|post: @&t@
1790])
023e1e0a 1791OVS_VSWITCHD_STOP
01b389b1 1792AT_CLEANUP
410698cf 1793
bdcc5925
BP
1794dnl Check that --sort and --rsort works with dump-flows
1795dnl Default field is 'priority'. Flow entries are displayed based
1796dnl on field to sort.
1797AT_SETUP([ovs-ofctl dump-flows with sorting])
1798OVS_VSWITCHD_START
1799AT_KEYWORDS([sort])
1800AT_DATA([allflows.txt], [[
1801priority=4,in_port=23213 actions=output:42
1802priority=5,in_port=1029 actions=output:43
1803priority=7,in_port=1029 actions=output:43
1804priority=3,in_port=1028 actions=output:44
1805priority=1,in_port=1026 actions=output:45
1806priority=6,in_port=1027 actions=output:64
1807priority=2,in_port=1025 actions=output:47
1808priority=8,tcp,tp_src=5 actions=drop
1809priority=9,tcp,tp_src=6 actions=drop
1810]])
1811
1812AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
1813], [0], [ignore])
1814AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
1815 priority=1,in_port=1026 actions=output:45
1816 priority=2,in_port=1025 actions=output:47
1817 priority=3,in_port=1028 actions=output:44
1818 priority=4,in_port=23213 actions=output:42
1819 priority=5,in_port=1029 actions=output:43
1820 priority=6,in_port=1027 actions=output:64
1821 priority=7,in_port=1029 actions=output:43
1822 priority=8,tcp,tp_src=5 actions=drop
1823 priority=9,tcp,tp_src=6 actions=drop
1824])
1825AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
1826 priority=9,tcp,tp_src=6 actions=drop
1827 priority=8,tcp,tp_src=5 actions=drop
1828 priority=7,in_port=1029 actions=output:43
1829 priority=6,in_port=1027 actions=output:64
1830 priority=5,in_port=1029 actions=output:43
1831 priority=4,in_port=23213 actions=output:42
1832 priority=3,in_port=1028 actions=output:44
1833 priority=2,in_port=1025 actions=output:47
1834 priority=1,in_port=1026 actions=output:45
1835])
1836AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1837 priority=2,in_port=1025 actions=output:47
1838 priority=1,in_port=1026 actions=output:45
1839 priority=6,in_port=1027 actions=output:64
1840 priority=3,in_port=1028 actions=output:44
1841 priority=7,in_port=1029 actions=output:43
1842 priority=5,in_port=1029 actions=output:43
1843 priority=4,in_port=23213 actions=output:42
1844 priority=9,tcp,tp_src=6 actions=drop
1845 priority=8,tcp,tp_src=5 actions=drop
1846])
1847AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1848 priority=4,in_port=23213 actions=output:42
1849 priority=7,in_port=1029 actions=output:43
1850 priority=5,in_port=1029 actions=output:43
1851 priority=3,in_port=1028 actions=output:44
1852 priority=6,in_port=1027 actions=output:64
1853 priority=1,in_port=1026 actions=output:45
1854 priority=2,in_port=1025 actions=output:47
1855 priority=9,tcp,tp_src=6 actions=drop
1856 priority=8,tcp,tp_src=5 actions=drop
1857])
1858AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
1859 priority=8,tcp,tp_src=5 actions=drop
1860 priority=9,tcp,tp_src=6 actions=drop
1861 priority=7,in_port=1029 actions=output:43
1862 priority=6,in_port=1027 actions=output:64
1863 priority=5,in_port=1029 actions=output:43
1864 priority=4,in_port=23213 actions=output:42
1865 priority=3,in_port=1028 actions=output:44
1866 priority=2,in_port=1025 actions=output:47
1867 priority=1,in_port=1026 actions=output:45
1868])
1869AT_CHECK(
1870 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
1871 [ priority=2,in_port=1025 actions=output:47
1872 priority=1,in_port=1026 actions=output:45
1873 priority=6,in_port=1027 actions=output:64
1874 priority=3,in_port=1028 actions=output:44
1875 priority=7,in_port=1029 actions=output:43
1876 priority=5,in_port=1029 actions=output:43
1877 priority=4,in_port=23213 actions=output:42
1878 priority=8,tcp,tp_src=5 actions=drop
1879 priority=9,tcp,tp_src=6 actions=drop
1880])
1881OVS_VSWITCHD_STOP
1882AT_CLEANUP
296ed880
BP
1883
1884AT_SETUP([ovs-ofctl diff-flows])
1885OVS_VSWITCHD_START
1886
1887# Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout.
1888seq () {
1889 while test $1 -le $2; do
1890 echo $1
1891 set `expr $1 + ${3-1}` $2 $3
1892 done
1893}
1894
1895# Add tons of flows to br0.
1896for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
1897AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
1898
1899# Dump them and compare against what we expect by hand, then with diff-flows.
1900for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
1901AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
1902 [0], [expout])
1903AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
1904
1905# Remove even-numbered flows, compare again.
1906for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
1907AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
1908for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
1909AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
1910for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
1911AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
1912
1913OVS_VSWITCHD_STOP
1914AT_CLEANUP