3 AT_SETUP([ovs-ofctl parse-flows choice of protocol])
4 # This doesn't cover some potential vlan_tci test cases.
7 'tun_src=1.2.3.4 NXM,OXM' \
8 'tun_dst=1.2.3.4 NXM,OXM' \
12 'metadata=0 NXM,OXM,OpenFlow11' \
14 'skb_priority=0 none' \
15 'pkt_mark=1 NXM,OXM' \
24 'dl_src=00:11:22:33:44:55 any' \
25 'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
26 'dl_dst=00:11:22:33:44:55 any' \
27 'dl_dst=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
28 'dl_type=0x1234 any' \
29 'dl_type=0x0800 any' \
30 'dl_type=0x0806 any' \
31 'dl_type=0x86dd any' \
33 'vlan_tci=0x1009 any' \
38 'mpls,mpls_label=5 NXM,OXM,OpenFlow11' \
39 'mpls,mpls_tc=1 NXM,OXM,OpenFlow11' \
40 'mpls,mpls_bos=0 NXM,OXM' \
41 'ip,ip_src=1.2.3.4 any' \
42 'ip,ip_src=192.168.0.0/24 any' \
43 'ip,ip_src=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
44 'ip,ip_dst=1.2.3.4 any' \
45 'ip,ip_dst=192.168.0.0/24 any' \
46 'ip,ip_dst=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
47 'ipv6,ipv6_src=::1 NXM,OXM' \
48 'ipv6,ipv6_dst=::1 NXM,OXM' \
49 'ipv6,ipv6_label=5 NXM,OXM' \
51 'ipv6,nw_proto=1 NXM,OXM' \
52 'ip,nw_tos=0xf0 any' \
53 'ipv6,nw_tos=0xf0 NXM,OXM' \
54 'ip,nw_tos_shifted=0x3c any' \
55 'ipv6,nw_tos_shifted=0x3c NXM,OXM' \
56 'ip,nw_ecn=1 NXM,OXM' \
57 'ipv6,nw_ecn=1 NXM,OXM' \
58 'ip,nw_ttl=5 NXM,OXM' \
59 'ipv6,nw_ttl=5 NXM,OXM' \
60 'ip,ip_frag=no NXM,OXM' \
61 'ipv6,ip_frag=no NXM,OXM' \
63 'arp,arp_spa=1.2.3.4 any' \
64 'arp,arp_tpa=1.2.3.4 any' \
65 'arp,arp_sha=00:11:22:33:44:55 NXM,OXM' \
66 'arp,arp_tha=00:11:22:33:44:55 NXM,OXM' \
67 'tcp,tcp_src=80 any' \
68 'tcp,tcp_src=0x1000/0x1000 NXM,OXM' \
69 'tcp6,tcp_src=80 NXM,OXM' \
70 'tcp6,tcp_src=0x1000/0x1000 NXM,OXM' \
71 'tcp,tcp_dst=80 any' \
72 'tcp,tcp_dst=0x1000/0x1000 NXM,OXM' \
73 'tcp6,tcp_dst=80 NXM,OXM' \
74 'tcp6,tcp_dst=0x1000/0x1000 NXM,OXM' \
75 'udp,udp_src=80 any' \
76 'udp,udp_src=0x1000/0x1000 NXM,OXM' \
77 'udp6,udp_src=80 NXM,OXM' \
78 'udp6,udp_src=0x1000/0x1000 NXM,OXM' \
79 'udp,udp_dst=80 any' \
80 'udp,udp_dst=0x1000/0x1000 NXM,OXM' \
81 'udp6,udp_dst=80 NXM,OXM' \
82 'udp6,udp_dst=0x1000/0x1000 NXM,OXM' \
83 'icmp,icmp_type=1 any' \
84 'icmp,icmp_type=1 any' \
85 'icmp6,icmpv6_type=1 NXM,OXM' \
86 'icmp6,icmpv6_code=2 NXM,OXM'
90 echo "### test case: '$1' should have usable protocols '$2'"
91 if test "$2" = none; then
92 AT_CHECK([ovs-ofctl parse-flow "$1,actions=drop"], [1],
93 [usable protocols: none
95 [ovs-ofctl: no usable protocol
98 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$1,actions=drop" | sed 1q], [0],
105 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
106 AT_DATA([flows.txt], [[
108 tcp,tp_src=123,out_port=5,actions=flood
109 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
110 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
111 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
112 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
113 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
114 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
115 ip,actions=set_field:10.4.3.77->ip_src
118 in_port=0 actions=resubmit:0
119 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
122 AT_CHECK([ovs-ofctl parse-flows flows.txt
124 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
125 [[usable protocols: any
126 chosen protocol: OpenFlow10-table_id
127 OFPT_FLOW_MOD: ADD tcp,tp_src=123 out_port:5 actions=FLOOD
128 OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
129 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
130 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
131 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
132 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
133 OFPT_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
134 OFPT_FLOW_MOD: ADD ip actions=load:0xa04034d->NXM_OF_IP_SRC[]
135 OFPT_FLOW_MOD: ADD sctp actions=drop
136 OFPT_FLOW_MOD: ADD sctp actions=drop
137 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
138 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
142 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
143 AT_DATA([flows.txt], [[
145 tcp,tp_src=123,actions=flood
146 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
147 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
148 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
149 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
150 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
151 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
152 ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
153 sctp actions=set_field:3334->sctp_src
154 sctp actions=set_field:4445->sctp_dst
155 in_port=0 actions=resubmit:0
156 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
159 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
161 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
162 [[usable protocols: NXM,OXM
163 chosen protocol: OXM-OpenFlow12
164 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,tp_src=123 actions=FLOOD
165 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
166 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
167 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
168 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
169 OFPT_FLOW_MOD (OF1.2): ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
170 OFPT_FLOW_MOD (OF1.2): 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
171 OFPT_FLOW_MOD (OF1.2): ADD table:255 ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
172 OFPT_FLOW_MOD (OF1.2): ADD table:255 sctp actions=set_field:3334->sctp_src
173 OFPT_FLOW_MOD (OF1.2): ADD table:255 sctp actions=set_field:4445->sctp_dst
174 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=0 actions=resubmit:0
175 OFPT_FLOW_MOD (OF1.2): ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
179 AT_SETUP([ovs-ofctl parse-flows (With Tunnel-Parameters)])
180 AT_DATA([flows.txt], [[
181 tun_id=0x1234000056780000/0xffff0000ffff0000,tun_src=1.1.1.1,tun_dst=2.2.2.2,tun_tos=0x3,tun_ttl=20,tun_flags=key|csum actions=drop
184 AT_CHECK([ovs-ofctl parse-flows flows.txt
185 ], [1], [usable protocols: none
191 AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
192 AT_DATA([flows.txt], [[
193 skb_priority=0x12341234,tcp,tp_src=123,actions=flood
196 AT_CHECK([ovs-ofctl parse-flows flows.txt
197 ], [1], [usable protocols: none
203 AT_SETUP([ovs-ofctl parse-flows (NXM)])
204 AT_DATA([flows.txt], [[
206 tcp,tp_src=123,actions=flood
207 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
208 pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
209 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
210 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
211 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
212 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
213 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
214 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
215 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
216 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])
218 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
219 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
220 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
221 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
222 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
223 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
224 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
225 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
226 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
227 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
228 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
229 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
230 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
231 check_overlap,actions=output:1,exit,output:2
232 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
233 actions=controller(max_len=123,reason=invalid_ttl,id=555)
234 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
237 AT_CHECK([ovs-ofctl parse-flows flows.txt
239 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
240 [[usable protocols: OXM,NXM+table_id
241 chosen protocol: NXM+table_id
242 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
243 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
244 NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
245 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
246 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
247 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
248 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
249 NXT_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
250 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
251 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
252 NXT_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])
253 NXT_FLOW_MOD: ADD table:1 actions=drop
254 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
255 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
256 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
257 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
258 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
259 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
260 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
261 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
262 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
263 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
264 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
265 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
266 NXT_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
267 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
268 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
269 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
270 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
274 AT_SETUP([ovs-ofctl -F nxm parse-flows])
275 AT_DATA([flows.txt], [
277 tcp,tp_src=123,actions=flood
278 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
279 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
280 ipv6,ipv6_label=0x12345 actions=2
281 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
282 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
283 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
284 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
285 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
286 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
287 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
288 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
289 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
290 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
291 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
292 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
293 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
294 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
295 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
296 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
297 tun_id=0x1234,cookie=0x5678,actions=flood
299 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
300 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
301 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
302 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
303 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
304 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
306 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
307 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
308 usable protocols: NXM,OXM
309 chosen protocol: NXM-table_id
310 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
311 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
312 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
313 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
314 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
315 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
316 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
317 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
318 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
319 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
320 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
321 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
322 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
323 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
324 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
325 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
326 NXT_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
327 NXT_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
328 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
329 NXT_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
330 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
331 NXT_FLOW_MOD: ADD actions=drop
332 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
333 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
334 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
335 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
336 NXT_FLOW_MOD: ADD actions=drop
337 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
341 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
342 AT_DATA([flows.txt], [[
344 tcp,tp_src=123,actions=flood
345 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
346 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
347 ipv6,ipv6_label=0x12345 actions=2
348 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
349 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
350 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
351 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
352 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
353 sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
354 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
355 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
356 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
357 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
358 sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
359 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
360 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
361 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
362 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
363 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
364 tun_id=0x1234,cookie=0x5678,actions=flood
366 reg0=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[]
367 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
368 actions=push:NXM_NX_REG0[0..31],pop:NXM_NX_REG0[]
369 vlan_tci=0x1123/0x1fff,actions=drop
370 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
372 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
373 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
374 [[usable protocols: NXM,OXM
375 chosen protocol: NXM-table_id
376 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
377 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
378 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
379 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
380 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
381 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
382 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
383 NXT_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
384 NXT_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
385 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000005), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=drop
386 NXT_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
387 NXT_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
388 NXT_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
389 NXT_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
390 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=pop_queue,output:1
391 NXT_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
392 NXT_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
393 NXT_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
394 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
395 NXT_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
396 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
397 NXT_FLOW_MOD: ADD <any> actions=drop
398 NXT_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[]
399 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
400 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
401 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
402 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
406 AT_SETUP([ovs-ofctl parse-nx-match])
407 AT_KEYWORDS([nx-match])
408 AT_DATA([nx-match.txt], [dnl
416 NXM_OF_ETH_DST(0002e30f80a4)
417 NXM_OF_ETH_DST_W(010000000000/010000000000)
418 NXM_OF_ETH_DST_W(000000000000/010000000000)
419 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
420 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
421 NXM_OF_ETH_DST_W(60175619848f/000000000000)
422 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
423 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
426 NXM_OF_ETH_SRC(020898456ddb)
427 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
428 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
429 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
432 NXM_OF_ETH_TYPE(0800)
433 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
436 NXM_OF_VLAN_TCI(f009)
437 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
438 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
439 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
440 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
441 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
442 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
443 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
444 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
445 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
448 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
449 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
453 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
454 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
458 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
459 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
463 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
464 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
468 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
469 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
470 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
471 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
472 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
473 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
474 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
477 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
478 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
479 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
480 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
481 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
482 NXM_OF_IP_DST(ac100014)
483 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
486 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
487 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
488 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
489 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
490 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
492 # TCP destination port
493 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
494 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
495 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
496 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
497 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
500 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
501 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
502 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
503 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
504 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
506 # UDP destination port
507 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
508 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
509 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
510 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
511 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
514 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
515 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
518 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
519 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
520 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
524 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
525 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
526 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
528 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
530 # ARP source protocol address
531 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
532 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
533 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
534 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
535 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
536 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
537 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
539 # ARP destination protocol address
540 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
541 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
542 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
543 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
544 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
545 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
546 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
548 # ARP source hardware address
549 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
550 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
551 NXM_NX_ARP_SHA(0002e30f80a4)
553 # ARP destination hardware address
554 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
555 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
556 NXM_NX_ARP_THA(0002e30f80a4)
559 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
560 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
561 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
563 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
565 # RARP source protocol address
566 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
567 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
568 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
569 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
570 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/00000000)
571 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
572 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
574 # RARP destination protocol address
575 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
576 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
577 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
578 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
579 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/00000000)
580 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
581 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
583 # RARP source hardware address
584 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
585 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
586 NXM_NX_ARP_SHA(0002e30f80a4)
588 # RARP destination hardware address
589 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
590 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
591 NXM_NX_ARP_THA(0002e30f80a4)
594 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
595 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
596 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
597 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
598 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
599 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
600 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
603 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
604 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
605 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
606 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
607 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
608 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
611 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
612 NXM_NX_IPV6_LABEL(0000000f)
613 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
616 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
617 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
618 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
619 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
620 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
621 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
623 # ND source hardware address
624 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
625 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
626 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
627 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
629 # ND destination hardware address
630 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
631 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
632 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
633 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
636 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
637 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
638 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
639 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
640 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
641 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
642 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
643 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
644 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
645 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
646 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
647 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
648 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
651 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
652 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
653 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
654 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
655 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
656 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
657 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
658 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
659 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
660 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
661 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
662 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
663 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
666 NXM_NX_COOKIE(00000000abcdef01)
667 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
668 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
669 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
672 NXM_NX_TUN_ID(00000000abcdef01)
673 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
674 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
675 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
678 NXM_NX_REG0(acebdf56)
679 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
680 NXM_NX_REG0_W(a0e0d050/ffffffff)
681 NXM_NX_REG0_W(a0e0d050/00000000)
683 # Invalid field number.
686 # Unimplemented registers.
688 # This test assumes that at least two registers, but fewer than 16,
689 # registers are implemented.
691 00010108(12345678/12345678)
693 00011f08(12345678/12345678)
695 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
703 NXM_OF_ETH_DST(0002e30f80a4)
704 NXM_OF_ETH_DST_W(010000000000/010000000000)
705 NXM_OF_ETH_DST_W(000000000000/010000000000)
706 NXM_OF_ETH_DST_W(010000000000/010000000000)
707 NXM_OF_ETH_DST(0002e30f80a4)
709 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
710 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
713 NXM_OF_ETH_SRC(020898456ddb)
714 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
715 NXM_OF_ETH_SRC(020898456ddb)
719 NXM_OF_ETH_TYPE(0800)
720 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
723 NXM_OF_VLAN_TCI(f009)
724 nx_pull_match() returned error OFPBMC_DUP_FIELD
725 NXM_OF_VLAN_TCI(0000)
726 NXM_OF_VLAN_TCI(3123)
727 NXM_OF_VLAN_TCI(0123)
728 NXM_OF_VLAN_TCI_W(1123/1fff)
729 NXM_OF_VLAN_TCI(1123)
731 NXM_OF_VLAN_TCI_W(f000/f000)
732 NXM_OF_VLAN_TCI_W(0000/e000)
735 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
736 nx_pull_match() returned error OFPBMC_BAD_VALUE
737 nx_pull_match() returned error OFPBMC_BAD_PREREQ
740 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
741 nx_pull_match() returned error OFPBMC_BAD_VALUE
742 nx_pull_match() returned error OFPBMC_BAD_PREREQ
745 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
746 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
747 nx_pull_match() returned error OFPBMC_BAD_PREREQ
750 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
751 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
752 nx_pull_match() returned error OFPBMC_BAD_PREREQ
755 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
756 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
757 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
758 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
759 NXM_OF_ETH_TYPE(0800)
760 nx_pull_match() returned error OFPBMC_BAD_PREREQ
761 nx_pull_match() returned error OFPBMC_BAD_PREREQ
764 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
765 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
766 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
767 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
768 NXM_OF_ETH_TYPE(0800)
769 nx_pull_match() returned error OFPBMC_BAD_PREREQ
770 nx_pull_match() returned error OFPBMC_BAD_PREREQ
773 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
774 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
775 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
776 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
777 nx_pull_match() returned error OFPBMC_BAD_PREREQ
779 # TCP destination port
780 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
781 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
782 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
783 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
784 nx_pull_match() returned error OFPBMC_BAD_PREREQ
787 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
788 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
789 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
790 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
791 nx_pull_match() returned error OFPBMC_BAD_PREREQ
793 # UDP destination port
794 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
795 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
796 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
797 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
798 nx_pull_match() returned error OFPBMC_BAD_PREREQ
801 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
802 nx_pull_match() returned error OFPBMC_BAD_PREREQ
805 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
806 nx_pull_match() returned error OFPBMC_BAD_PREREQ
807 nx_pull_match() returned error OFPBMC_BAD_PREREQ
808 nx_pull_match() returned error OFPBMC_BAD_PREREQ
811 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
812 nx_pull_match() returned error OFPBMC_BAD_VALUE
813 nx_pull_match() returned error OFPBMC_BAD_PREREQ
814 nx_pull_match() returned error OFPBMC_BAD_PREREQ
815 nx_pull_match() returned error OFPBMC_DUP_FIELD
817 # ARP source protocol address
818 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
819 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
820 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
821 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
822 NXM_OF_ETH_TYPE(0806)
823 nx_pull_match() returned error OFPBMC_BAD_PREREQ
824 nx_pull_match() returned error OFPBMC_BAD_PREREQ
826 # ARP destination protocol address
827 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
828 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
829 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
830 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
831 NXM_OF_ETH_TYPE(0806)
832 nx_pull_match() returned error OFPBMC_BAD_PREREQ
833 nx_pull_match() returned error OFPBMC_BAD_PREREQ
835 # ARP source hardware address
836 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
837 nx_pull_match() returned error OFPBMC_BAD_PREREQ
838 nx_pull_match() returned error OFPBMC_BAD_PREREQ
840 # ARP destination hardware address
841 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
842 nx_pull_match() returned error OFPBMC_BAD_PREREQ
843 nx_pull_match() returned error OFPBMC_BAD_PREREQ
846 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
847 nx_pull_match() returned error OFPBMC_BAD_VALUE
848 nx_pull_match() returned error OFPBMC_BAD_PREREQ
849 nx_pull_match() returned error OFPBMC_BAD_PREREQ
850 nx_pull_match() returned error OFPBMC_DUP_FIELD
852 # RARP source protocol address
853 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
854 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
855 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
856 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
857 NXM_OF_ETH_TYPE(8035)
858 nx_pull_match() returned error OFPBMC_BAD_PREREQ
859 nx_pull_match() returned error OFPBMC_BAD_PREREQ
861 # RARP destination protocol address
862 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
863 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
864 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(40201234/77777777)
865 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
866 NXM_OF_ETH_TYPE(8035)
867 nx_pull_match() returned error OFPBMC_BAD_PREREQ
868 nx_pull_match() returned error OFPBMC_BAD_PREREQ
870 # RARP source hardware address
871 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
872 nx_pull_match() returned error OFPBMC_BAD_PREREQ
873 nx_pull_match() returned error OFPBMC_BAD_PREREQ
875 # RARP destination hardware address
876 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
877 nx_pull_match() returned error OFPBMC_BAD_PREREQ
878 nx_pull_match() returned error OFPBMC_BAD_PREREQ
881 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
882 nx_pull_match() returned error OFPBMC_BAD_PREREQ
883 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
884 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
885 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
886 NXM_OF_ETH_TYPE(86dd)
887 nx_pull_match() returned error OFPBMC_BAD_PREREQ
890 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
891 nx_pull_match() returned error OFPBMC_BAD_PREREQ
892 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
893 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
894 NXM_OF_ETH_TYPE(86dd)
895 nx_pull_match() returned error OFPBMC_BAD_PREREQ
898 nx_pull_match() returned error OFPBMC_BAD_VALUE
899 nx_pull_match() returned error OFPBMC_BAD_PREREQ
900 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
903 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
904 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
905 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
906 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
907 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
908 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
910 # ND source hardware address
911 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
912 nx_pull_match() returned error OFPBMC_BAD_PREREQ
913 nx_pull_match() returned error OFPBMC_BAD_PREREQ
914 nx_pull_match() returned error OFPBMC_BAD_PREREQ
916 # ND destination hardware address
917 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
918 nx_pull_match() returned error OFPBMC_BAD_PREREQ
919 nx_pull_match() returned error OFPBMC_BAD_PREREQ
920 nx_pull_match() returned error OFPBMC_BAD_PREREQ
923 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
924 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
925 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
926 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
927 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
928 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
929 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
930 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
931 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
932 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
933 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
934 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
935 nx_pull_match() returned error OFPBMC_BAD_VALUE
938 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
939 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
940 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
941 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
942 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
943 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
944 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
945 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
946 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
947 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
948 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
949 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
950 nx_pull_match() returned error OFPBMC_BAD_VALUE
953 NXM_NX_COOKIE(00000000abcdef01)
954 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
955 NXM_NX_COOKIE(84200000abcdef01)
959 NXM_NX_TUN_ID(00000000abcdef01)
960 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
961 NXM_NX_TUN_ID(84200000abcdef01)
965 NXM_NX_REG0(acebdf56)
966 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
967 NXM_NX_REG0(a0e0d050)
970 # Invalid field number.
971 nx_pull_match() returned error OFPBMC_BAD_FIELD
973 # Unimplemented registers.
975 # This test assumes that at least two registers, but fewer than 16,
976 # registers are implemented.
977 NXM_NX_REG0(12345678)
978 NXM_NX_REG0_W(12345678/12345678)
979 nx_pull_match() returned error OFPBMC_BAD_FIELD
980 nx_pull_match() returned error OFPBMC_BAD_FIELD
983 # Check that at least the first warning made it. (It's rate-limited
984 # so a variable number could show up, especially under valgrind etc.)
985 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
986 nx_match|WARN|NXM/OXM entry NXM_OF_ETH_DST_W(ffffffffffff/010000000000) has 1-bits in value for bits wildcarded by the mask. (Future versions of OVS may report this as an OpenFlow error.)
989 # Check that there wasn't any other stderr output.
990 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
993 AT_SETUP([ovs-ofctl parse-ofp10-match])
995 AT_DATA([test-data], [dnl
997 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
998 xxxxxxxx xxxxxxxx xxxx xxxx
1000 # dl_src=00:01:02:03:04:05
1001 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1002 xxxxxxxx xxxxxxxx xxxx xxxx
1004 # dl_dst=10:20:30:40:50:60
1005 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1006 xxxxxxxx xxxxxxxx xxxx xxxx
1009 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1010 xxxxxxxx xxxxxxxx xxxx xxxx
1013 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1014 xxxxxxxx xxxxxxxx xxxx xxxx
1016 # dl_vlan=291,dl_vlan_pcp=4
1017 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1018 xxxxxxxx xxxxxxxx xxxx xxxx
1021 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1022 xxxxxxxx xxxxxxxx xxxx xxxx
1024 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
1025 dnl OVS ignores it and drops it on output.
1029 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1030 xxxxxxxx xxxxxxxx xxxx xxxx
1032 dnl Invalid VID and PCP discards out-of-range bits:
1033 # dl_vlan=256,dl_vlan_pcp=7
1036 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1037 xxxxxxxx xxxxxxxx xxxx xxxx
1040 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1041 xxxxxxxx xxxxxxxx xxxx xxxx
1044 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1045 xxxxxxxx xxxxxxxx xxxx xxxx
1047 dnl Ignore nw_proto if not IP or ARP:
1048 # dl_type=0x1234,nw_proto=5
1049 # normal: 3: cf -> ef
1050 # normal: 25: 05 -> 00
1051 & ofp_util|INFO|normalization changed ofp_match, details:
1052 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1053 & ofp_util|INFO|post: dl_type=0x1234
1054 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1055 xxxxxxxx xxxxxxxx xxxx xxxx
1058 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1059 xxxxxxxx xxxxxxxx xxxx xxxx
1061 dnl Ignore nw_tos if not IP:
1064 # normal: 1: 18 -> 38
1065 # normal: 24: 04 -> 00
1066 & ofp_util|INFO|normalization changed ofp_match, details:
1067 & ofp_util|INFO| pre: arp,nw_tos=4
1068 & ofp_util|INFO|post: arp
1069 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1070 xxxxxxxx xxxxxxxx xxxx xxxx
1072 dnl Low 2 bits of invalid TOS are forced to 0:
1075 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1076 xxxxxxxx xxxxxxxx xxxx xxxx
1079 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1080 xxxxxxxx xxxxxxxx xxxx xxxx
1082 # ip,nw_src=192.168.128.85
1083 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1084 c0a88055 xxxxxxxx xxxx xxxx
1086 # ip,nw_src=192.168.128.0/24
1088 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1089 c0a88055 xxxxxxxx xxxx xxxx
1091 # ip,nw_dst=192.168.128.85
1092 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1093 xxxxxxxx c0a88055 xxxx xxxx
1095 # ip,nw_dst=192.168.128.0/24
1097 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1098 xxxxxxxx c0a88055 xxxx xxxx
1100 # arp,arp_spa=192.168.128.85
1101 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1102 c0a88055 xxxxxxxx xxxx xxxx
1104 # arp,arp_spa=192.168.128.0/24
1106 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1107 c0a88055 xxxxxxxx xxxx xxxx
1109 # arp,arp_tpa=192.168.128.85
1110 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1111 xxxxxxxx c0a88055 xxxx xxxx
1113 # arp,arp_tpa=192.168.128.0/24
1115 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1116 xxxxxxxx c0a88055 xxxx xxxx
1118 dnl Ignore nw_src if not IP or ARP:
1119 # dl_type=0x1234,nw_src=192.168.128.0/24
1121 # normal: 2: 08 -> 20
1122 # normal: 28: c0 -> 00
1123 # normal: 29: a8 -> 00
1124 # normal: 30: 80 -> 00
1125 & ofp_util|INFO|normalization changed ofp_match, details:
1126 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1127 & ofp_util|INFO|post: dl_type=0x1234
1128 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1129 c0a88055 xxxxxxxx xxxx xxxx
1131 dnl Ignore nw_dst if not IP or ARP:
1132 # dl_type=0x1234,nw_dst=192.168.128.0/24
1134 # normal: 1: 32 -> 38
1135 # normal: 32: c0 -> 00
1136 # normal: 33: a8 -> 00
1137 # normal: 34: 80 -> 00
1138 & ofp_util|INFO|normalization changed ofp_match, details:
1139 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1140 & ofp_util|INFO|post: dl_type=0x1234
1141 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1142 xxxxxxxx c0a88055 xxxx xxxx
1145 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1146 xxxxxxxx xxxxxxxx 01bb xxxx
1149 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1150 xxxxxxxx xxxxxxxx xxxx 01bb
1153 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1154 xxxxxxxx xxxxxxxx 01bb xxxx
1157 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1158 xxxxxxxx xxxxxxxx xxxx 01bb
1161 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1162 xxxxxxxx xxxxxxxx 01bb xxxx
1165 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1166 xxxxxxxx xxxxxxxx xxxx 01bb
1169 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1170 xxxxxxxx xxxxxxxx 0005 xxxx
1173 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1174 xxxxxxxx xxxxxxxx xxxx 0008
1176 dnl Ignore tp_src if not TCP/UDP/SCTP:
1177 # ip,nw_proto=21,tp_src=443
1178 # normal: 3: 8f -> cf
1179 # normal: 36: 01 -> 00
1180 # normal: 37: bb -> 00
1181 & ofp_util|INFO|normalization changed ofp_match, details:
1182 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1183 & ofp_util|INFO|post: ip,nw_proto=21
1184 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1185 xxxxxxxx xxxxxxxx 01bb xxxx
1187 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1188 # ip,nw_proto=21,tp_dst=443
1189 # normal: 3: 4f -> cf
1190 # normal: 38: 01 -> 00
1191 # normal: 39: bb -> 00
1192 dnl The normalization details are suppressed here due to rate-limiting.
1193 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1194 xxxxxxxx xxxxxxxx xxxx 01bb
1197 sed '/^[[#&]]/d' < test-data > input.txt
1198 sed -n 's/^# //p; /^$/p' < test-data > expout
1199 sed -n 's/^& //p' < test-data > experr
1200 AT_CAPTURE_FILE([input.txt])
1201 AT_CAPTURE_FILE([expout])
1202 AT_CAPTURE_FILE([experr])
1204 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1205 [0], [expout], [experr])
1208 AT_SETUP([ovs-ofctl parse-ofp11-match])
1209 AT_KEYWORDS([OF1.1])
1210 AT_DATA([test-data], [dnl
1212 0000 0058 fffffffe 000003fe dnl
1213 000000000000ffffffffffff 000000000000ffffffffffff dnl
1214 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1215 00000000 00 000000 0000000000000000ffffffffffffffff
1217 # bad ofp11_match: OFPBMC_BAD_VALUE
1218 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1219 0000 0058 12345678 000003fe dnl
1220 000000000000ffffffffffff 000000000000ffffffffffff dnl
1221 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1222 00000000 00 000000 0000000000000000ffffffffffffffff
1224 # dl_src=00:01:02:03:04:05
1225 0000 0058 00000000 000003ff dnl
1226 000102030405000000000000 000000000000ffffffffffff dnl
1227 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1228 00000000 00 000000 0000000000000000ffffffffffffffff
1230 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1231 0000 0058 00000000 000003ff dnl
1232 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1233 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1234 00000000 00 000000 0000000000000000ffffffffffffffff
1236 # dl_dst=00:01:02:03:04:05
1237 0000 0058 00000000 000003ff dnl
1238 000000000000ffffffffffff 000102030405000000000000 dnl
1239 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1240 00000000 00 000000 0000000000000000ffffffffffffffff
1242 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1243 0000 0058 00000000 000003ff dnl
1244 000000000000ffffffffffff 010000000000feffffffffff dnl
1245 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1246 00000000 00 000000 0000000000000000ffffffffffffffff
1248 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1249 0000 0058 00000000 000003ff dnl
1250 000000000000ffffffffffff 000102030405010000000000 dnl
1251 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1252 00000000 00 000000 0000000000000000ffffffffffffffff
1254 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1255 0000 0058 00000000 000003ff dnl
1256 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1257 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1258 00000000 00 000000 0000000000000000ffffffffffffffff
1260 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1261 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1265 0000 0058 00000001 000003fa dnl
1266 000000000000ffffffffffff 000000000000ffffffffffff dnl
1267 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1268 00000000 00 000000 0000000000000000ffffffffffffffff
1271 0000 0058 00000000 000003fd dnl
1272 000000000000ffffffffffff 000000000000ffffffffffff dnl
1273 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1274 00000000 00 000000 0000000000000000ffffffffffffffff
1278 0000 0058 00000000 000003fd dnl
1279 000000000000ffffffffffff 000000000000ffffffffffff dnl
1280 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1281 00000000 00 000000 0000000000000000ffffffffffffffff
1283 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1284 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1288 0000 0058 00000000 000003f9 dnl
1289 000000000000ffffffffffff 000000000000ffffffffffff dnl
1290 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1291 00000000 00 000000 0000000000000000ffffffffffffffff
1293 # vlan_tci=0x1000/0x1000
1294 0000 0058 00000000 000003fd dnl
1295 000000000000ffffffffffff 000000000000ffffffffffff dnl
1296 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1297 00000000 00 000000 0000000000000000ffffffffffffffff
1299 dnl Try invalid VID:
1300 # bad ofp11_match: OFPBMC_BAD_VALUE
1301 0000 0058 00000000 000003fd dnl
1302 000000000000ffffffffffff 000000000000ffffffffffff dnl
1303 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1304 00000000 00 000000 0000000000000000ffffffffffffffff
1307 0000 0058 00000000 000003f9 dnl
1308 000000000000ffffffffffff 000000000000ffffffffffff dnl
1309 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1310 00000000 00 000000 0000000000000000ffffffffffffffff
1312 # dl_vlan=10,dl_vlan_pcp=6
1313 0000 0058 00000000 000003f9 dnl
1314 000000000000ffffffffffff 000000000000ffffffffffff dnl
1315 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1316 00000000 00 000000 0000000000000000ffffffffffffffff
1319 0000 0058 00000000 000003f7 dnl
1320 000000000000ffffffffffff 000000000000ffffffffffff dnl
1321 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1322 00000000 00 000000 0000000000000000ffffffffffffffff
1325 0000 0058 00000000 000003e7 dnl
1326 000000000000ffffffffffff 000000000000ffffffffffff dnl
1327 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1328 00000000 00 000000 0000000000000000ffffffffffffffff
1330 dnl Try invalid TOS:
1331 # bad ofp11_match: OFPBMC_BAD_VALUE
1332 0000 0058 00000000 000003e7 dnl
1333 000000000000ffffffffffff 000000000000ffffffffffff dnl
1334 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1335 00000000 00 000000 0000000000000000ffffffffffffffff
1338 0000 0058 00000000 000003d7 dnl
1339 000000000000ffffffffffff 000000000000ffffffffffff dnl
1340 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1341 00000000 00 000000 0000000000000000ffffffffffffffff
1344 0000 0058 00000000 000003d7 dnl
1345 000000000000ffffffffffff 000000000000ffffffffffff dnl
1346 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1347 00000000 00 000000 0000000000000000ffffffffffffffff
1349 # ip,nw_src=192.168.128.0/24
1350 0000 0058 00000000 000003f7 dnl
1351 000000000000ffffffffffff 000000000000ffffffffffff dnl
1352 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1353 00000000 00 000000 0000000000000000ffffffffffffffff
1355 # ip,nw_src=128.160.128.0/165.165.165.165
1358 0000 0058 00000000 000003f7 dnl
1359 000000000000ffffffffffff 000000000000ffffffffffff dnl
1360 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1361 00000000 00 000000 0000000000000000ffffffffffffffff
1363 # ip,nw_dst=192.168.128.0/24
1364 0000 0058 00000000 000003f7 dnl
1365 000000000000ffffffffffff 000000000000ffffffffffff dnl
1366 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1367 00000000 00 000000 0000000000000000ffffffffffffffff
1369 # ip,nw_dst=128.160.128.0/165.165.165.165
1372 0000 0058 00000000 000003f7 dnl
1373 000000000000ffffffffffff 000000000000ffffffffffff dnl
1374 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1375 00000000 00 000000 0000000000000000ffffffffffffffff
1377 # arp,arp_spa=192.168.128.0/24
1378 0000 0058 00000000 000003f7 dnl
1379 000000000000ffffffffffff 000000000000ffffffffffff dnl
1380 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1381 00000000 00 000000 0000000000000000ffffffffffffffff
1383 # arp,arp_tpa=192.168.128.0/24
1384 0000 0058 00000000 000003f7 dnl
1385 000000000000ffffffffffff 000000000000ffffffffffff dnl
1386 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1387 00000000 00 000000 0000000000000000ffffffffffffffff
1390 0000 0058 00000000 00000397 dnl
1391 000000000000ffffffffffff 000000000000ffffffffffff dnl
1392 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1393 00000000 00 000000 0000000000000000ffffffffffffffff
1396 0000 0058 00000000 00000357 dnl
1397 000000000000ffffffffffff 000000000000ffffffffffff dnl
1398 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1399 00000000 00 000000 0000000000000000ffffffffffffffff
1402 0000 0058 00000000 00000397 dnl
1403 000000000000ffffffffffff 000000000000ffffffffffff dnl
1404 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1405 00000000 00 000000 0000000000000000ffffffffffffffff
1408 0000 0058 00000000 00000397 dnl
1409 000000000000ffffffffffff 000000000000ffffffffffff dnl
1410 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1411 00000000 00 000000 0000000000000000ffffffffffffffff
1414 0000 0058 00000000 00000357 dnl
1415 000000000000ffffffffffff 000000000000ffffffffffff dnl
1416 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1417 00000000 00 000000 0000000000000000ffffffffffffffff
1420 0000 0058 00000000 00000397 dnl
1421 000000000000ffffffffffff 000000000000ffffffffffff dnl
1422 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1423 00000000 00 000000 0000000000000000ffffffffffffffff
1426 0000 0058 00000000 00000357 dnl
1427 000000000000ffffffffffff 000000000000ffffffffffff dnl
1428 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1429 00000000 00 000000 0000000000000000ffffffffffffffff
1432 0000 0058 00000000 000003d7 dnl
1433 000000000000ffffffffffff 000000000000ffffffffffff dnl
1434 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1435 00000000 00 000000 0000000000000000ffffffffffffffff
1438 0000 0058 00000000 00000397 dnl
1439 000000000000ffffffffffff 000000000000ffffffffffff dnl
1440 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1441 00000000 00 000000 0000000000000000ffffffffffffffff
1444 0000 0058 00000000 00000357 dnl
1445 000000000000ffffffffffff 000000000000ffffffffffff dnl
1446 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1447 00000000 00 000000 0000000000000000ffffffffffffffff
1449 dnl Ignore tp_src if not TCP/UDP/SCTP:
1454 0000 0058 00000000 00000397 dnl
1455 000000000000ffffffffffff 000000000000ffffffffffff dnl
1456 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1457 00000000 00 000000 0000000000000000ffffffffffffffff
1459 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1464 0000 0058 00000000 00000357 dnl
1465 000000000000ffffffffffff 000000000000ffffffffffff dnl
1466 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1467 00000000 00 000000 0000000000000000ffffffffffffffff
1469 dnl mpls_label not yet supported:
1470 # bad ofp11_match: OFPBMC_BAD_TAG
1471 0000 0058 00000000 000002f7 dnl
1472 000000000000ffffffffffff 000000000000ffffffffffff dnl
1473 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1474 12345678 00 000000 0000000000000000ffffffffffffffff
1476 dnl mpls_tc not yet supported:
1477 # bad ofp11_match: OFPBMC_BAD_TAG
1478 0000 0058 00000000 000001f7 dnl
1479 000000000000ffffffffffff 000000000000ffffffffffff dnl
1480 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1481 00000000 5a 000000 0000000000000000ffffffffffffffff
1483 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1491 0000 0058 00000000 000000f7 dnl
1492 000000000000ffffffffffff 000000000000ffffffffffff dnl
1493 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1494 12345678 5a 000000 0000000000000000ffffffffffffffff
1497 # metadata=0x1234567890abcdef
1498 0000 0058 00000000 000003ff dnl
1499 000000000000ffffffffffff 000000000000ffffffffffff dnl
1500 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1501 00000000 00 000000 1234567890abcdef0000000000000000
1504 # metadata=0x5555555555555555/0x5555555555555555
1505 0000 0058 00000000 000003ff dnl
1506 000000000000ffffffffffff 000000000000ffffffffffff dnl
1507 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1508 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1511 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1516 0000 0058 00000000 000003ff dnl
1517 000000000000ffffffffffff 000000000000ffffffffffff dnl
1518 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1519 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1522 sed '/^[[#&]]/d' < test-data > input.txt
1523 sed -n 's/^# //p; /^$/p' < test-data > expout
1524 sed -n 's/^& //p' < test-data > experr
1525 AT_CAPTURE_FILE([input.txt])
1526 AT_CAPTURE_FILE([expout])
1527 AT_CAPTURE_FILE([experr])
1529 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1530 [0], [expout], [experr])
1533 AT_SETUP([ovs-ofctl parse-nx-match loose])
1534 AT_KEYWORDS([nx-match])
1535 AT_DATA([nx-match.txt], [dnl
1536 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1539 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1540 nx_pull_match() returned error OFPBMC_BAD_FIELD
1543 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1544 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1548 AT_SETUP([ovs-ofctl parse-oxm])
1550 AT_DATA([oxm.txt], [dnl
1554 OXM_OF_IN_PORT(00000000)
1555 OXM_OF_IN_PORT(fffffffe)
1558 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1559 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1560 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1561 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1562 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1565 OXM_OF_ETH_DST(0002e30f80a4)
1566 OXM_OF_ETH_DST_W(010000000000/010000000000)
1567 OXM_OF_ETH_DST_W(000000000000/010000000000)
1568 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1569 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1570 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1571 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1574 OXM_OF_ETH_SRC(020898456ddb)
1577 OXM_OF_ETH_TYPE(0800)
1578 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1581 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1582 OXM_OF_VLAN_VID(f009) # Bad Value
1583 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1584 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1585 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1586 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1587 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1588 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1589 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1590 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1591 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1592 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1593 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1594 OXM_OF_VLAN_VID_W(1123/0000) # Packets with or without 802.1Q header
1595 OXM_OF_VLAN_VID_W(1123/1f0f), # Packets with # VID=123 (masked)
1596 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1597 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1598 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1601 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1602 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1603 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1607 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1608 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1612 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1613 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1617 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1618 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1619 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1620 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1621 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1622 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1625 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1626 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1627 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1628 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1629 OXM_OF_IPV4_DST(ac100014)
1630 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1633 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1634 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1635 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1636 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1637 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1639 # TCP destination port
1640 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1641 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1642 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1643 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1644 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1647 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1648 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1649 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1650 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1651 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1653 # UDP destination port
1654 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1655 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1656 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1657 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1658 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1661 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1662 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1663 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1664 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/0000)
1665 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1667 # SCTP destination port
1668 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1669 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1670 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1671 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/0000)
1672 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1675 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1676 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1679 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1680 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1681 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1682 OXM_OF_ICMPV4_CODE(00)
1685 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1686 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1687 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1689 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1691 # ARP source protocol address
1692 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1693 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1694 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1695 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1696 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1697 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1699 # ARP destination protocol address
1700 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1701 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1702 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1703 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1704 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1705 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1707 # ARP source hardware address
1708 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1709 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1710 OXM_OF_ARP_SHA(0002e30f80a4)
1711 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1712 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1713 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1715 # ARP destination hardware address
1716 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1717 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1718 OXM_OF_ARP_THA(0002e30f80a4)
1719 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1720 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1721 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1724 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1725 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1726 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1727 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1728 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1729 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1732 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1733 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1734 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1735 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1736 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1737 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1740 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1741 OXM_OF_IPV6_FLABEL(0000000f)
1742 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1743 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1744 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1745 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1746 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1747 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1748 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1750 # ND source hardware address
1751 OXM_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)
1752 OXM_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)
1753 OXM_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)
1754 OXM_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)
1756 # ND destination hardware address
1757 OXM_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)
1758 OXM_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)
1759 OXM_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)
1760 OXM_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)
1762 # Invalid field number.
1765 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm < oxm.txt],
1770 OXM_OF_IN_PORT(00000000)
1771 OXM_OF_IN_PORT(fffffffe)
1774 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1775 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1776 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1777 OXM_OF_METADATA(1234567890abcdef)
1781 OXM_OF_ETH_DST(0002e30f80a4)
1782 OXM_OF_ETH_DST_W(010000000000/010000000000)
1783 OXM_OF_ETH_DST_W(000000000000/010000000000)
1784 OXM_OF_ETH_DST_W(010000000000/010000000000)
1785 OXM_OF_ETH_DST(0002e30f80a4)
1787 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1790 OXM_OF_ETH_SRC(020898456ddb)
1793 OXM_OF_ETH_TYPE(0800)
1794 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1797 nx_pull_match() returned error OFPBMC_DUP_FIELD
1798 nx_pull_match() returned error OFPBMC_BAD_VALUE
1799 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1800 OXM_OF_VLAN_VID(0000)
1801 OXM_OF_VLAN_VID(1123)
1802 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1803 OXM_OF_VLAN_VID(0123)
1804 OXM_OF_VLAN_VID_W(0123/0123)
1805 OXM_OF_VLAN_VID_W(0123/0123)
1806 OXM_OF_VLAN_VID_W(0123/1123)
1807 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1808 OXM_OF_VLAN_VID(1123)
1809 OXM_OF_VLAN_VID(1123)
1811 OXM_OF_VLAN_VID_W(1103/1f0f)
1812 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1813 OXM_OF_VLAN_VID_W(1000/1000)
1814 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1817 nx_pull_match() returned error OFPBMC_BAD_VALUE
1818 nx_pull_match() returned error OFPBMC_BAD_VALUE
1819 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
1820 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1823 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1824 nx_pull_match() returned error OFPBMC_BAD_VALUE
1825 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1828 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1829 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1830 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1833 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1834 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1835 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1836 OXM_OF_ETH_TYPE(0800)
1837 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1838 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1841 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1842 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1843 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1844 OXM_OF_ETH_TYPE(0800)
1845 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1846 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1849 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1850 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1851 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1852 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1853 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1855 # TCP destination port
1856 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1857 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1858 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1859 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1860 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1863 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1864 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1865 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1866 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1867 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1869 # UDP destination port
1870 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1871 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1872 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1873 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1874 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1877 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
1878 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
1879 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
1880 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
1881 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1883 # SCTP destination port
1884 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
1885 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
1886 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
1887 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
1888 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1891 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1892 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1895 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1896 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1897 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1898 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1901 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1902 nx_pull_match() returned error OFPBMC_BAD_VALUE
1903 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1904 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1905 nx_pull_match() returned error OFPBMC_DUP_FIELD
1907 # ARP source protocol address
1908 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1909 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1910 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1911 OXM_OF_ETH_TYPE(0806)
1912 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1913 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1915 # ARP destination protocol address
1916 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1917 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1918 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1919 OXM_OF_ETH_TYPE(0806)
1920 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1921 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1923 # ARP source hardware address
1924 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1925 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1926 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1927 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1928 OXM_OF_ETH_TYPE(0806)
1929 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1931 # ARP destination hardware address
1932 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1933 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1934 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1935 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1936 OXM_OF_ETH_TYPE(0806)
1937 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1940 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1941 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1942 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1943 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1944 OXM_OF_ETH_TYPE(86dd)
1945 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1948 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1949 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1950 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1951 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1952 OXM_OF_ETH_TYPE(86dd)
1953 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1956 nx_pull_match() returned error OFPBMC_BAD_VALUE
1957 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1958 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1959 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1960 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1961 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1962 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1963 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1964 OXM_OF_ETH_TYPE(86dd)
1966 # ND source hardware address
1967 OXM_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)
1968 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1969 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1970 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1972 # ND destination hardware address
1973 OXM_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)
1974 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1975 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1976 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1978 # Invalid field number.
1979 nx_pull_match() returned error OFPBMC_BAD_FIELD
1982 # Check that at least the first warning made it. (It's rate-limited
1983 # so a variable number could show up, especially under valgrind etc.)
1984 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
1985 nx_match|WARN|NXM/OXM entry OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000) has 1-bits in value for bits wildcarded by the mask. (Future versions of OVS may report this as an OpenFlow error.)
1988 # Check that there wasn't any other stderr output.
1989 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
1992 AT_SETUP([ovs-ofctl parse-oxm loose])
1994 AT_DATA([oxm.txt], [dnl
1995 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1998 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1999 nx_pull_match() returned error OFPBMC_BAD_FIELD
2002 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
2003 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2007 dnl Check all of the patterns mentioned in the "VLAN Matching" section
2008 dnl in the DESIGN file at top level.
2009 AT_SETUP([ovs-ofctl check-vlan])
2013 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2015 NXM: <any> -> 0000/0000
2016 OXM: <any> -> 0000/0000,--
2017 OF1.0: 0000/1,00/1 -> 0000/0000
2018 OF1.1: 0000/1,00/1 -> 0000/0000
2022 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2023 vlan_tci=0x0000 -> 0000/ffff
2024 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
2025 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
2026 OF1.0: ffff/0,00/1 -> 0000/ffff
2027 OF1.1: ffff/0,00/1 -> 0000/ffff
2031 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2032 dl_vlan=2748 -> 1abc/1fff
2033 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
2034 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
2035 OF1.0: 0abc/0,00/1 -> 1abc/1fff
2036 OF1.1: 0abc/0,00/1 -> 1abc/1fff
2040 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2041 dl_vlan_pcp=5 -> b000/f000
2042 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
2043 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
2044 OF1.0: 0000/1,05/0 -> b000/f000
2045 OF1.1: fffe/0,05/0 -> b000/f000
2049 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2050 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2051 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
2052 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
2053 OF1.0: 0abc/0,05/0 -> babc/ffff
2054 OF1.1: 0abc/0,05/0 -> babc/ffff
2058 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2059 vlan_tci=0x0000/0x0fff -> 0000/0fff
2060 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
2061 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2062 OF1.0: 0000/0,00/1 -> 1000/1fff
2063 OF1.1: 0000/0,00/1 -> 1000/1fff
2067 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2068 vlan_tci=0x0000/0xf000 -> 0000/f000
2069 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
2070 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
2071 OF1.0: ffff/0,00/1 -> 0000/ffff
2072 OF1.1: ffff/0,00/1 -> 0000/ffff
2076 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2077 vlan_tci=0x0000/0xefff -> 0000/efff
2078 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
2079 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2080 OF1.0: 0000/0,00/0 -> 1000/ffff
2081 OF1.1: 0000/0,00/0 -> 1000/ffff
2085 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2086 vlan_tci=0x1001/0x1001 -> 1001/1001
2087 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
2088 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
2089 OF1.0: 0001/0,00/1 -> 1001/1fff
2090 OF1.1: 0001/0,00/1 -> 1001/1fff
2094 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2095 vlan_tci=0x3000/0x3000 -> 3000/3000
2096 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
2097 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
2098 OF1.0: 0000/1,01/0 -> 3000/f000
2099 OF1.1: fffe/0,01/0 -> 3000/f000
2104 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2105 dnl such as tunnels and metadata.
2106 AT_SETUP([ovs-ofctl -F option and NXM features])
2107 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
2108 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2110 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
2111 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
2115 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2116 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2117 dnl additionally show up as the top 32 bits of the cookie.) This checks
2118 dnl for regression against bug #4566.
2119 AT_SETUP([ovs-ofctl -F option with flow_mods])
2121 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
2122 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
2124 tun_id=0x12345678 actions=drop
2129 dnl Check that "-F openflow10" is really honored on dump-flows.
2130 dnl (If it isn't, then dump-flows will show the register match.)
2131 AT_SETUP([ovs-ofctl dump-flows honors -F option])
2133 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
2134 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
2141 dnl Check that "-F openflow10" fails on dump-flows if the requested match
2142 dnl can't be represented in OpenFlow 1.0.
2143 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
2145 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
2146 [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2151 dnl Check that add-flow reports non-normalized flows (feature #5029).
2152 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
2154 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2156 ofp_util|INFO|normalization changed ofp_match, details:
2157 ofp_util|INFO| pre: nw_src=1.2.3.4
2158 ofp_util|INFO|post: @&t@
2163 dnl Check that --sort and --rsort works with dump-flows
2164 dnl Default field is 'priority'. Flow entries are displayed based
2165 dnl on field to sort.
2166 AT_SETUP([ovs-ofctl dump-flows with sorting])
2169 AT_DATA([allflows.txt], [[
2170 priority=4,in_port=23213 actions=output:42
2171 priority=5,in_port=1029 actions=output:43
2172 priority=7,in_port=1029 actions=output:43
2173 priority=3,in_port=1028 actions=output:44
2174 priority=1,in_port=1026 actions=output:45
2175 priority=6,in_port=1027 actions=output:64
2176 priority=2,in_port=1025 actions=output:47
2177 priority=8,tcp,tp_src=5 actions=drop
2178 priority=9,tcp,tp_src=6 actions=drop
2181 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2183 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2184 priority=1,in_port=1026 actions=output:45
2185 priority=2,in_port=1025 actions=output:47
2186 priority=3,in_port=1028 actions=output:44
2187 priority=4,in_port=23213 actions=output:42
2188 priority=5,in_port=1029 actions=output:43
2189 priority=6,in_port=1027 actions=output:64
2190 priority=7,in_port=1029 actions=output:43
2191 priority=8,tcp,tp_src=5 actions=drop
2192 priority=9,tcp,tp_src=6 actions=drop
2194 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2195 priority=9,tcp,tp_src=6 actions=drop
2196 priority=8,tcp,tp_src=5 actions=drop
2197 priority=7,in_port=1029 actions=output:43
2198 priority=6,in_port=1027 actions=output:64
2199 priority=5,in_port=1029 actions=output:43
2200 priority=4,in_port=23213 actions=output:42
2201 priority=3,in_port=1028 actions=output:44
2202 priority=2,in_port=1025 actions=output:47
2203 priority=1,in_port=1026 actions=output:45
2205 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2206 priority=2,in_port=1025 actions=output:47
2207 priority=1,in_port=1026 actions=output:45
2208 priority=6,in_port=1027 actions=output:64
2209 priority=3,in_port=1028 actions=output:44
2210 priority=7,in_port=1029 actions=output:43
2211 priority=5,in_port=1029 actions=output:43
2212 priority=4,in_port=23213 actions=output:42
2213 priority=9,tcp,tp_src=6 actions=drop
2214 priority=8,tcp,tp_src=5 actions=drop
2216 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2217 priority=4,in_port=23213 actions=output:42
2218 priority=7,in_port=1029 actions=output:43
2219 priority=5,in_port=1029 actions=output:43
2220 priority=3,in_port=1028 actions=output:44
2221 priority=6,in_port=1027 actions=output:64
2222 priority=1,in_port=1026 actions=output:45
2223 priority=2,in_port=1025 actions=output:47
2224 priority=9,tcp,tp_src=6 actions=drop
2225 priority=8,tcp,tp_src=5 actions=drop
2227 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2228 priority=8,tcp,tp_src=5 actions=drop
2229 priority=9,tcp,tp_src=6 actions=drop
2230 priority=7,in_port=1029 actions=output:43
2231 priority=6,in_port=1027 actions=output:64
2232 priority=5,in_port=1029 actions=output:43
2233 priority=4,in_port=23213 actions=output:42
2234 priority=3,in_port=1028 actions=output:44
2235 priority=2,in_port=1025 actions=output:47
2236 priority=1,in_port=1026 actions=output:45
2239 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2240 [ priority=2,in_port=1025 actions=output:47
2241 priority=1,in_port=1026 actions=output:45
2242 priority=6,in_port=1027 actions=output:64
2243 priority=3,in_port=1028 actions=output:44
2244 priority=7,in_port=1029 actions=output:43
2245 priority=5,in_port=1029 actions=output:43
2246 priority=4,in_port=23213 actions=output:42
2247 priority=8,tcp,tp_src=5 actions=drop
2248 priority=9,tcp,tp_src=6 actions=drop
2253 AT_SETUP([ovs-ofctl diff-flows])
2256 # Add tons of flows to br0.
2257 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2258 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2260 # Dump them and compare against what we expect by hand, then with diff-flows.
2261 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2262 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2264 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2266 # Remove even-numbered flows, compare again.
2267 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2268 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2269 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2270 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2271 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2272 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2277 dnl ofpacts that differ bytewise don't necessarily differ when
2278 dnl converted to another representation, such as OpenFlow 1.0
2279 dnl or to a string. "resubmit(,1)" is an example of an action
2280 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2281 dnl values even though this doesn't affect the string format.
2283 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2284 dnl false ofpacts differences.
2285 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2287 AT_DATA([flows.txt], [actions=resubmit(,1)
2289 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2290 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2291 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2292 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2293 -dl_vlan=9 idle_timeout=60 actions=output:1
2295 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2296 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2297 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2302 AT_SETUP([ovs-ofctl -F and -O interaction])
2303 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2304 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2306 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2307 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow11) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2309 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2310 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10, OpenFlow11) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2312 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2313 [ovs-ofctl: missing command name; use --help for help
2315 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2316 [ovs-ofctl: missing command name; use --help for help
2318 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2319 [ovs-ofctl: missing command name; use --help for help
2323 AT_SETUP([ovs-ofctl ofp-parse])
2324 # Test the echo request/reply messages (0 payload).
2325 AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2326 AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2327 OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2328 OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2331 # Test the hello (xid:1 3-byte payload).
2332 AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2333 AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2334 OFPT_HELLO (xid=0x1):
2335 version bitmap: 0x01
2336 unknown data in hello:
2337 00000000 01 00 00 0b 00 00 00 01-41 42 43 |........ABC |