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.1)])
143 AT_DATA([flows.txt], [[
145 tcp,tp_src=123,out_port=5,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=mod_nw_ecn:2,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 ip,actions=set_field:10.4.3.77->ip_src
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 OpenFlow11 parse-flows flows.txt
161 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
162 [[usable protocols: any
163 chosen protocol: OpenFlow11
164 OFPT_FLOW_MOD (OF1.1): ADD table:255 tcp,tp_src=123 out_port:5 actions=FLOOD
165 OFPT_FLOW_MOD (OF1.1): ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
166 OFPT_FLOW_MOD (OF1.1): ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
167 OFPT_FLOW_MOD (OF1.1): ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
168 OFPT_FLOW_MOD (OF1.1): ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
169 OFPT_FLOW_MOD (OF1.1): ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
170 OFPT_FLOW_MOD (OF1.1): 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.1): ADD table:255 ip actions=load:0xa04034d->NXM_OF_IP_SRC[]
172 OFPT_FLOW_MOD (OF1.1): ADD table:255 sctp actions=drop
173 OFPT_FLOW_MOD (OF1.1): ADD table:255 sctp actions=drop
174 OFPT_FLOW_MOD (OF1.1): ADD table:255 in_port=0 actions=resubmit:0
175 OFPT_FLOW_MOD (OF1.1): 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 (OpenFlow 1.2)])
180 AT_DATA([flows.txt], [[
182 tcp,tp_src=123,actions=flood
183 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
184 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
185 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
186 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
187 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
188 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
189 ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
190 sctp actions=set_field:3334->sctp_src
191 sctp actions=set_field:4445->sctp_dst
192 in_port=0 actions=resubmit:0
193 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
196 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
198 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
199 [[usable protocols: NXM,OXM
200 chosen protocol: OXM-OpenFlow12
201 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,tp_src=123 actions=FLOOD
202 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
203 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
204 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
205 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
206 OFPT_FLOW_MOD (OF1.2): ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
207 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
208 OFPT_FLOW_MOD (OF1.2): ADD table:255 ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
209 OFPT_FLOW_MOD (OF1.2): ADD table:255 sctp actions=set_field:3334->sctp_src
210 OFPT_FLOW_MOD (OF1.2): ADD table:255 sctp actions=set_field:4445->sctp_dst
211 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=0 actions=resubmit:0
212 OFPT_FLOW_MOD (OF1.2): ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
216 AT_SETUP([ovs-ofctl parse-flows (With Tunnel-Parameters)])
217 AT_DATA([flows.txt], [[
218 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
221 AT_CHECK([ovs-ofctl parse-flows flows.txt
222 ], [1], [usable protocols: none
228 AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
229 AT_DATA([flows.txt], [[
230 skb_priority=0x12341234,tcp,tp_src=123,actions=flood
233 AT_CHECK([ovs-ofctl parse-flows flows.txt
234 ], [1], [usable protocols: none
240 AT_SETUP([ovs-ofctl parse-flows (NXM)])
241 AT_DATA([flows.txt], [[
243 tcp,tp_src=123,actions=flood
244 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
245 pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
246 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
247 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
248 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
249 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
250 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
251 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
252 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
253 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])
255 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
256 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
257 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
258 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
259 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
260 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
261 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
262 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
263 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
264 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
265 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
266 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
267 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
268 check_overlap,actions=output:1,exit,output:2
269 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
270 actions=controller(max_len=123,reason=invalid_ttl,id=555)
271 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
274 AT_CHECK([ovs-ofctl parse-flows flows.txt
276 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
277 [[usable protocols: OXM,NXM+table_id
278 chosen protocol: NXM+table_id
279 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
280 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
281 NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
282 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
283 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
284 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
285 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
286 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
287 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
288 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
289 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])
290 NXT_FLOW_MOD: ADD table:1 actions=drop
291 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
292 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
293 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
294 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
295 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
296 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
297 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
298 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
299 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
300 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
301 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
302 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
303 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
304 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
305 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
306 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
307 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
311 AT_SETUP([ovs-ofctl -F nxm parse-flows])
312 AT_DATA([flows.txt], [
314 tcp,tp_src=123,actions=flood
315 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
316 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
317 ipv6,ipv6_label=0x12345 actions=2
318 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
319 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
320 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
321 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
322 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
323 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
324 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
325 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
326 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
327 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
328 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
329 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
330 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
331 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
332 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
333 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
334 tun_id=0x1234,cookie=0x5678,actions=flood
336 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
337 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
338 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
339 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
340 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
341 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
343 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
344 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
345 usable protocols: NXM,OXM
346 chosen protocol: NXM-table_id
347 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
348 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
349 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
350 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
351 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
352 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
353 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
354 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
355 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
356 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
357 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
358 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
359 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
360 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
361 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
362 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
363 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
364 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
365 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
366 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
367 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
368 NXT_FLOW_MOD: ADD actions=drop
369 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
370 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
371 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
372 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
373 NXT_FLOW_MOD: ADD actions=drop
374 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
378 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
379 AT_DATA([flows.txt], [[
381 tcp,tp_src=123,actions=flood
382 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
383 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
384 ipv6,ipv6_label=0x12345 actions=2
385 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
386 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
387 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
388 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
389 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
390 sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
391 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
392 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
393 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
394 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
395 sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
396 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
397 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
398 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
399 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
400 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
401 tun_id=0x1234,cookie=0x5678,actions=flood
403 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[]
404 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
405 actions=push:NXM_NX_REG0[0..31],pop:NXM_NX_REG0[]
406 vlan_tci=0x1123/0x1fff,actions=drop
407 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
409 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
410 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
411 [[usable protocols: NXM,OXM
412 chosen protocol: NXM-table_id
413 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
414 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
415 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
416 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
417 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
418 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
419 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
420 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
421 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
422 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
423 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
424 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
425 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
426 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
427 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
428 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
429 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
430 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
431 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
432 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
433 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
434 NXT_FLOW_MOD: ADD <any> actions=drop
435 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[]
436 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
437 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
438 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
439 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
443 AT_SETUP([ovs-ofctl parse-nx-match])
444 AT_KEYWORDS([nx-match])
445 AT_DATA([nx-match.txt], [dnl
453 NXM_OF_ETH_DST(0002e30f80a4)
454 NXM_OF_ETH_DST_W(010000000000/010000000000)
455 NXM_OF_ETH_DST_W(000000000000/010000000000)
456 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
457 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
458 NXM_OF_ETH_DST_W(60175619848f/000000000000)
459 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
460 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
463 NXM_OF_ETH_SRC(020898456ddb)
464 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
465 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
466 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
469 NXM_OF_ETH_TYPE(0800)
470 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
473 NXM_OF_VLAN_TCI(f009)
474 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
475 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
476 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
477 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
478 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
479 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
480 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
481 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
482 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
485 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
486 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
490 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
491 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
495 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
496 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
500 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
501 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
505 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
506 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
507 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
508 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
509 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
510 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
511 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
514 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
515 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
516 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
517 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
518 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
519 NXM_OF_IP_DST(ac100014)
520 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
523 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
524 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
525 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
526 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
527 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
529 # TCP destination port
530 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
531 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
532 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
533 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
534 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
537 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
538 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
539 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
540 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
541 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
543 # UDP destination port
544 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
545 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
546 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
547 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
548 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
551 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
552 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
555 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
556 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
557 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
561 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
562 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
563 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
565 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
567 # ARP source protocol address
568 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
569 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
570 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
571 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
572 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
573 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
574 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
576 # ARP destination protocol address
577 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
578 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
579 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
580 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
581 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
582 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
583 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
585 # ARP source hardware address
586 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
587 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
588 NXM_NX_ARP_SHA(0002e30f80a4)
590 # ARP destination hardware address
591 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
592 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
593 NXM_NX_ARP_THA(0002e30f80a4)
596 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
597 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
598 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
600 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
602 # RARP source protocol address
603 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
604 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
605 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
606 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
607 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/00000000)
608 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
609 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
611 # RARP destination protocol address
612 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
613 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
614 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
615 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
616 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/00000000)
617 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
618 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
620 # RARP source hardware address
621 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
622 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
623 NXM_NX_ARP_SHA(0002e30f80a4)
625 # RARP destination hardware address
626 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
627 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
628 NXM_NX_ARP_THA(0002e30f80a4)
631 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
632 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
633 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
634 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
635 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
636 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
637 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
640 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
641 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
642 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
643 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
644 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
645 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
648 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
649 NXM_NX_IPV6_LABEL(0000000f)
650 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
653 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
654 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
655 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
656 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
657 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
658 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
660 # ND source hardware address
661 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)
662 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)
663 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)
664 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)
666 # ND destination hardware address
667 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)
668 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)
669 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)
670 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)
673 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
674 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
675 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
676 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
677 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
678 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
679 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
680 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
681 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
682 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
683 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
684 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
685 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
688 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
689 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
690 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
691 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
692 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
693 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
694 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
695 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
696 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
697 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
698 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
699 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
700 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
703 NXM_NX_COOKIE(00000000abcdef01)
704 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
705 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
706 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
709 NXM_NX_TUN_ID(00000000abcdef01)
710 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
711 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
712 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
715 NXM_NX_REG0(acebdf56)
716 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
717 NXM_NX_REG0_W(a0e0d050/ffffffff)
718 NXM_NX_REG0_W(a0e0d050/00000000)
720 # Invalid field number.
723 # Unimplemented registers.
725 # This test assumes that at least two registers, but fewer than 16,
726 # registers are implemented.
728 00010108(12345678/12345678)
730 00011f08(12345678/12345678)
732 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
740 NXM_OF_ETH_DST(0002e30f80a4)
741 NXM_OF_ETH_DST_W(010000000000/010000000000)
742 NXM_OF_ETH_DST_W(000000000000/010000000000)
743 NXM_OF_ETH_DST_W(010000000000/010000000000)
744 NXM_OF_ETH_DST(0002e30f80a4)
746 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
747 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
750 NXM_OF_ETH_SRC(020898456ddb)
751 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
752 NXM_OF_ETH_SRC(020898456ddb)
756 NXM_OF_ETH_TYPE(0800)
757 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
760 NXM_OF_VLAN_TCI(f009)
761 nx_pull_match() returned error OFPBMC_DUP_FIELD
762 NXM_OF_VLAN_TCI(0000)
763 NXM_OF_VLAN_TCI(3123)
764 NXM_OF_VLAN_TCI(0123)
765 NXM_OF_VLAN_TCI_W(1123/1fff)
766 NXM_OF_VLAN_TCI(1123)
768 NXM_OF_VLAN_TCI_W(f000/f000)
769 NXM_OF_VLAN_TCI_W(0000/e000)
772 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
773 nx_pull_match() returned error OFPBMC_BAD_VALUE
774 nx_pull_match() returned error OFPBMC_BAD_PREREQ
777 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
778 nx_pull_match() returned error OFPBMC_BAD_VALUE
779 nx_pull_match() returned error OFPBMC_BAD_PREREQ
782 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
783 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
784 nx_pull_match() returned error OFPBMC_BAD_PREREQ
787 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
788 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
789 nx_pull_match() returned error OFPBMC_BAD_PREREQ
792 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
793 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
794 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
795 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
796 NXM_OF_ETH_TYPE(0800)
797 nx_pull_match() returned error OFPBMC_BAD_PREREQ
798 nx_pull_match() returned error OFPBMC_BAD_PREREQ
801 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
802 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
803 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
804 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
805 NXM_OF_ETH_TYPE(0800)
806 nx_pull_match() returned error OFPBMC_BAD_PREREQ
807 nx_pull_match() returned error OFPBMC_BAD_PREREQ
810 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
811 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
812 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
813 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
814 nx_pull_match() returned error OFPBMC_BAD_PREREQ
816 # TCP destination port
817 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
818 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
819 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
820 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
821 nx_pull_match() returned error OFPBMC_BAD_PREREQ
824 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
825 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
826 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
827 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
828 nx_pull_match() returned error OFPBMC_BAD_PREREQ
830 # UDP destination port
831 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
832 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
833 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
834 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
835 nx_pull_match() returned error OFPBMC_BAD_PREREQ
838 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
839 nx_pull_match() returned error OFPBMC_BAD_PREREQ
842 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
843 nx_pull_match() returned error OFPBMC_BAD_PREREQ
844 nx_pull_match() returned error OFPBMC_BAD_PREREQ
845 nx_pull_match() returned error OFPBMC_BAD_PREREQ
848 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
849 nx_pull_match() returned error OFPBMC_BAD_VALUE
850 nx_pull_match() returned error OFPBMC_BAD_PREREQ
851 nx_pull_match() returned error OFPBMC_BAD_PREREQ
852 nx_pull_match() returned error OFPBMC_DUP_FIELD
854 # ARP source protocol address
855 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
856 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
857 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
858 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
859 NXM_OF_ETH_TYPE(0806)
860 nx_pull_match() returned error OFPBMC_BAD_PREREQ
861 nx_pull_match() returned error OFPBMC_BAD_PREREQ
863 # ARP destination protocol address
864 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
865 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
866 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
867 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
868 NXM_OF_ETH_TYPE(0806)
869 nx_pull_match() returned error OFPBMC_BAD_PREREQ
870 nx_pull_match() returned error OFPBMC_BAD_PREREQ
872 # ARP source hardware address
873 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
874 nx_pull_match() returned error OFPBMC_BAD_PREREQ
875 nx_pull_match() returned error OFPBMC_BAD_PREREQ
877 # ARP destination hardware address
878 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
879 nx_pull_match() returned error OFPBMC_BAD_PREREQ
880 nx_pull_match() returned error OFPBMC_BAD_PREREQ
883 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
884 nx_pull_match() returned error OFPBMC_BAD_VALUE
885 nx_pull_match() returned error OFPBMC_BAD_PREREQ
886 nx_pull_match() returned error OFPBMC_BAD_PREREQ
887 nx_pull_match() returned error OFPBMC_DUP_FIELD
889 # RARP source protocol address
890 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
891 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
892 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
893 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
894 NXM_OF_ETH_TYPE(8035)
895 nx_pull_match() returned error OFPBMC_BAD_PREREQ
896 nx_pull_match() returned error OFPBMC_BAD_PREREQ
898 # RARP destination protocol address
899 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
900 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
901 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(40201234/77777777)
902 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
903 NXM_OF_ETH_TYPE(8035)
904 nx_pull_match() returned error OFPBMC_BAD_PREREQ
905 nx_pull_match() returned error OFPBMC_BAD_PREREQ
907 # RARP source hardware address
908 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
909 nx_pull_match() returned error OFPBMC_BAD_PREREQ
910 nx_pull_match() returned error OFPBMC_BAD_PREREQ
912 # RARP destination hardware address
913 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
914 nx_pull_match() returned error OFPBMC_BAD_PREREQ
915 nx_pull_match() returned error OFPBMC_BAD_PREREQ
918 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
919 nx_pull_match() returned error OFPBMC_BAD_PREREQ
920 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
921 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
922 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
923 NXM_OF_ETH_TYPE(86dd)
924 nx_pull_match() returned error OFPBMC_BAD_PREREQ
927 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
928 nx_pull_match() returned error OFPBMC_BAD_PREREQ
929 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
930 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
931 NXM_OF_ETH_TYPE(86dd)
932 nx_pull_match() returned error OFPBMC_BAD_PREREQ
935 nx_pull_match() returned error OFPBMC_BAD_VALUE
936 nx_pull_match() returned error OFPBMC_BAD_PREREQ
937 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
940 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
941 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
942 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
943 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
944 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
945 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
947 # ND source hardware address
948 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)
949 nx_pull_match() returned error OFPBMC_BAD_PREREQ
950 nx_pull_match() returned error OFPBMC_BAD_PREREQ
951 nx_pull_match() returned error OFPBMC_BAD_PREREQ
953 # ND destination hardware address
954 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)
955 nx_pull_match() returned error OFPBMC_BAD_PREREQ
956 nx_pull_match() returned error OFPBMC_BAD_PREREQ
957 nx_pull_match() returned error OFPBMC_BAD_PREREQ
960 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
961 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
962 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
963 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
964 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
965 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
966 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
967 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
968 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
969 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
970 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
971 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
972 nx_pull_match() returned error OFPBMC_BAD_VALUE
975 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
976 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
977 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
978 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
979 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
980 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
981 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
982 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
983 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
984 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
985 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
986 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
987 nx_pull_match() returned error OFPBMC_BAD_VALUE
990 NXM_NX_COOKIE(00000000abcdef01)
991 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
992 NXM_NX_COOKIE(84200000abcdef01)
996 NXM_NX_TUN_ID(00000000abcdef01)
997 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
998 NXM_NX_TUN_ID(84200000abcdef01)
1002 NXM_NX_REG0(acebdf56)
1003 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
1004 NXM_NX_REG0(a0e0d050)
1007 # Invalid field number.
1008 nx_pull_match() returned error OFPBMC_BAD_FIELD
1010 # Unimplemented registers.
1012 # This test assumes that at least two registers, but fewer than 16,
1013 # registers are implemented.
1014 NXM_NX_REG0(12345678)
1015 NXM_NX_REG0_W(12345678/12345678)
1016 nx_pull_match() returned error OFPBMC_BAD_FIELD
1017 nx_pull_match() returned error OFPBMC_BAD_FIELD
1020 # Check that at least the first warning made it. (It's rate-limited
1021 # so a variable number could show up, especially under valgrind etc.)
1022 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
1023 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.)
1026 # Check that there wasn't any other stderr output.
1027 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
1030 AT_SETUP([ovs-ofctl parse-ofp10-match])
1031 AT_KEYWORDS([OF1.0])
1032 AT_DATA([test-data], [dnl
1034 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1035 xxxxxxxx xxxxxxxx xxxx xxxx
1037 # dl_src=00:01:02:03:04:05
1038 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1039 xxxxxxxx xxxxxxxx xxxx xxxx
1041 # dl_dst=10:20:30:40:50:60
1042 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1043 xxxxxxxx xxxxxxxx xxxx xxxx
1046 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1047 xxxxxxxx xxxxxxxx xxxx xxxx
1050 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1051 xxxxxxxx xxxxxxxx xxxx xxxx
1053 # dl_vlan=291,dl_vlan_pcp=4
1054 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1055 xxxxxxxx xxxxxxxx xxxx xxxx
1058 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1059 xxxxxxxx xxxxxxxx xxxx xxxx
1061 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
1062 dnl OVS ignores it and drops it on output.
1066 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1067 xxxxxxxx xxxxxxxx xxxx xxxx
1069 dnl Invalid VID and PCP discards out-of-range bits:
1070 # dl_vlan=256,dl_vlan_pcp=7
1073 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1074 xxxxxxxx xxxxxxxx xxxx xxxx
1077 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1078 xxxxxxxx xxxxxxxx xxxx xxxx
1081 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1082 xxxxxxxx xxxxxxxx xxxx xxxx
1084 dnl Ignore nw_proto if not IP or ARP:
1085 # dl_type=0x1234,nw_proto=5
1086 # normal: 3: cf -> ef
1087 # normal: 25: 05 -> 00
1088 & ofp_util|INFO|normalization changed ofp_match, details:
1089 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1090 & ofp_util|INFO|post: dl_type=0x1234
1091 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1092 xxxxxxxx xxxxxxxx xxxx xxxx
1095 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1096 xxxxxxxx xxxxxxxx xxxx xxxx
1098 dnl Ignore nw_tos if not IP:
1101 # normal: 1: 18 -> 38
1102 # normal: 24: 04 -> 00
1103 & ofp_util|INFO|normalization changed ofp_match, details:
1104 & ofp_util|INFO| pre: arp,nw_tos=4
1105 & ofp_util|INFO|post: arp
1106 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1107 xxxxxxxx xxxxxxxx xxxx xxxx
1109 dnl Low 2 bits of invalid TOS are forced to 0:
1112 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1113 xxxxxxxx xxxxxxxx xxxx xxxx
1116 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1117 xxxxxxxx xxxxxxxx xxxx xxxx
1119 # ip,nw_src=192.168.128.85
1120 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1121 c0a88055 xxxxxxxx xxxx xxxx
1123 # ip,nw_src=192.168.128.0/24
1125 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1126 c0a88055 xxxxxxxx xxxx xxxx
1128 # ip,nw_dst=192.168.128.85
1129 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1130 xxxxxxxx c0a88055 xxxx xxxx
1132 # ip,nw_dst=192.168.128.0/24
1134 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1135 xxxxxxxx c0a88055 xxxx xxxx
1137 # arp,arp_spa=192.168.128.85
1138 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1139 c0a88055 xxxxxxxx xxxx xxxx
1141 # arp,arp_spa=192.168.128.0/24
1143 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1144 c0a88055 xxxxxxxx xxxx xxxx
1146 # arp,arp_tpa=192.168.128.85
1147 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1148 xxxxxxxx c0a88055 xxxx xxxx
1150 # arp,arp_tpa=192.168.128.0/24
1152 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1153 xxxxxxxx c0a88055 xxxx xxxx
1155 dnl Ignore nw_src if not IP or ARP:
1156 # dl_type=0x1234,nw_src=192.168.128.0/24
1158 # normal: 2: 08 -> 20
1159 # normal: 28: c0 -> 00
1160 # normal: 29: a8 -> 00
1161 # normal: 30: 80 -> 00
1162 & ofp_util|INFO|normalization changed ofp_match, details:
1163 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1164 & ofp_util|INFO|post: dl_type=0x1234
1165 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1166 c0a88055 xxxxxxxx xxxx xxxx
1168 dnl Ignore nw_dst if not IP or ARP:
1169 # dl_type=0x1234,nw_dst=192.168.128.0/24
1171 # normal: 1: 32 -> 38
1172 # normal: 32: c0 -> 00
1173 # normal: 33: a8 -> 00
1174 # normal: 34: 80 -> 00
1175 & ofp_util|INFO|normalization changed ofp_match, details:
1176 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1177 & ofp_util|INFO|post: dl_type=0x1234
1178 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1179 xxxxxxxx c0a88055 xxxx xxxx
1182 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1183 xxxxxxxx xxxxxxxx 01bb xxxx
1186 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1187 xxxxxxxx xxxxxxxx xxxx 01bb
1190 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1191 xxxxxxxx xxxxxxxx 01bb xxxx
1194 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1195 xxxxxxxx xxxxxxxx xxxx 01bb
1198 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1199 xxxxxxxx xxxxxxxx 01bb xxxx
1202 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1203 xxxxxxxx xxxxxxxx xxxx 01bb
1206 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1207 xxxxxxxx xxxxxxxx 0005 xxxx
1210 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1211 xxxxxxxx xxxxxxxx xxxx 0008
1213 dnl Ignore tp_src if not TCP/UDP/SCTP:
1214 # ip,nw_proto=21,tp_src=443
1215 # normal: 3: 8f -> cf
1216 # normal: 36: 01 -> 00
1217 # normal: 37: bb -> 00
1218 & ofp_util|INFO|normalization changed ofp_match, details:
1219 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1220 & ofp_util|INFO|post: ip,nw_proto=21
1221 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1222 xxxxxxxx xxxxxxxx 01bb xxxx
1224 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1225 # ip,nw_proto=21,tp_dst=443
1226 # normal: 3: 4f -> cf
1227 # normal: 38: 01 -> 00
1228 # normal: 39: bb -> 00
1229 dnl The normalization details are suppressed here due to rate-limiting.
1230 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1231 xxxxxxxx xxxxxxxx xxxx 01bb
1234 sed '/^[[#&]]/d' < test-data > input.txt
1235 sed -n 's/^# //p; /^$/p' < test-data > expout
1236 sed -n 's/^& //p' < test-data > experr
1237 AT_CAPTURE_FILE([input.txt])
1238 AT_CAPTURE_FILE([expout])
1239 AT_CAPTURE_FILE([experr])
1241 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1242 [0], [expout], [experr])
1245 AT_SETUP([ovs-ofctl parse-ofp11-match])
1246 AT_KEYWORDS([OF1.1])
1247 AT_DATA([test-data], [dnl
1249 0000 0058 fffffffe 000003fe dnl
1250 000000000000ffffffffffff 000000000000ffffffffffff dnl
1251 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1252 00000000 00 000000 0000000000000000ffffffffffffffff
1254 # bad ofp11_match: OFPBMC_BAD_VALUE
1255 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1256 0000 0058 12345678 000003fe dnl
1257 000000000000ffffffffffff 000000000000ffffffffffff dnl
1258 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1259 00000000 00 000000 0000000000000000ffffffffffffffff
1261 # dl_src=00:01:02:03:04:05
1262 0000 0058 00000000 000003ff dnl
1263 000102030405000000000000 000000000000ffffffffffff dnl
1264 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1265 00000000 00 000000 0000000000000000ffffffffffffffff
1267 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1268 0000 0058 00000000 000003ff dnl
1269 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1270 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1271 00000000 00 000000 0000000000000000ffffffffffffffff
1273 # dl_dst=00:01:02:03:04:05
1274 0000 0058 00000000 000003ff dnl
1275 000000000000ffffffffffff 000102030405000000000000 dnl
1276 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1277 00000000 00 000000 0000000000000000ffffffffffffffff
1279 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1280 0000 0058 00000000 000003ff dnl
1281 000000000000ffffffffffff 010000000000feffffffffff dnl
1282 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1283 00000000 00 000000 0000000000000000ffffffffffffffff
1285 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1286 0000 0058 00000000 000003ff dnl
1287 000000000000ffffffffffff 000102030405010000000000 dnl
1288 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1289 00000000 00 000000 0000000000000000ffffffffffffffff
1291 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1292 0000 0058 00000000 000003ff dnl
1293 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1294 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1295 00000000 00 000000 0000000000000000ffffffffffffffff
1297 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1298 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1302 0000 0058 00000001 000003fa dnl
1303 000000000000ffffffffffff 000000000000ffffffffffff dnl
1304 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1305 00000000 00 000000 0000000000000000ffffffffffffffff
1308 0000 0058 00000000 000003fd dnl
1309 000000000000ffffffffffff 000000000000ffffffffffff dnl
1310 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1311 00000000 00 000000 0000000000000000ffffffffffffffff
1315 0000 0058 00000000 000003fd dnl
1316 000000000000ffffffffffff 000000000000ffffffffffff dnl
1317 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1318 00000000 00 000000 0000000000000000ffffffffffffffff
1320 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1321 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1325 0000 0058 00000000 000003f9 dnl
1326 000000000000ffffffffffff 000000000000ffffffffffff dnl
1327 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1328 00000000 00 000000 0000000000000000ffffffffffffffff
1330 # vlan_tci=0x1000/0x1000
1331 0000 0058 00000000 000003fd dnl
1332 000000000000ffffffffffff 000000000000ffffffffffff dnl
1333 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1334 00000000 00 000000 0000000000000000ffffffffffffffff
1336 dnl Try invalid VID:
1337 # bad ofp11_match: OFPBMC_BAD_VALUE
1338 0000 0058 00000000 000003fd dnl
1339 000000000000ffffffffffff 000000000000ffffffffffff dnl
1340 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1341 00000000 00 000000 0000000000000000ffffffffffffffff
1344 0000 0058 00000000 000003f9 dnl
1345 000000000000ffffffffffff 000000000000ffffffffffff dnl
1346 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1347 00000000 00 000000 0000000000000000ffffffffffffffff
1349 # dl_vlan=10,dl_vlan_pcp=6
1350 0000 0058 00000000 000003f9 dnl
1351 000000000000ffffffffffff 000000000000ffffffffffff dnl
1352 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1353 00000000 00 000000 0000000000000000ffffffffffffffff
1356 0000 0058 00000000 000003f7 dnl
1357 000000000000ffffffffffff 000000000000ffffffffffff dnl
1358 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1359 00000000 00 000000 0000000000000000ffffffffffffffff
1362 0000 0058 00000000 000003e7 dnl
1363 000000000000ffffffffffff 000000000000ffffffffffff dnl
1364 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1365 00000000 00 000000 0000000000000000ffffffffffffffff
1367 dnl Try invalid TOS:
1368 # bad ofp11_match: OFPBMC_BAD_VALUE
1369 0000 0058 00000000 000003e7 dnl
1370 000000000000ffffffffffff 000000000000ffffffffffff dnl
1371 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1372 00000000 00 000000 0000000000000000ffffffffffffffff
1375 0000 0058 00000000 000003d7 dnl
1376 000000000000ffffffffffff 000000000000ffffffffffff dnl
1377 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1378 00000000 00 000000 0000000000000000ffffffffffffffff
1381 0000 0058 00000000 000003d7 dnl
1382 000000000000ffffffffffff 000000000000ffffffffffff dnl
1383 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1384 00000000 00 000000 0000000000000000ffffffffffffffff
1386 # ip,nw_src=192.168.128.0/24
1387 0000 0058 00000000 000003f7 dnl
1388 000000000000ffffffffffff 000000000000ffffffffffff dnl
1389 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1390 00000000 00 000000 0000000000000000ffffffffffffffff
1392 # ip,nw_src=128.160.128.0/165.165.165.165
1395 0000 0058 00000000 000003f7 dnl
1396 000000000000ffffffffffff 000000000000ffffffffffff dnl
1397 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1398 00000000 00 000000 0000000000000000ffffffffffffffff
1400 # ip,nw_dst=192.168.128.0/24
1401 0000 0058 00000000 000003f7 dnl
1402 000000000000ffffffffffff 000000000000ffffffffffff dnl
1403 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1404 00000000 00 000000 0000000000000000ffffffffffffffff
1406 # ip,nw_dst=128.160.128.0/165.165.165.165
1409 0000 0058 00000000 000003f7 dnl
1410 000000000000ffffffffffff 000000000000ffffffffffff dnl
1411 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1412 00000000 00 000000 0000000000000000ffffffffffffffff
1414 # arp,arp_spa=192.168.128.0/24
1415 0000 0058 00000000 000003f7 dnl
1416 000000000000ffffffffffff 000000000000ffffffffffff dnl
1417 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1418 00000000 00 000000 0000000000000000ffffffffffffffff
1420 # arp,arp_tpa=192.168.128.0/24
1421 0000 0058 00000000 000003f7 dnl
1422 000000000000ffffffffffff 000000000000ffffffffffff dnl
1423 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1424 00000000 00 000000 0000000000000000ffffffffffffffff
1427 0000 0058 00000000 00000397 dnl
1428 000000000000ffffffffffff 000000000000ffffffffffff dnl
1429 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1430 00000000 00 000000 0000000000000000ffffffffffffffff
1433 0000 0058 00000000 00000357 dnl
1434 000000000000ffffffffffff 000000000000ffffffffffff dnl
1435 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1436 00000000 00 000000 0000000000000000ffffffffffffffff
1439 0000 0058 00000000 00000397 dnl
1440 000000000000ffffffffffff 000000000000ffffffffffff dnl
1441 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1442 00000000 00 000000 0000000000000000ffffffffffffffff
1445 0000 0058 00000000 00000397 dnl
1446 000000000000ffffffffffff 000000000000ffffffffffff dnl
1447 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1448 00000000 00 000000 0000000000000000ffffffffffffffff
1451 0000 0058 00000000 00000357 dnl
1452 000000000000ffffffffffff 000000000000ffffffffffff dnl
1453 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1454 00000000 00 000000 0000000000000000ffffffffffffffff
1457 0000 0058 00000000 00000397 dnl
1458 000000000000ffffffffffff 000000000000ffffffffffff dnl
1459 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1460 00000000 00 000000 0000000000000000ffffffffffffffff
1463 0000 0058 00000000 00000357 dnl
1464 000000000000ffffffffffff 000000000000ffffffffffff dnl
1465 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1466 00000000 00 000000 0000000000000000ffffffffffffffff
1469 0000 0058 00000000 000003d7 dnl
1470 000000000000ffffffffffff 000000000000ffffffffffff dnl
1471 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1472 00000000 00 000000 0000000000000000ffffffffffffffff
1475 0000 0058 00000000 00000397 dnl
1476 000000000000ffffffffffff 000000000000ffffffffffff dnl
1477 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1478 00000000 00 000000 0000000000000000ffffffffffffffff
1481 0000 0058 00000000 00000357 dnl
1482 000000000000ffffffffffff 000000000000ffffffffffff dnl
1483 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1484 00000000 00 000000 0000000000000000ffffffffffffffff
1486 dnl Ignore tp_src if not TCP/UDP/SCTP:
1491 0000 0058 00000000 00000397 dnl
1492 000000000000ffffffffffff 000000000000ffffffffffff dnl
1493 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1494 00000000 00 000000 0000000000000000ffffffffffffffff
1496 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1501 0000 0058 00000000 00000357 dnl
1502 000000000000ffffffffffff 000000000000ffffffffffff dnl
1503 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1504 00000000 00 000000 0000000000000000ffffffffffffffff
1506 dnl mpls_label not yet supported:
1507 # bad ofp11_match: OFPBMC_BAD_TAG
1508 0000 0058 00000000 000002f7 dnl
1509 000000000000ffffffffffff 000000000000ffffffffffff dnl
1510 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1511 12345678 00 000000 0000000000000000ffffffffffffffff
1513 dnl mpls_tc not yet supported:
1514 # bad ofp11_match: OFPBMC_BAD_TAG
1515 0000 0058 00000000 000001f7 dnl
1516 000000000000ffffffffffff 000000000000ffffffffffff dnl
1517 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1518 00000000 5a 000000 0000000000000000ffffffffffffffff
1520 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1528 0000 0058 00000000 000000f7 dnl
1529 000000000000ffffffffffff 000000000000ffffffffffff dnl
1530 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1531 12345678 5a 000000 0000000000000000ffffffffffffffff
1534 # metadata=0x1234567890abcdef
1535 0000 0058 00000000 000003ff dnl
1536 000000000000ffffffffffff 000000000000ffffffffffff dnl
1537 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1538 00000000 00 000000 1234567890abcdef0000000000000000
1541 # metadata=0x5555555555555555/0x5555555555555555
1542 0000 0058 00000000 000003ff dnl
1543 000000000000ffffffffffff 000000000000ffffffffffff dnl
1544 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1545 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1548 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1553 0000 0058 00000000 000003ff dnl
1554 000000000000ffffffffffff 000000000000ffffffffffff dnl
1555 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1556 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1559 sed '/^[[#&]]/d' < test-data > input.txt
1560 sed -n 's/^# //p; /^$/p' < test-data > expout
1561 sed -n 's/^& //p' < test-data > experr
1562 AT_CAPTURE_FILE([input.txt])
1563 AT_CAPTURE_FILE([expout])
1564 AT_CAPTURE_FILE([experr])
1566 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1567 [0], [expout], [experr])
1570 AT_SETUP([ovs-ofctl parse-nx-match loose])
1571 AT_KEYWORDS([nx-match])
1572 AT_DATA([nx-match.txt], [dnl
1573 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1576 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1577 nx_pull_match() returned error OFPBMC_BAD_FIELD
1580 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1581 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1585 AT_SETUP([ovs-ofctl parse-oxm])
1587 AT_DATA([oxm.txt], [dnl
1591 OXM_OF_IN_PORT(00000000)
1592 OXM_OF_IN_PORT(fffffffe)
1595 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1596 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1597 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1598 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1599 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1602 OXM_OF_ETH_DST(0002e30f80a4)
1603 OXM_OF_ETH_DST_W(010000000000/010000000000)
1604 OXM_OF_ETH_DST_W(000000000000/010000000000)
1605 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1606 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1607 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1608 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1611 OXM_OF_ETH_SRC(020898456ddb)
1614 OXM_OF_ETH_TYPE(0800)
1615 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1618 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1619 OXM_OF_VLAN_VID(f009) # Bad Value
1620 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1621 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1622 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1623 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1624 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1625 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1626 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1627 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1628 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1629 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1630 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1631 OXM_OF_VLAN_VID_W(1123/0000) # Packets with or without 802.1Q header
1632 OXM_OF_VLAN_VID_W(1123/1f0f), # Packets with # VID=123 (masked)
1633 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1634 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1635 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1638 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1639 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1640 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1644 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1645 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1649 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1650 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1654 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1655 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1656 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1657 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1658 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1659 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1662 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1663 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1664 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1665 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1666 OXM_OF_IPV4_DST(ac100014)
1667 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1670 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1671 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1672 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1673 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1674 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1676 # TCP destination port
1677 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1678 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1679 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1680 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1681 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1684 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1685 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1686 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1687 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1688 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1690 # UDP destination port
1691 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1692 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1693 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1694 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1695 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1698 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1699 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1700 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1701 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/0000)
1702 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1704 # SCTP destination port
1705 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1706 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1707 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1708 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/0000)
1709 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1712 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1713 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1716 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1717 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1718 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1719 OXM_OF_ICMPV4_CODE(00)
1722 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1723 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1724 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1726 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1728 # ARP source protocol address
1729 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1730 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1731 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1732 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1733 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1734 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1736 # ARP destination protocol address
1737 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1738 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1739 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1740 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1741 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1742 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1744 # ARP source hardware address
1745 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1746 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1747 OXM_OF_ARP_SHA(0002e30f80a4)
1748 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1749 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1750 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1752 # ARP destination hardware address
1753 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1754 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1755 OXM_OF_ARP_THA(0002e30f80a4)
1756 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1757 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1758 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1761 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1762 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1763 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1764 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1765 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1766 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1769 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1770 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1771 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1772 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1773 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1774 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1777 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1778 OXM_OF_IPV6_FLABEL(0000000f)
1779 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1780 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1781 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1782 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1783 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1784 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1785 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1787 # ND source hardware address
1788 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)
1789 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)
1790 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)
1791 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)
1793 # ND destination hardware address
1794 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)
1795 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)
1796 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)
1797 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)
1799 # Invalid field number.
1802 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm < oxm.txt],
1807 OXM_OF_IN_PORT(00000000)
1808 OXM_OF_IN_PORT(fffffffe)
1811 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1812 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1813 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1814 OXM_OF_METADATA(1234567890abcdef)
1818 OXM_OF_ETH_DST(0002e30f80a4)
1819 OXM_OF_ETH_DST_W(010000000000/010000000000)
1820 OXM_OF_ETH_DST_W(000000000000/010000000000)
1821 OXM_OF_ETH_DST_W(010000000000/010000000000)
1822 OXM_OF_ETH_DST(0002e30f80a4)
1824 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1827 OXM_OF_ETH_SRC(020898456ddb)
1830 OXM_OF_ETH_TYPE(0800)
1831 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1834 nx_pull_match() returned error OFPBMC_DUP_FIELD
1835 nx_pull_match() returned error OFPBMC_BAD_VALUE
1836 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1837 OXM_OF_VLAN_VID(0000)
1838 OXM_OF_VLAN_VID(1123)
1839 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1840 OXM_OF_VLAN_VID(0123)
1841 OXM_OF_VLAN_VID_W(0123/0123)
1842 OXM_OF_VLAN_VID_W(0123/0123)
1843 OXM_OF_VLAN_VID_W(0123/1123)
1844 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1845 OXM_OF_VLAN_VID(1123)
1846 OXM_OF_VLAN_VID(1123)
1848 OXM_OF_VLAN_VID_W(1103/1f0f)
1849 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1850 OXM_OF_VLAN_VID_W(1000/1000)
1851 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1854 nx_pull_match() returned error OFPBMC_BAD_VALUE
1855 nx_pull_match() returned error OFPBMC_BAD_VALUE
1856 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
1857 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1860 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1861 nx_pull_match() returned error OFPBMC_BAD_VALUE
1862 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1865 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1866 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1867 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1870 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1871 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1872 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1873 OXM_OF_ETH_TYPE(0800)
1874 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1875 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1878 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1879 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1880 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1881 OXM_OF_ETH_TYPE(0800)
1882 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1883 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1886 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1887 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1888 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1889 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1890 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1892 # TCP destination port
1893 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1894 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1895 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1896 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1897 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1900 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1901 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1902 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1903 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1904 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1906 # UDP destination port
1907 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1908 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1909 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1910 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1911 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1914 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
1915 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
1916 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
1917 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
1918 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1920 # SCTP destination port
1921 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
1922 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
1923 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
1924 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
1925 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1928 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1929 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1932 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1933 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1934 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1935 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1938 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1939 nx_pull_match() returned error OFPBMC_BAD_VALUE
1940 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1941 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1942 nx_pull_match() returned error OFPBMC_DUP_FIELD
1944 # ARP source protocol address
1945 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1946 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1947 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1948 OXM_OF_ETH_TYPE(0806)
1949 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1950 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1952 # ARP destination protocol address
1953 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1954 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1955 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1956 OXM_OF_ETH_TYPE(0806)
1957 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1958 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1960 # ARP source hardware address
1961 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1962 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1963 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1964 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1965 OXM_OF_ETH_TYPE(0806)
1966 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1968 # ARP destination hardware address
1969 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1970 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1971 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1972 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1973 OXM_OF_ETH_TYPE(0806)
1974 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1977 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1978 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1979 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1980 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1981 OXM_OF_ETH_TYPE(86dd)
1982 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1985 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1986 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1987 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1988 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1989 OXM_OF_ETH_TYPE(86dd)
1990 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1993 nx_pull_match() returned error OFPBMC_BAD_VALUE
1994 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1995 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1996 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1997 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1998 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1999 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2000 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2001 OXM_OF_ETH_TYPE(86dd)
2003 # ND source hardware address
2004 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)
2005 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2006 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2007 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2009 # ND destination hardware address
2010 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)
2011 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2012 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2013 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2015 # Invalid field number.
2016 nx_pull_match() returned error OFPBMC_BAD_FIELD
2019 # Check that at least the first warning made it. (It's rate-limited
2020 # so a variable number could show up, especially under valgrind etc.)
2021 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
2022 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.)
2025 # Check that there wasn't any other stderr output.
2026 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
2029 AT_SETUP([ovs-ofctl parse-oxm loose])
2031 AT_DATA([oxm.txt], [dnl
2032 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
2035 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
2036 nx_pull_match() returned error OFPBMC_BAD_FIELD
2039 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
2040 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2044 dnl Check all of the patterns mentioned in the "VLAN Matching" section
2045 dnl in the DESIGN file at top level.
2046 AT_SETUP([ovs-ofctl check-vlan])
2050 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2052 NXM: <any> -> 0000/0000
2053 OXM: <any> -> 0000/0000,--
2054 OF1.0: 0000/1,00/1 -> 0000/0000
2055 OF1.1: 0000/1,00/1 -> 0000/0000
2059 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2060 vlan_tci=0x0000 -> 0000/ffff
2061 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
2062 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
2063 OF1.0: ffff/0,00/1 -> 0000/ffff
2064 OF1.1: ffff/0,00/1 -> 0000/ffff
2068 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2069 dl_vlan=2748 -> 1abc/1fff
2070 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
2071 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
2072 OF1.0: 0abc/0,00/1 -> 1abc/1fff
2073 OF1.1: 0abc/0,00/1 -> 1abc/1fff
2077 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2078 dl_vlan_pcp=5 -> b000/f000
2079 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
2080 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
2081 OF1.0: 0000/1,05/0 -> b000/f000
2082 OF1.1: fffe/0,05/0 -> b000/f000
2086 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2087 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2088 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
2089 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
2090 OF1.0: 0abc/0,05/0 -> babc/ffff
2091 OF1.1: 0abc/0,05/0 -> babc/ffff
2095 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2096 vlan_tci=0x0000/0x0fff -> 0000/0fff
2097 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
2098 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2099 OF1.0: 0000/0,00/1 -> 1000/1fff
2100 OF1.1: 0000/0,00/1 -> 1000/1fff
2104 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2105 vlan_tci=0x0000/0xf000 -> 0000/f000
2106 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
2107 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
2108 OF1.0: ffff/0,00/1 -> 0000/ffff
2109 OF1.1: ffff/0,00/1 -> 0000/ffff
2113 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2114 vlan_tci=0x0000/0xefff -> 0000/efff
2115 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
2116 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2117 OF1.0: 0000/0,00/0 -> 1000/ffff
2118 OF1.1: 0000/0,00/0 -> 1000/ffff
2122 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2123 vlan_tci=0x1001/0x1001 -> 1001/1001
2124 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
2125 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
2126 OF1.0: 0001/0,00/1 -> 1001/1fff
2127 OF1.1: 0001/0,00/1 -> 1001/1fff
2131 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2132 vlan_tci=0x3000/0x3000 -> 3000/3000
2133 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
2134 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
2135 OF1.0: 0000/1,01/0 -> 3000/f000
2136 OF1.1: fffe/0,01/0 -> 3000/f000
2141 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2142 dnl such as tunnels and metadata.
2143 AT_SETUP([ovs-ofctl -F option and NXM features])
2144 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
2145 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2147 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
2148 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
2152 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2153 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2154 dnl additionally show up as the top 32 bits of the cookie.) This checks
2155 dnl for regression against bug #4566.
2156 AT_SETUP([ovs-ofctl -F option with flow_mods])
2158 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
2159 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
2161 tun_id=0x12345678 actions=drop
2166 dnl Check that "-F openflow10" is really honored on dump-flows.
2167 dnl (If it isn't, then dump-flows will show the register match.)
2168 AT_SETUP([ovs-ofctl dump-flows honors -F option])
2170 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
2171 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
2178 dnl Check that "-F openflow10" fails on dump-flows if the requested match
2179 dnl can't be represented in OpenFlow 1.0.
2180 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
2182 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
2183 [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2188 dnl Check that add-flow reports non-normalized flows (feature #5029).
2189 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
2191 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2193 ofp_util|INFO|normalization changed ofp_match, details:
2194 ofp_util|INFO| pre: nw_src=1.2.3.4
2195 ofp_util|INFO|post: @&t@
2200 dnl Check that --sort and --rsort works with dump-flows
2201 dnl Default field is 'priority'. Flow entries are displayed based
2202 dnl on field to sort.
2203 AT_SETUP([ovs-ofctl dump-flows with sorting])
2206 AT_DATA([allflows.txt], [[
2207 priority=4,in_port=23213 actions=output:42
2208 priority=5,in_port=1029 actions=output:43
2209 priority=7,in_port=1029 actions=output:43
2210 priority=3,in_port=1028 actions=output:44
2211 priority=1,in_port=1026 actions=output:45
2212 priority=6,in_port=1027 actions=output:64
2213 priority=2,in_port=1025 actions=output:47
2214 priority=8,tcp,tp_src=5 actions=drop
2215 priority=9,tcp,tp_src=6 actions=drop
2218 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2220 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2221 priority=1,in_port=1026 actions=output:45
2222 priority=2,in_port=1025 actions=output:47
2223 priority=3,in_port=1028 actions=output:44
2224 priority=4,in_port=23213 actions=output:42
2225 priority=5,in_port=1029 actions=output:43
2226 priority=6,in_port=1027 actions=output:64
2227 priority=7,in_port=1029 actions=output:43
2228 priority=8,tcp,tp_src=5 actions=drop
2229 priority=9,tcp,tp_src=6 actions=drop
2231 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2232 priority=9,tcp,tp_src=6 actions=drop
2233 priority=8,tcp,tp_src=5 actions=drop
2234 priority=7,in_port=1029 actions=output:43
2235 priority=6,in_port=1027 actions=output:64
2236 priority=5,in_port=1029 actions=output:43
2237 priority=4,in_port=23213 actions=output:42
2238 priority=3,in_port=1028 actions=output:44
2239 priority=2,in_port=1025 actions=output:47
2240 priority=1,in_port=1026 actions=output:45
2242 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2243 priority=2,in_port=1025 actions=output:47
2244 priority=1,in_port=1026 actions=output:45
2245 priority=6,in_port=1027 actions=output:64
2246 priority=3,in_port=1028 actions=output:44
2247 priority=7,in_port=1029 actions=output:43
2248 priority=5,in_port=1029 actions=output:43
2249 priority=4,in_port=23213 actions=output:42
2250 priority=9,tcp,tp_src=6 actions=drop
2251 priority=8,tcp,tp_src=5 actions=drop
2253 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2254 priority=4,in_port=23213 actions=output:42
2255 priority=7,in_port=1029 actions=output:43
2256 priority=5,in_port=1029 actions=output:43
2257 priority=3,in_port=1028 actions=output:44
2258 priority=6,in_port=1027 actions=output:64
2259 priority=1,in_port=1026 actions=output:45
2260 priority=2,in_port=1025 actions=output:47
2261 priority=9,tcp,tp_src=6 actions=drop
2262 priority=8,tcp,tp_src=5 actions=drop
2264 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2265 priority=8,tcp,tp_src=5 actions=drop
2266 priority=9,tcp,tp_src=6 actions=drop
2267 priority=7,in_port=1029 actions=output:43
2268 priority=6,in_port=1027 actions=output:64
2269 priority=5,in_port=1029 actions=output:43
2270 priority=4,in_port=23213 actions=output:42
2271 priority=3,in_port=1028 actions=output:44
2272 priority=2,in_port=1025 actions=output:47
2273 priority=1,in_port=1026 actions=output:45
2276 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2277 [ priority=2,in_port=1025 actions=output:47
2278 priority=1,in_port=1026 actions=output:45
2279 priority=6,in_port=1027 actions=output:64
2280 priority=3,in_port=1028 actions=output:44
2281 priority=7,in_port=1029 actions=output:43
2282 priority=5,in_port=1029 actions=output:43
2283 priority=4,in_port=23213 actions=output:42
2284 priority=8,tcp,tp_src=5 actions=drop
2285 priority=9,tcp,tp_src=6 actions=drop
2290 AT_SETUP([ovs-ofctl diff-flows])
2293 # Add tons of flows to br0.
2294 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2295 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2297 # Dump them and compare against what we expect by hand, then with diff-flows.
2298 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2299 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2301 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2303 # Remove even-numbered flows, compare again.
2304 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2305 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2306 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2307 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2308 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2309 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2314 dnl ofpacts that differ bytewise don't necessarily differ when
2315 dnl converted to another representation, such as OpenFlow 1.0
2316 dnl or to a string. "resubmit(,1)" is an example of an action
2317 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2318 dnl values even though this doesn't affect the string format.
2320 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2321 dnl false ofpacts differences.
2322 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2324 AT_DATA([flows.txt], [actions=resubmit(,1)
2326 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2327 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2328 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2329 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2330 -dl_vlan=9 idle_timeout=60 actions=output:1
2332 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2333 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2334 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2339 AT_SETUP([ovs-ofctl -F and -O interaction])
2340 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2341 [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.)
2343 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2344 [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.)
2346 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2347 [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.)
2349 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2350 [ovs-ofctl: missing command name; use --help for help
2352 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2353 [ovs-ofctl: missing command name; use --help for help
2355 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2356 [ovs-ofctl: missing command name; use --help for help
2360 AT_SETUP([ovs-ofctl ofp-parse])
2361 # Test the echo request/reply messages (0 payload).
2362 AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2363 AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2364 OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2365 OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2368 # Test the hello (xid:1 3-byte payload).
2369 AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2370 AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2371 OFPT_HELLO (xid=0x1):
2372 version bitmap: 0x01
2373 unknown data in hello:
2374 00000000 01 00 00 0b 00 00 00 01-41 42 43 |........ABC |