3 AT_SETUP([ovs-ofctl parse-flows choice of protocol])
4 # This doesn't cover some potential vlan_tci test cases.
7 'tun_id=0/0x1 NXM,OXM' \
8 'tun_src=1.2.3.4 NXM,OXM' \
9 'tun_src=1.2.3.4/0.0.0.1 NXM,OXM' \
10 'tun_dst=1.2.3.4 NXM,OXM' \
11 'tun_dst=1.2.3.4/0.0.0.1 NXM,OXM' \
12 'tun_flags=1 NXM,OXM' \
13 'tun_flags=+oam NXM,OXM' \
16 'tun_gbp_id=0 NXM,OXM' \
17 'tun_gbp_id=0/0x1 NXM,OXM' \
18 'tun_gbp_flags=0 NXM,OXM' \
19 'tun_gbp_flags=0/0x1 NXM,OXM' \
20 'tun_metadata0=0 NXM,OXM' \
21 'tun_metadata0=0/0x1 NXM,OXM' \
22 'tun_metadata0 NXM,OXM' \
23 'metadata=0 NXM,OXM,OpenFlow11' \
24 'metadata=1/1 NXM,OXM,OpenFlow11' \
26 'skb_priority=0 none' \
27 'pkt_mark=1 NXM,OXM' \
28 'pkt_mark=1/1 NXM,OXM' \
49 'reg10=10/1 NXM,OXM' \
51 'reg11=11/1 NXM,OXM' \
53 'reg12=12/1 NXM,OXM' \
55 'reg13=13/1 NXM,OXM' \
57 'reg14=14/1 NXM,OXM' \
75 'xxreg0=0/1 NXM,OXM' \
77 'xxreg1=1/1 NXM,OXM' \
79 'xxreg2=2/1 NXM,OXM' \
81 'xxreg3=3/1 NXM,OXM' \
82 'dl_src=00:11:22:33:44:55 any' \
83 'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
84 'dl_dst=00:11:22:33:44:55 any' \
85 'dl_dst=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
86 'dl_type=0x1234 any' \
87 'dl_type=0x0800 any' \
88 'dl_type=0x0806 any' \
89 'dl_type=0x86dd any' \
91 'vlan_tci=0x1009 any' \
92 'vlan_tci=0x1009/0x1 NXM,OXM' \
95 'vlan_vid=11/0x1 NXM,OXM' \
98 'mpls,mpls_label=5 NXM,OXM,OpenFlow11' \
99 'mpls,mpls_tc=1 NXM,OXM,OpenFlow11' \
100 'mpls,mpls_bos=0 NXM,OXM' \
101 'ip,ip_src=1.2.3.4 any' \
102 'ip,ip_src=192.168.0.0/24 any' \
103 'ip,ip_src=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
104 'ip,ip_dst=1.2.3.4 any' \
105 'ip,ip_dst=192.168.0.0/24 any' \
106 'ip,ip_dst=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
107 'ipv6,ipv6_src=::1 NXM,OXM' \
108 'ipv6,ipv6_src=0:0:0:0:0:0:0:1/::1 NXM,OXM' \
109 'ipv6,ipv6_dst=::1 NXM,OXM' \
110 'ipv6,ipv6_dst=0:0:0:0:0:0:0:1/::1 NXM,OXM' \
111 'ipv6,ipv6_label=5 NXM,OXM' \
112 'ipv6,ipv6_label=5/1 NXM,OXM' \
113 'ip,nw_proto=1 any' \
114 'ipv6,nw_proto=1 NXM,OXM' \
115 'ip,nw_tos=0xf0 any' \
116 'ipv6,nw_tos=0xf0 NXM,OXM' \
117 'ip,ip_dscp=0x3c any' \
118 'ipv6,ip_dscp=0x3c NXM,OXM' \
119 'ip,nw_ecn=1 NXM,OXM' \
120 'ipv6,nw_ecn=1 NXM,OXM' \
121 'ip,nw_ttl=5 NXM,OXM' \
122 'ipv6,nw_ttl=5 NXM,OXM' \
123 'ip,ip_frag=no NXM,OXM' \
124 'ipv6,ip_frag=no NXM,OXM' \
126 'arp,arp_spa=1.2.3.4 any' \
127 'arp,arp_spa=1.2.3.4/0.0.0.1 NXM,OXM,OpenFlow11' \
128 'arp,arp_tpa=1.2.3.4 any' \
129 'arp,arp_tpa=1.2.3.4/0.0.0.1 NXM,OXM,OpenFlow11' \
130 'arp,arp_sha=00:11:22:33:44:55 NXM,OXM' \
131 'arp,arp_sha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
132 'arp,arp_tha=00:11:22:33:44:55 NXM,OXM' \
133 'arp,arp_tha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
134 'tcp,tcp_src=80 any' \
135 'tcp,tcp_src=0x1000/0x1000 NXM,OXM' \
136 'tcp6,tcp_src=80 NXM,OXM' \
137 'tcp6,tcp_src=0x1000/0x1000 NXM,OXM' \
138 'tcp,tcp_dst=80 any' \
139 'tcp,tcp_dst=0x1000/0x1000 NXM,OXM' \
140 'tcp6,tcp_dst=80 NXM,OXM' \
141 'tcp6,tcp_dst=0x1000/0x1000 NXM,OXM' \
142 'udp,udp_src=80 any' \
143 'udp,udp_src=0x1000/0x1000 NXM,OXM' \
144 'udp6,udp_src=80 NXM,OXM' \
145 'udp6,udp_src=0x1000/0x1000 NXM,OXM' \
146 'udp,udp_dst=80 any' \
147 'udp,udp_dst=0x1000/0x1000 NXM,OXM' \
148 'udp6,udp_dst=80 NXM,OXM' \
149 'udp6,udp_dst=0x1000/0x1000 NXM,OXM' \
150 'icmp,icmp_type=1 any' \
151 'icmp,icmp_code=2 any' \
152 'icmp6,icmpv6_type=1 NXM,OXM' \
153 'icmp6,icmpv6_code=2 NXM,OXM' \
154 'ct_state=+trk NXM,OXM' \
155 'ct_zone=0 NXM,OXM' \
156 'ct_mark=0 NXM,OXM' \
157 'ct_label=0 NXM,OXM' \
158 'ct_label=0x1234567890ABCDEF12345678 NXM,OXM'
162 echo "### test case: '$1' should have usable protocols '$2'"
163 if test "$2" = none; then
164 AT_CHECK([ovs-ofctl parse-flow "$1,actions=drop"], [1],
167 [ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
170 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$1,actions=drop" | sed 1q], [0],
171 [usable protocols: $2
177 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
178 AT_DATA([flows.txt], [[
180 tcp,tp_src=123,actions=flood
181 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
182 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
183 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
184 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
185 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
186 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
187 ip,actions=set_field:10.4.3.77->ip_src,mod_nw_ecn:2
190 in_port=0 actions=resubmit:0
191 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
192 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
194 actions=ct(commit,nat(dst))
195 actions=ct(commit,nat(src))
196 actions=ct(commit,nat(src=10.0.0.240,random))
197 actions=ct(commit,nat(src=10.0.0.240:32768-65535,random))
198 actions=ct(commit,nat(dst=10.0.0.128-10.0.0.254,hash))
199 actions=ct(commit,nat(src=10.0.0.240-10.0.0.254:32768-65535,persistent))
200 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:a18b,random))
201 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
202 actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
203 actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
206 AT_CHECK([ovs-ofctl parse-flows flows.txt
208 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
209 [[usable protocols: OpenFlow10,NXM
210 chosen protocol: OpenFlow10-table_id
211 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
212 OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
213 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
214 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
215 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
216 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
217 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
218 OFPT_FLOW_MOD: ADD ip actions=mod_nw_src:10.4.3.77,load:0x2->NXM_NX_IP_ECN[]
219 OFPT_FLOW_MOD: ADD sctp actions=drop
220 OFPT_FLOW_MOD: ADD sctp actions=drop
221 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
222 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
223 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
224 OFPT_FLOW_MOD: ADD actions=ct(nat)
225 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(dst))
226 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src))
227 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.0.0.240,random))
228 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.0.0.240:32768-65535,random))
229 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(dst=10.0.0.128-10.0.0.254,hash))
230 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.0.0.240-10.0.0.254:32768-65535,persistent))
231 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=fe80::20c:29ff:fe88:a18b,random))
232 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
233 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
234 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
238 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.1)])
239 AT_DATA([flows.txt], [[
241 tcp,tp_src=123,actions=flood
242 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
243 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
244 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
245 udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
246 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
247 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
248 ip,actions=mod_nw_ttl:1,set_field:10.4.3.77->ip_src
251 in_port=0 actions=resubmit:0
252 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
253 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
256 AT_CHECK([ovs-ofctl --protocols OpenFlow11 parse-flows flows.txt
258 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
259 [[usable protocols: any
260 chosen protocol: OpenFlow11
261 OFPT_FLOW_MOD (OF1.1): ADD tcp,tp_src=123 actions=FLOOD
262 OFPT_FLOW_MOD (OF1.1): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
263 OFPT_FLOW_MOD (OF1.1): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
264 OFPT_FLOW_MOD (OF1.1): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
265 OFPT_FLOW_MOD (OF1.1): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
266 OFPT_FLOW_MOD (OF1.1): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
267 OFPT_FLOW_MOD (OF1.1): 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
268 OFPT_FLOW_MOD (OF1.1): ADD ip actions=mod_nw_ttl:1,mod_nw_src:10.4.3.77
269 OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
270 OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
271 OFPT_FLOW_MOD (OF1.1): ADD in_port=0 actions=resubmit:0
272 OFPT_FLOW_MOD (OF1.1): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
273 OFPT_FLOW_MOD (OF1.1): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
277 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
278 AT_DATA([flows.txt], [[
280 tcp,tp_src=123,actions=flood
281 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=mod_vlan_vid:7,mod_vlan_pcp:2
282 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
283 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
284 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
285 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
286 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
287 ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
288 sctp actions=set_field:3334->sctp_src
289 sctp actions=set_field:4445->sctp_dst
290 tcp actions=mod_tp_dst:1234
291 udp actions=mod_tp_src:1111
292 ip actions=mod_nw_src:10.1.1.2,mod_nw_dst:192.168.10.1,mod_nw_ttl:1,mod_nw_tos:16,mod_nw_ecn:2
293 in_port=0 actions=mod_dl_src:11:22:33:44:55:66,mod_dl_dst:10:20:30:40:50:60
294 in_port=0 actions=resubmit:0
295 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
296 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
299 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
301 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
302 [[usable protocols: NXM,OXM
303 chosen protocol: OXM-OpenFlow12
304 OFPT_FLOW_MOD (OF1.2): ADD tcp,tp_src=123 actions=FLOOD
305 OFPT_FLOW_MOD (OF1.2): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=set_field:4103->vlan_vid,set_field:2->vlan_pcp
306 OFPT_FLOW_MOD (OF1.2): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
307 OFPT_FLOW_MOD (OF1.2): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
308 OFPT_FLOW_MOD (OF1.2): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
309 OFPT_FLOW_MOD (OF1.2): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
310 OFPT_FLOW_MOD (OF1.2): 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
311 OFPT_FLOW_MOD (OF1.2): ADD ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
312 OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:3334->sctp_src
313 OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:4445->sctp_dst
314 OFPT_FLOW_MOD (OF1.2): ADD tcp actions=set_field:1234->tcp_dst
315 OFPT_FLOW_MOD (OF1.2): ADD udp actions=set_field:1111->udp_src
316 OFPT_FLOW_MOD (OF1.2): ADD ip actions=set_field:10.1.1.2->ip_src,set_field:192.168.10.1->ip_dst,mod_nw_ttl:1,set_field:4->ip_dscp,set_field:2->nw_ecn
317 OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=set_field:11:22:33:44:55:66->eth_src,set_field:10:20:30:40:50:60->eth_dst
318 OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=resubmit:0
319 OFPT_FLOW_MOD (OF1.2): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
320 OFPT_FLOW_MOD (OF1.2): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
324 AT_SETUP([ovs-ofctl parse-flow with invalid mask])
329 'eth_type 0x1234/0x1' \
331 'dl_vlan_pcp 6/0x1' \
333 'mpls mpls_label 5/0x1' \
334 'mpls mpls_tc 1/0x1' \
335 'mpls mpls_bos 1/0x1' \
337 'ipv6 nw_proto 1/1' \
338 'ip nw_tos 0xf0/0xf0' \
339 'ipv6 nw_tos 0xf0/0xf0' \
340 'ip ip_dscp 0x3c/0xf0' \
341 'ipv6 ip_dscp 0x3c/0xf0' \
347 'icmp icmp_type 1/1' \
348 'icmp icmp_code 2/1' \
349 'icmp6 icmpv6_code 2/1'
353 prereq=$1, field=$2 value=$3
355 prereq= field=$1 value=$2
357 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$prereq$field=$value,actions=drop"], [1], [],
358 [ovs-ofctl: $value: invalid mask for field $field
363 AT_SETUP([ovs-ofctl action inconsistency (OpenFlow 1.1)])
364 AT_CHECK([ovs-ofctl --protocols OpenFlow11 add-flow br0 'ip actions=mod_tp_dst:1234'
365 ], [1], [stdout], [ovs-ofctl: none of the usable flow formats (OpenFlow10,NXM) is among the allowed flow formats (OpenFlow11)
369 AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
370 AT_DATA([flows.txt], [[
371 skb_priority=0x12341234,tcp,tp_src=123,actions=flood
374 AT_CHECK([ovs-ofctl parse-flows flows.txt
381 AT_SETUP([ovs-ofctl parse-flows (NXM)])
382 AT_DATA([flows.txt], [[
384 tcp,tp_src=123,actions=flood
385 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
386 pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
387 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
388 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
389 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
390 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
391 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
392 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
393 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
394 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])
396 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
397 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
398 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
399 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
400 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
401 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
402 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
403 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
404 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
405 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
406 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
407 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
408 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
409 check_overlap,actions=output:1,exit,output:2
410 tcp,actions=fin_timeout(idle_timeout=5,hard_timeout=15)
411 actions=controller(max_len=123,reason=invalid_ttl,id=555)
412 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
413 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
414 ip,actions=ct(commit,zone=5)
415 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[])))
416 ip,actions=ct(commit,exec(load(0x1->NXM_NX_CT_LABEL[])))
417 ip,actions=ct(commit,exec(load(0x1234567890ABCDEF->NXM_NX_CT_LABEL[32..95])))
418 ip,actions=ct(commit,exec(set_field(0x1->ct_label)))
419 ip,ct_state=+trk,ct_label=0x1234567890abcdef12345678,actions=ct(commit)
420 actions=output(max_len=100,port=123)
421 actions=output(port=100,max_len=123)
422 actions=output(port=LOCAL,max_len=123)
423 actions=output(port=IN_PORT,max_len=123)
426 AT_CHECK([ovs-ofctl parse-flows flows.txt
428 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
429 [[usable protocols: OXM,NXM+table_id
430 chosen protocol: NXM+table_id
431 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
432 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
433 NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
434 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
435 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
436 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
437 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
438 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
439 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
440 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
441 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])
442 NXT_FLOW_MOD: ADD table:1 actions=drop
443 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
444 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
445 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
446 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
447 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
448 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
449 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
450 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
451 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
452 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
453 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
454 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
455 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
456 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
457 NXT_FLOW_MOD: ADD table:255 tcp actions=fin_timeout(idle_timeout=5,hard_timeout=15)
458 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
459 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
460 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
461 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,zone=5)
462 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
463 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
464 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1234567890abcdef->NXM_NX_CT_LABEL[32..95]))
465 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
466 NXT_FLOW_MOD: ADD table:255 ct_state=+trk,ct_label=0x1234567890abcdef12345678,ip actions=ct(commit)
467 NXT_FLOW_MOD: ADD table:255 actions=output(port=123,max_len=100)
468 NXT_FLOW_MOD: ADD table:255 actions=output(port=100,max_len=123)
469 NXT_FLOW_MOD: ADD table:255 actions=output(port=65534,max_len=123)
470 NXT_FLOW_MOD: ADD table:255 actions=output(port=65528,max_len=123)
474 AT_SETUP([ovs-ofctl -F nxm parse-flows])
475 AT_DATA([flows.txt], [
477 tcp,tp_src=123,actions=flood
478 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
479 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
480 ipv6,ipv6_label=0x12345 actions=2
481 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
482 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
483 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
484 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
485 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
486 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
487 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
488 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
489 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
490 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
491 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
492 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
493 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
494 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
495 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
496 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
497 tun_id=0x1234,cookie=0x5678,actions=flood
499 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
500 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
501 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
502 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
503 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
504 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
505 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
506 ip,actions=ct(commit,zone=5)
507 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[[]])))
508 ip,actions=ct(commit,exec(load(0x1->NXM_NX_CT_LABEL[[]])))
510 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
511 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
512 usable protocols: NXM,OXM
513 chosen protocol: NXM-table_id
514 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
515 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
516 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
517 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
518 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
519 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
520 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
521 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
522 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
523 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
524 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
525 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
526 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
527 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
528 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
529 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
530 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
531 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
532 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
533 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
534 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
535 NXT_FLOW_MOD: ADD actions=drop
536 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
537 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
538 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
539 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
540 NXT_FLOW_MOD: ADD actions=drop
541 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
542 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
543 NXT_FLOW_MOD: ADD ip actions=ct(commit,zone=5)
544 NXT_FLOW_MOD: ADD ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[[]]))
545 NXT_FLOW_MOD: ADD ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[[0..63]],load:0->NXM_NX_CT_LABEL[[64..127]]))
549 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
550 AT_DATA([flows.txt], [[
552 tcp,tp_src=123,actions=flood
553 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
554 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
555 ipv6,ipv6_label=0x12345 actions=2
556 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
557 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
558 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
559 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
560 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
561 sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
562 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
563 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
564 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
565 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
566 sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
567 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
568 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
569 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
570 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
571 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
572 tun_id=0x1234,cookie=0x5678,actions=flood
574 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[]
575 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
576 actions=push:NXM_NX_REG0[0..31],pop:NXM_NX_REG0[]
577 vlan_tci=0x1123/0x1fff,actions=drop
578 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
579 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
580 ip,actions=ct(commit,zone=5)
581 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[])))
582 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_LABEL[])))
583 ip,actions=ct(commit,exec(set_field(1->ct_label)))
585 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
586 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
587 [[usable protocols: NXM,OXM
588 chosen protocol: NXM-table_id
589 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
590 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
591 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
592 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
593 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
594 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
595 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
596 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
597 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
598 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
599 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
600 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
601 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
602 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
603 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
604 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
605 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
606 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
607 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
608 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
609 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
610 NXT_FLOW_MOD: ADD <any> actions=drop
611 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[]
612 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
613 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
614 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
615 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
616 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
617 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,zone=5)
618 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
619 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
620 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
624 AT_SETUP([ovs-ofctl parse-nx-match])
625 AT_KEYWORDS([nx-match])
626 AT_DATA([nx-match.txt], [dnl
634 NXM_OF_ETH_DST(0002e30f80a4)
635 NXM_OF_ETH_DST_W(010000000000/010000000000)
636 NXM_OF_ETH_DST_W(000000000000/010000000000)
637 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
638 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
639 NXM_OF_ETH_DST_W(60175619848f/000000000000)
640 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
641 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
644 NXM_OF_ETH_SRC(020898456ddb)
645 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
646 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
647 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
650 NXM_OF_ETH_TYPE(0800)
651 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
654 NXM_OF_VLAN_TCI(f009)
655 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
656 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
657 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
658 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
659 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
660 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
661 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
662 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
663 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
666 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
667 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
671 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
672 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
676 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
677 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
681 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
682 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
686 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
687 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
688 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
689 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
690 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
691 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
694 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
695 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
696 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
697 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
698 NXM_OF_IP_DST(ac100014)
699 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
702 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
703 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
704 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
705 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
707 # TCP destination port
708 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
709 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
710 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
711 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
714 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS(0131)
715 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00F0/0FF0)
716 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(01E2/ffff)
717 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_NX_TCP_FLAGS(0fff)
720 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
721 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
722 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
723 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
725 # UDP destination port
726 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
727 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
728 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
729 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
732 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
733 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
736 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
737 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
738 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
742 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
743 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
744 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
746 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
748 # ARP source protocol address
749 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
750 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
751 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
752 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
753 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
754 NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
756 # ARP destination protocol address
757 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
758 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
759 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
760 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
761 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
762 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
764 # ARP source hardware address
765 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
766 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
767 NXM_NX_ARP_SHA(0002e30f80a4)
769 # ARP destination hardware address
770 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
771 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
772 NXM_NX_ARP_THA(0002e30f80a4)
775 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
776 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
777 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
779 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
781 # RARP source protocol address
782 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
783 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
784 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
785 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
786 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
787 NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
789 # RARP destination protocol address
790 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
791 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
792 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
793 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
794 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
795 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
797 # RARP source hardware address
798 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
799 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
800 NXM_NX_ARP_SHA(0002e30f80a4)
802 # RARP destination hardware address
803 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
804 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
805 NXM_NX_ARP_THA(0002e30f80a4)
808 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
809 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
810 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
811 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
812 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
813 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
814 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffff000000000000)
817 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
818 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
819 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
820 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
821 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
822 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
825 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
826 NXM_NX_IPV6_LABEL(0000000f)
827 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
830 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
831 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
832 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
833 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
834 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(00000000000000000000000000000000/00000000000000000000000000000000)
835 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
837 # ND source hardware address
838 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)
839 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)
840 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)
841 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)
843 # ND destination hardware address
844 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)
845 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)
846 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)
847 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)
850 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
851 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
852 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
853 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
854 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
855 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
856 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
857 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
858 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
859 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
860 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
861 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
862 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
865 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
866 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
867 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
868 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
869 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
870 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
871 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
872 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
873 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
874 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
875 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
876 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
877 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
880 NXM_NX_COOKIE(00000000abcdef01)
881 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
882 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
883 NXM_NX_COOKIE_W(0000000000000000/0000000000000000)
886 NXM_NX_TUN_ID(00000000abcdef01)
887 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
888 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
889 NXM_NX_TUN_ID_W(0000000000000000/0000000000000000)
892 NXM_NX_REG0(acebdf56)
893 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
894 NXM_NX_REG0_W(a0e0d050/ffffffff)
895 NXM_NX_REG0_W(00000000/00000000)
897 # Connection tracking fields,
898 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE(00000020)
899 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE(00001080)
900 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE_W(00000020/00000020)
901 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE_W(00000020/000000F0)
902 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_ZONE(5a5a)
903 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_MARK(5a5a5a5a)
904 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_MARK_W(5a5a5a5a/fefefefe)
905 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_LABEL(1234567890abcdef1234567890abcdef)
906 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_LABEL_W(10203040506070809000a0b0c0d0e0f0/f1f2f3f4f5f6f7f8f9f0fafbfcfdfeff)
908 # dp_hash (testing experimenter OXM).
909 NXM_NX_DP_HASH(01234567)
910 NXOXM_ET_DP_HASH(01234567)
912 # Invalid field number.
915 # Invalid field numbers (experimenter OXM).
916 ffff020800002320(11112222)
917 ffff030800002320(1111/3333)
919 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
927 NXM_OF_ETH_DST(0002e30f80a4)
928 NXM_OF_ETH_DST_W(010000000000/010000000000)
929 NXM_OF_ETH_DST_W(000000000000/010000000000)
930 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
931 NXM_OF_ETH_DST(0002e30f80a4)
932 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
933 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
934 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
937 NXM_OF_ETH_SRC(020898456ddb)
938 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
939 NXM_OF_ETH_SRC(020898456ddb)
940 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
943 NXM_OF_ETH_TYPE(0800)
944 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
947 NXM_OF_VLAN_TCI(f009)
948 nx_pull_match() returned error OFPBMC_DUP_FIELD
949 NXM_OF_VLAN_TCI(0000)
950 NXM_OF_VLAN_TCI(3123)
951 NXM_OF_VLAN_TCI(0123)
952 NXM_OF_VLAN_TCI_W(1123/1fff)
953 NXM_OF_VLAN_TCI(1123)
954 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
955 NXM_OF_VLAN_TCI_W(f000/f000)
956 NXM_OF_VLAN_TCI_W(0000/e000)
959 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
960 nx_pull_match() returned error OFPBMC_BAD_VALUE
961 nx_pull_match() returned error OFPBMC_BAD_PREREQ
964 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
965 nx_pull_match() returned error OFPBMC_BAD_VALUE
966 nx_pull_match() returned error OFPBMC_BAD_PREREQ
969 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
970 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
971 nx_pull_match() returned error OFPBMC_BAD_PREREQ
974 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
975 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
976 nx_pull_match() returned error OFPBMC_BAD_PREREQ
979 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
980 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
981 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
982 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
983 nx_pull_match() returned error OFPBMC_BAD_PREREQ
984 nx_pull_match() returned error OFPBMC_BAD_PREREQ
987 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
988 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
989 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
990 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
991 nx_pull_match() returned error OFPBMC_BAD_PREREQ
992 nx_pull_match() returned error OFPBMC_BAD_PREREQ
995 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
996 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
997 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
998 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1000 # TCP destination port
1001 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
1002 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
1003 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
1004 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1007 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0131)
1008 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS_W(00f0/0ff0)
1009 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(01e2)
1010 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1013 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
1014 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
1015 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
1016 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1018 # UDP destination port
1019 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
1020 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
1021 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
1022 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1025 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
1026 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1029 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
1030 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1031 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1032 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1035 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
1036 nx_pull_match() returned error OFPBMC_BAD_VALUE
1037 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1038 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1039 nx_pull_match() returned error OFPBMC_DUP_FIELD
1041 # ARP source protocol address
1042 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
1043 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1044 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1045 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
1046 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1047 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1049 # ARP destination protocol address
1050 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
1051 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1052 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1053 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
1054 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1055 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1057 # ARP source hardware address
1058 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
1059 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1060 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1062 # ARP destination hardware address
1063 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
1064 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1065 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1068 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
1069 nx_pull_match() returned error OFPBMC_BAD_VALUE
1070 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1071 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1072 nx_pull_match() returned error OFPBMC_DUP_FIELD
1074 # RARP source protocol address
1075 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
1076 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1077 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1078 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
1079 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1080 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1082 # RARP destination protocol address
1083 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
1084 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1085 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1086 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
1087 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1088 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1090 # RARP source hardware address
1091 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
1092 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1093 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1095 # RARP destination hardware address
1096 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
1097 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1098 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1101 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
1102 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1103 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1104 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1105 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
1106 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1107 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1110 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
1111 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1112 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1113 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
1114 NXM_OF_ETH_TYPE(86dd)
1115 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1118 nx_pull_match() returned error OFPBMC_BAD_VALUE
1119 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1120 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
1123 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1124 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1125 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1126 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1127 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
1128 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1130 # ND source hardware address
1131 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)
1132 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1133 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1134 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1136 # ND destination hardware address
1137 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)
1138 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1139 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1140 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1143 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1144 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
1145 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
1146 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1147 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1148 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
1149 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
1150 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
1151 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
1152 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1153 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1154 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1155 nx_pull_match() returned error OFPBMC_BAD_VALUE
1158 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1159 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
1160 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
1161 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1162 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1163 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
1164 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
1165 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
1166 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
1167 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1168 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1169 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1170 nx_pull_match() returned error OFPBMC_BAD_VALUE
1173 NXM_NX_COOKIE(00000000abcdef01)
1174 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
1175 NXM_NX_COOKIE(84200000abcdef01)
1179 NXM_NX_TUN_ID(00000000abcdef01)
1180 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
1181 NXM_NX_TUN_ID(84200000abcdef01)
1185 NXM_NX_REG0(acebdf56)
1186 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
1187 NXM_NX_REG0(a0e0d050)
1190 # Connection tracking fields,
1192 dnl When re-serialising, bits 16-31 are wildcarded, because current OVS userspace
1193 dnl doesn't understand (or store) those bits.
1194 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/0000ffff)
1195 nx_pull_match() returned error OFPBMC_BAD_VALUE
1196 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/00000020)
1197 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/000000f0)
1198 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_ZONE(5a5a)
1199 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_MARK(5a5a5a5a)
1200 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_MARK_W(5a5a5a5a/fefefefe)
1201 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_LABEL(1234567890abcdef1234567890abcdef)
1202 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_LABEL_W(10203040506070809000a0b0c0d0e0f0/f1f2f3f4f5f6f7f8f9f0fafbfcfdfeff)
1204 # dp_hash (testing experimenter OXM).
1205 NXM_NX_DP_HASH(01234567)
1206 NXM_NX_DP_HASH(01234567)
1208 # Invalid field number.
1209 nx_pull_match() returned error OFPBMC_BAD_FIELD
1211 # Invalid field numbers (experimenter OXM).
1212 nx_pull_match() returned error OFPBMC_BAD_FIELD
1213 nx_pull_match() returned error OFPBMC_BAD_FIELD
1216 # Check that at least the first warning made it. (It's rate-limited
1217 # so a variable number could show up, especially under valgrind etc.)
1218 AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
1219 nx_match|WARN|Rejecting NXM/OXM entry 0:0:1:1:12 with 1-bits in value for bits wildcarded by the mask.
1222 # Check that there wasn't any other stderr output.
1223 AT_CHECK([grep -v '1-bits in value' stderr], [1])
1226 AT_SETUP([ovs-ofctl parse-ofp10-match])
1227 AT_KEYWORDS([OF1.0])
1228 AT_DATA([test-data], [dnl
1230 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1231 xxxxxxxx xxxxxxxx xxxx xxxx
1233 # dl_src=00:01:02:03:04:05
1234 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1235 xxxxxxxx xxxxxxxx xxxx xxxx
1237 # dl_dst=10:20:30:40:50:60
1238 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1239 xxxxxxxx xxxxxxxx xxxx xxxx
1242 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1243 xxxxxxxx xxxxxxxx xxxx xxxx
1246 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1247 xxxxxxxx xxxxxxxx xxxx xxxx
1249 # dl_vlan=291,dl_vlan_pcp=4
1250 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1251 xxxxxxxx xxxxxxxx xxxx xxxx
1253 dnl dl_vlan_pcp doesn't make sense when 802.1Q is not present, so
1254 dnl OVS ignores it and drops it on output.
1257 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1258 xxxxxxxx xxxxxxxx xxxx xxxx
1260 dnl dl_vlan_pcp doesn't make sense when 802.1Q is not present, so
1261 dnl OVS ignores it and drops it on output.
1264 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1265 xxxxxxxx xxxxxxxx xxxx xxxx
1267 dnl Invalid VID and PCP discards out-of-range bits:
1268 # dl_vlan=256,dl_vlan_pcp=7
1271 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1272 xxxxxxxx xxxxxxxx xxxx xxxx
1275 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1276 xxxxxxxx xxxxxxxx xxxx xxxx
1279 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1280 xxxxxxxx xxxxxxxx xxxx xxxx
1282 dnl Ignore nw_proto if not IP or ARP:
1283 # dl_type=0x1234,nw_proto=5
1284 # normal: 3: cf -> ef
1285 # normal: 25: 05 -> 00
1286 & ofp_util|INFO|normalization changed ofp_match, details:
1287 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1288 & ofp_util|INFO|post: dl_type=0x1234
1289 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1290 xxxxxxxx xxxxxxxx xxxx xxxx
1293 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1294 xxxxxxxx xxxxxxxx xxxx xxxx
1296 dnl Ignore nw_tos if not IP:
1299 # normal: 1: 18 -> 38
1300 # normal: 24: 04 -> 00
1301 & ofp_util|INFO|normalization changed ofp_match, details:
1302 & ofp_util|INFO| pre: arp,nw_tos=4
1303 & ofp_util|INFO|post: arp
1304 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1305 xxxxxxxx xxxxxxxx xxxx xxxx
1307 dnl Low 2 bits of invalid TOS are forced to 0:
1310 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1311 xxxxxxxx xxxxxxxx xxxx xxxx
1314 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1315 xxxxxxxx xxxxxxxx xxxx xxxx
1317 # ip,nw_src=192.168.128.85
1318 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1319 c0a88055 xxxxxxxx xxxx xxxx
1321 # ip,nw_src=192.168.128.0/24
1323 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1324 c0a88055 xxxxxxxx xxxx xxxx
1326 # ip,nw_dst=192.168.128.85
1327 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1328 xxxxxxxx c0a88055 xxxx xxxx
1330 # ip,nw_dst=192.168.128.0/24
1332 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1333 xxxxxxxx c0a88055 xxxx xxxx
1335 # arp,arp_spa=192.168.128.85
1336 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1337 c0a88055 xxxxxxxx xxxx xxxx
1339 # arp,arp_spa=192.168.128.0/24
1341 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1342 c0a88055 xxxxxxxx xxxx xxxx
1344 # arp,arp_tpa=192.168.128.85
1345 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1346 xxxxxxxx c0a88055 xxxx xxxx
1348 # arp,arp_tpa=192.168.128.0/24
1350 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1351 xxxxxxxx c0a88055 xxxx xxxx
1353 dnl Ignore nw_src if not IP or ARP:
1354 # dl_type=0x1234,nw_src=192.168.128.0/24
1356 # normal: 2: 08 -> 20
1357 # normal: 28: c0 -> 00
1358 # normal: 29: a8 -> 00
1359 # normal: 30: 80 -> 00
1360 & ofp_util|INFO|normalization changed ofp_match, details:
1361 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1362 & ofp_util|INFO|post: dl_type=0x1234
1363 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1364 c0a88055 xxxxxxxx xxxx xxxx
1366 dnl Ignore nw_dst if not IP or ARP:
1367 # dl_type=0x1234,nw_dst=192.168.128.0/24
1369 # normal: 1: 32 -> 38
1370 # normal: 32: c0 -> 00
1371 # normal: 33: a8 -> 00
1372 # normal: 34: 80 -> 00
1373 & ofp_util|INFO|normalization changed ofp_match, details:
1374 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1375 & ofp_util|INFO|post: dl_type=0x1234
1376 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1377 xxxxxxxx c0a88055 xxxx xxxx
1380 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1381 xxxxxxxx xxxxxxxx 01bb xxxx
1384 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1385 xxxxxxxx xxxxxxxx xxxx 01bb
1388 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1389 xxxxxxxx xxxxxxxx 01bb xxxx
1392 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1393 xxxxxxxx xxxxxxxx xxxx 01bb
1396 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1397 xxxxxxxx xxxxxxxx 01bb xxxx
1400 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1401 xxxxxxxx xxxxxxxx xxxx 01bb
1404 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1405 xxxxxxxx xxxxxxxx 0005 xxxx
1408 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1409 xxxxxxxx xxxxxxxx xxxx 0008
1411 dnl Ignore tp_src if not TCP/UDP/SCTP:
1412 # ip,nw_proto=21,tp_src=443
1413 # normal: 3: 8f -> cf
1414 # normal: 36: 01 -> 00
1415 # normal: 37: bb -> 00
1416 & ofp_util|INFO|normalization changed ofp_match, details:
1417 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1418 & ofp_util|INFO|post: ip,nw_proto=21
1419 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1420 xxxxxxxx xxxxxxxx 01bb xxxx
1422 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1423 # ip,nw_proto=21,tp_dst=443
1424 # normal: 3: 4f -> cf
1425 # normal: 38: 01 -> 00
1426 # normal: 39: bb -> 00
1427 dnl The normalization details are suppressed here due to rate-limiting.
1428 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1429 xxxxxxxx xxxxxxxx xxxx 01bb
1432 sed '/^[[#&]]/d' < test-data > input.txt
1433 sed -n 's/^# //p; /^$/p' < test-data > expout
1434 sed -n 's/^& //p' < test-data > experr
1435 AT_CAPTURE_FILE([input.txt])
1436 AT_CAPTURE_FILE([expout])
1437 AT_CAPTURE_FILE([experr])
1439 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1440 [0], [expout], [experr])
1443 AT_SETUP([ovs-ofctl parse-ofp11-match])
1444 AT_KEYWORDS([OF1.1])
1445 AT_DATA([test-data], [dnl
1447 0000 0058 fffffffe 000003fe dnl
1448 000000000000ffffffffffff 000000000000ffffffffffff dnl
1449 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1450 00000000 00 000000 0000000000000000ffffffffffffffff
1452 # bad ofp11_match: OFPBMC_BAD_VALUE
1453 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1454 0000 0058 12345678 000003fe dnl
1455 000000000000ffffffffffff 000000000000ffffffffffff dnl
1456 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1457 00000000 00 000000 0000000000000000ffffffffffffffff
1459 # dl_src=00:01:02:03:04:05
1460 0000 0058 00000000 000003ff dnl
1461 000102030405000000000000 000000000000ffffffffffff dnl
1462 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1463 00000000 00 000000 0000000000000000ffffffffffffffff
1465 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1466 0000 0058 00000000 000003ff dnl
1467 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1468 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1469 00000000 00 000000 0000000000000000ffffffffffffffff
1471 # dl_dst=00:01:02:03:04:05
1472 0000 0058 00000000 000003ff dnl
1473 000000000000ffffffffffff 000102030405000000000000 dnl
1474 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1475 00000000 00 000000 0000000000000000ffffffffffffffff
1477 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1478 0000 0058 00000000 000003ff dnl
1479 000000000000ffffffffffff 010000000000feffffffffff dnl
1480 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1481 00000000 00 000000 0000000000000000ffffffffffffffff
1483 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1484 0000 0058 00000000 000003ff dnl
1485 000000000000ffffffffffff 000102030405010000000000 dnl
1486 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1487 00000000 00 000000 0000000000000000ffffffffffffffff
1489 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1490 0000 0058 00000000 000003ff dnl
1491 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1492 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1493 00000000 00 000000 0000000000000000ffffffffffffffff
1495 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1496 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1500 0000 0058 00000001 000003fa dnl
1501 000000000000ffffffffffff 000000000000ffffffffffff dnl
1502 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1503 00000000 00 000000 0000000000000000ffffffffffffffff
1506 0000 0058 00000000 000003fd dnl
1507 000000000000ffffffffffff 000000000000ffffffffffff dnl
1508 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1509 00000000 00 000000 0000000000000000ffffffffffffffff
1513 0000 0058 00000000 000003fd dnl
1514 000000000000ffffffffffff 000000000000ffffffffffff dnl
1515 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1516 00000000 00 000000 0000000000000000ffffffffffffffff
1518 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1519 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1523 0000 0058 00000000 000003f9 dnl
1524 000000000000ffffffffffff 000000000000ffffffffffff dnl
1525 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1526 00000000 00 000000 0000000000000000ffffffffffffffff
1528 # vlan_tci=0x1000/0x1000
1529 0000 0058 00000000 000003fd dnl
1530 000000000000ffffffffffff 000000000000ffffffffffff dnl
1531 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1532 00000000 00 000000 0000000000000000ffffffffffffffff
1534 dnl Try invalid VID:
1535 # bad ofp11_match: OFPBMC_BAD_VALUE
1536 0000 0058 00000000 000003fd dnl
1537 000000000000ffffffffffff 000000000000ffffffffffff dnl
1538 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1539 00000000 00 000000 0000000000000000ffffffffffffffff
1542 0000 0058 00000000 000003f9 dnl
1543 000000000000ffffffffffff 000000000000ffffffffffff dnl
1544 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1545 00000000 00 000000 0000000000000000ffffffffffffffff
1547 # dl_vlan=10,dl_vlan_pcp=6
1548 0000 0058 00000000 000003f9 dnl
1549 000000000000ffffffffffff 000000000000ffffffffffff dnl
1550 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1551 00000000 00 000000 0000000000000000ffffffffffffffff
1554 0000 0058 00000000 000003f7 dnl
1555 000000000000ffffffffffff 000000000000ffffffffffff dnl
1556 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1557 00000000 00 000000 0000000000000000ffffffffffffffff
1560 0000 0058 00000000 000003e7 dnl
1561 000000000000ffffffffffff 000000000000ffffffffffff dnl
1562 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1563 00000000 00 000000 0000000000000000ffffffffffffffff
1565 dnl Try invalid TOS:
1566 # bad ofp11_match: OFPBMC_BAD_VALUE
1567 0000 0058 00000000 000003e7 dnl
1568 000000000000ffffffffffff 000000000000ffffffffffff dnl
1569 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1570 00000000 00 000000 0000000000000000ffffffffffffffff
1573 0000 0058 00000000 000003d7 dnl
1574 000000000000ffffffffffff 000000000000ffffffffffff dnl
1575 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1576 00000000 00 000000 0000000000000000ffffffffffffffff
1579 0000 0058 00000000 000003d7 dnl
1580 000000000000ffffffffffff 000000000000ffffffffffff dnl
1581 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1582 00000000 00 000000 0000000000000000ffffffffffffffff
1584 # ip,nw_src=192.168.128.0/24
1585 0000 0058 00000000 000003f7 dnl
1586 000000000000ffffffffffff 000000000000ffffffffffff dnl
1587 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1588 00000000 00 000000 0000000000000000ffffffffffffffff
1590 # ip,nw_src=128.160.128.0/165.165.165.165
1593 0000 0058 00000000 000003f7 dnl
1594 000000000000ffffffffffff 000000000000ffffffffffff dnl
1595 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1596 00000000 00 000000 0000000000000000ffffffffffffffff
1598 # ip,nw_dst=192.168.128.0/24
1599 0000 0058 00000000 000003f7 dnl
1600 000000000000ffffffffffff 000000000000ffffffffffff dnl
1601 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1602 00000000 00 000000 0000000000000000ffffffffffffffff
1604 # ip,nw_dst=128.160.128.0/165.165.165.165
1607 0000 0058 00000000 000003f7 dnl
1608 000000000000ffffffffffff 000000000000ffffffffffff dnl
1609 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1610 00000000 00 000000 0000000000000000ffffffffffffffff
1612 # arp,arp_spa=192.168.128.0/24
1613 0000 0058 00000000 000003f7 dnl
1614 000000000000ffffffffffff 000000000000ffffffffffff dnl
1615 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1616 00000000 00 000000 0000000000000000ffffffffffffffff
1618 # arp,arp_tpa=192.168.128.0/24
1619 0000 0058 00000000 000003f7 dnl
1620 000000000000ffffffffffff 000000000000ffffffffffff dnl
1621 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1622 00000000 00 000000 0000000000000000ffffffffffffffff
1625 0000 0058 00000000 00000397 dnl
1626 000000000000ffffffffffff 000000000000ffffffffffff dnl
1627 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1628 00000000 00 000000 0000000000000000ffffffffffffffff
1631 0000 0058 00000000 00000357 dnl
1632 000000000000ffffffffffff 000000000000ffffffffffff dnl
1633 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1634 00000000 00 000000 0000000000000000ffffffffffffffff
1637 0000 0058 00000000 00000397 dnl
1638 000000000000ffffffffffff 000000000000ffffffffffff dnl
1639 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1640 00000000 00 000000 0000000000000000ffffffffffffffff
1643 0000 0058 00000000 00000397 dnl
1644 000000000000ffffffffffff 000000000000ffffffffffff dnl
1645 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1646 00000000 00 000000 0000000000000000ffffffffffffffff
1649 0000 0058 00000000 00000357 dnl
1650 000000000000ffffffffffff 000000000000ffffffffffff dnl
1651 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1652 00000000 00 000000 0000000000000000ffffffffffffffff
1655 0000 0058 00000000 00000397 dnl
1656 000000000000ffffffffffff 000000000000ffffffffffff dnl
1657 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1658 00000000 00 000000 0000000000000000ffffffffffffffff
1661 0000 0058 00000000 00000357 dnl
1662 000000000000ffffffffffff 000000000000ffffffffffff dnl
1663 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1664 00000000 00 000000 0000000000000000ffffffffffffffff
1667 0000 0058 00000000 000003d7 dnl
1668 000000000000ffffffffffff 000000000000ffffffffffff dnl
1669 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1670 00000000 00 000000 0000000000000000ffffffffffffffff
1673 0000 0058 00000000 00000397 dnl
1674 000000000000ffffffffffff 000000000000ffffffffffff dnl
1675 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1676 00000000 00 000000 0000000000000000ffffffffffffffff
1679 0000 0058 00000000 00000357 dnl
1680 000000000000ffffffffffff 000000000000ffffffffffff dnl
1681 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1682 00000000 00 000000 0000000000000000ffffffffffffffff
1684 dnl Ignore tp_src if not TCP/UDP/SCTP:
1689 0000 0058 00000000 00000397 dnl
1690 000000000000ffffffffffff 000000000000ffffffffffff dnl
1691 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1692 00000000 00 000000 0000000000000000ffffffffffffffff
1694 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1699 0000 0058 00000000 00000357 dnl
1700 000000000000ffffffffffff 000000000000ffffffffffff dnl
1701 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1702 00000000 00 000000 0000000000000000ffffffffffffffff
1704 # mpls,mpls_label=284280
1707 0000 0058 00000000 000002f7 dnl
1708 000000000000ffffffffffff 000000000000ffffffffffff dnl
1709 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1710 12345678 00 000000 0000000000000000ffffffffffffffff
1714 0000 0058 00000000 000001f7 dnl
1715 000000000000ffffffffffff 000000000000ffffffffffff dnl
1716 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1717 00000000 5a 000000 0000000000000000ffffffffffffffff
1719 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1727 0000 0058 00000000 000000f7 dnl
1728 000000000000ffffffffffff 000000000000ffffffffffff dnl
1729 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1730 12345678 5a 000000 0000000000000000ffffffffffffffff
1733 # metadata=0x1234567890abcdef
1734 0000 0058 00000000 000003ff dnl
1735 000000000000ffffffffffff 000000000000ffffffffffff dnl
1736 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1737 00000000 00 000000 1234567890abcdef0000000000000000
1740 # metadata=0x5555555555555555/0x5555555555555555
1741 0000 0058 00000000 000003ff dnl
1742 000000000000ffffffffffff 000000000000ffffffffffff dnl
1743 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1744 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1747 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1752 0000 0058 00000000 000003ff dnl
1753 000000000000ffffffffffff 000000000000ffffffffffff dnl
1754 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1755 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1758 sed '/^[[#&]]/d' < test-data > input.txt
1759 sed -n 's/^# //p; /^$/p' < test-data > expout
1760 sed -n 's/^& //p' < test-data > experr
1761 AT_CAPTURE_FILE([input.txt])
1762 AT_CAPTURE_FILE([expout])
1763 AT_CAPTURE_FILE([experr])
1765 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1766 [0], [expout], [experr])
1769 AT_SETUP([ovs-ofctl parse-nx-match loose])
1770 AT_KEYWORDS([nx-match])
1771 AT_DATA([nx-match.txt], [dnl
1772 NXM_OF_IN_PORT(0001), 01020304(1111/3333), NXM_OF_ETH_TYPE(0800)
1773 NXM_OF_IN_PORT(0001), ffff020800002320(11112222), NXM_OF_ETH_TYPE(0800)
1774 NXM_OF_IN_PORT(0001), ffff030800002320(1111/3333), NXM_OF_ETH_TYPE(0800)
1777 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1778 nx_pull_match() returned error OFPBMC_BAD_FIELD
1779 nx_pull_match() returned error OFPBMC_BAD_FIELD
1780 nx_pull_match() returned error OFPBMC_BAD_FIELD
1783 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1784 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1785 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1786 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1790 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.2)])
1792 AT_DATA([oxm.txt], [dnl
1796 OXM_OF_IN_PORT(00000000)
1797 OXM_OF_IN_PORT(fffffffe)
1800 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1801 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1802 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1803 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1804 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1807 OXM_OF_ETH_DST(0002e30f80a4)
1808 OXM_OF_ETH_DST_W(010000000000/010000000000)
1809 OXM_OF_ETH_DST_W(000000000000/010000000000)
1810 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1811 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1812 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1813 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1816 OXM_OF_ETH_SRC(020898456ddb)
1819 OXM_OF_ETH_TYPE(0800)
1820 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1823 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1824 OXM_OF_VLAN_VID(f009) # Bad Value
1825 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1826 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1827 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1828 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1829 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1830 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1831 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1832 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1833 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1834 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1835 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1836 OXM_OF_VLAN_VID_W(0000/0000) # Packets with or without 802.1Q header
1837 OXM_OF_VLAN_VID_W(1103/1f0f), # Packets with # VID=123 (masked)
1838 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1839 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1840 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1843 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1844 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1845 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1849 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1850 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1854 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1855 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1859 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1860 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1861 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1862 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(00000000/00000000)
1863 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1864 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1867 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1868 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a80000/FFFF0000)
1869 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1870 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(00000000/00000000)
1871 OXM_OF_IPV4_DST(ac100014)
1872 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1875 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1876 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1877 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1878 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(0000/0000)
1879 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1881 # TCP destination port
1882 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1883 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1884 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1885 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(0000/0000)
1886 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1889 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1890 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1891 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1892 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0000/0000)
1893 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1895 # UDP destination port
1896 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1897 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1898 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1899 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(0000/0000)
1900 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1903 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1904 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1905 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1906 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0000/0000)
1907 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1909 # SCTP destination port
1910 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1911 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1912 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1913 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(0000/0000)
1914 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1917 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1918 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1921 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1922 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1923 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1924 OXM_OF_ICMPV4_CODE(00)
1927 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1928 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1929 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1931 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1933 # ARP source protocol address
1934 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1935 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
1936 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1937 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(00000000/00000000)
1938 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1939 OXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
1941 # ARP destination protocol address
1942 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1943 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
1944 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1945 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(00000000/00000000)
1946 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1947 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1949 # ARP source hardware address
1950 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1951 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1952 OXM_OF_ARP_SHA(0002e30f80a4)
1953 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1954 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000000/000000000000)
1955 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1957 # ARP destination hardware address
1958 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1959 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1960 OXM_OF_ARP_THA(0002e30f80a4)
1961 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1962 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000000/000000000000)
1963 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000004/00000000000f)
1966 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1967 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1968 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1969 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1970 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(00000000000000000000000000000000/00000000000000000000000000000000)
1971 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1974 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1975 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1976 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1977 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1978 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
1979 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1982 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1983 OXM_OF_IPV6_FLABEL(0000000f)
1984 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1985 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1986 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1987 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1988 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1989 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1990 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/00000000)
1992 # ND source hardware address
1993 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)
1994 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)
1995 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)
1996 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)
1998 # ND destination hardware address
1999 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)
2000 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)
2001 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)
2002 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)
2004 # Registers 0, 1, and 2.
2005 NXM_NX_REG0(acebdf56)
2006 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2007 NXM_NX_REG0(a0e0d050)
2008 NXM_NX_REG1(acebdf56)
2009 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2010 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2011 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2012 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2014 # Extended registers 0, 1, and 2.
2015 # (For OpenFlow 1.2, OVS transforms these into its extension registers.)
2016 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2017 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2018 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2019 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2020 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2021 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2022 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2023 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2025 # Invalid field number.
2028 # Invalid field numbers (experimenter OXM).
2029 ffff020800002320(11112222)
2030 ffff030800002320(1111/3333)
2032 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow12 < oxm.txt],
2037 OXM_OF_IN_PORT(00000000)
2038 OXM_OF_IN_PORT(fffffffe)
2041 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
2042 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
2043 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2044 OXM_OF_METADATA(1234567890abcdef)
2045 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2048 OXM_OF_ETH_DST(0002e30f80a4)
2049 OXM_OF_ETH_DST_W(010000000000/010000000000)
2050 OXM_OF_ETH_DST_W(000000000000/010000000000)
2051 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2052 OXM_OF_ETH_DST(0002e30f80a4)
2053 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2054 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
2057 OXM_OF_ETH_SRC(020898456ddb)
2060 OXM_OF_ETH_TYPE(0800)
2061 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
2064 nx_pull_match() returned error OFPBMC_DUP_FIELD
2065 nx_pull_match() returned error OFPBMC_BAD_VALUE
2066 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2067 OXM_OF_VLAN_VID(0000)
2068 OXM_OF_VLAN_VID(1123)
2069 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
2070 OXM_OF_VLAN_VID(0123)
2071 OXM_OF_VLAN_VID_W(0123/0123)
2072 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2073 OXM_OF_VLAN_VID_W(0123/1123)
2074 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2075 OXM_OF_VLAN_VID(1123)
2076 OXM_OF_VLAN_VID(1123)
2078 OXM_OF_VLAN_VID_W(1103/1f0f)
2079 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
2080 OXM_OF_VLAN_VID_W(1000/1000)
2081 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
2084 nx_pull_match() returned error OFPBMC_BAD_VALUE
2085 nx_pull_match() returned error OFPBMC_BAD_VALUE
2086 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
2087 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2090 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
2091 nx_pull_match() returned error OFPBMC_BAD_VALUE
2092 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2095 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
2096 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
2097 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2100 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
2101 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
2102 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
2103 OXM_OF_ETH_TYPE(0800)
2104 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2105 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2108 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
2109 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
2110 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
2111 OXM_OF_ETH_TYPE(0800)
2112 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2113 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2116 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
2117 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
2118 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
2119 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
2120 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2122 # TCP destination port
2123 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
2124 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
2125 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
2126 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
2127 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2130 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
2131 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
2132 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
2133 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
2134 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2136 # UDP destination port
2137 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
2138 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
2139 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
2140 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
2141 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2144 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
2145 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
2146 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
2147 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2148 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2150 # SCTP destination port
2151 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
2152 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
2153 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
2154 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2155 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2158 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
2159 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2162 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
2163 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2164 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2165 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2168 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
2169 nx_pull_match() returned error OFPBMC_BAD_VALUE
2170 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2171 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2172 nx_pull_match() returned error OFPBMC_DUP_FIELD
2174 # ARP source protocol address
2175 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
2176 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
2177 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
2178 OXM_OF_ETH_TYPE(0806)
2179 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2180 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2182 # ARP destination protocol address
2183 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
2184 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
2185 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
2186 OXM_OF_ETH_TYPE(0806)
2187 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2188 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2190 # ARP source hardware address
2191 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2192 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2193 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2194 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2195 OXM_OF_ETH_TYPE(0806)
2196 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
2198 # ARP destination hardware address
2199 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2200 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2201 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2202 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2203 OXM_OF_ETH_TYPE(0806)
2204 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
2207 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
2208 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2209 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2210 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
2211 OXM_OF_ETH_TYPE(86dd)
2212 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2215 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
2216 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2217 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2218 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
2219 OXM_OF_ETH_TYPE(86dd)
2220 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2223 nx_pull_match() returned error OFPBMC_BAD_VALUE
2224 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2225 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2226 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
2227 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2228 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
2229 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2230 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2231 OXM_OF_ETH_TYPE(86dd)
2233 # ND source hardware address
2234 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)
2235 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2236 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2237 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2239 # ND destination hardware address
2240 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)
2241 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2242 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2243 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2245 # Registers 0, 1, and 2.
2246 NXM_NX_REG0(acebdf56)
2247 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2248 NXM_NX_REG0(a0e0d050)
2249 NXM_NX_REG1(acebdf56)
2250 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2251 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2252 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2253 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2255 # Extended registers 0, 1, and 2.
2256 # (For OpenFlow 1.2, OVS transforms these into its extension registers.)
2257 NXM_NX_REG0(acebdf56)
2258 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2259 NXM_NX_REG0(a0e0d050)
2260 NXM_NX_REG1(acebdf56)
2261 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2262 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2263 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2264 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2266 # Invalid field number.
2267 nx_pull_match() returned error OFPBMC_BAD_FIELD
2269 # Invalid field numbers (experimenter OXM).
2270 nx_pull_match() returned error OFPBMC_BAD_FIELD
2271 nx_pull_match() returned error OFPBMC_BAD_FIELD
2274 # Check that at least the first warning made it. (It's rate-limited
2275 # so a variable number could show up, especially under valgrind etc.)
2276 AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
2277 nx_match|WARN|Rejecting NXM/OXM entry 0:32768:2:1:16 with 1-bits in value for bits wildcarded by the mask.
2280 # Check that there wasn't any other stderr output.
2281 AT_CHECK([grep -v '1-bits in value' stderr], [1])
2284 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.3)])
2286 AT_DATA([oxm.txt], [dnl
2288 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2289 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2290 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2291 OXM_OF_ACTSET_OUTPUT(00000000)
2292 OXM_OF_ACTSET_OUTPUT(fffffffe)
2293 OXM_OF_ACTSET_OUTPUT(fffffff7)
2295 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow13 < oxm.txt],
2298 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2299 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2300 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2301 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2302 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2303 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2307 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.5)])
2309 AT_DATA([oxm.txt], [dnl
2310 # Extended registers 0 and 1.
2311 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2312 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2313 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2314 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2315 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2316 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2317 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2318 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2320 # Registers 0, 1, and 2.
2321 # (OpenFlow 1.5 transforms these into the standard "xregs".)
2322 NXM_NX_REG0(acebdf56)
2323 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2324 NXM_NX_REG0(a0e0d050)
2325 NXM_NX_REG1(acebdf56)
2326 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2327 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2328 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2329 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2332 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2333 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2334 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2335 OXM_OF_ACTSET_OUTPUT(00000000)
2336 OXM_OF_ACTSET_OUTPUT(fffffffe)
2337 OXM_OF_ACTSET_OUTPUT(fffffff7)
2339 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow15 < oxm.txt],
2341 # Extended registers 0 and 1.
2342 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2343 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2344 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2345 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2346 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2347 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2348 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2349 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2351 # Registers 0, 1, and 2.
2352 # (OpenFlow 1.5 transforms these into the standard "xregs".)
2353 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2354 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2355 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2356 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2357 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2358 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2359 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2360 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2363 OXM_OF_ACTSET_OUTPUT(00000000)
2364 OXM_OF_ACTSET_OUTPUT(fffffffe)
2365 OXM_OF_ACTSET_OUTPUT(fffffff7)
2366 OXM_OF_ACTSET_OUTPUT(00000000)
2367 OXM_OF_ACTSET_OUTPUT(fffffffe)
2368 OXM_OF_ACTSET_OUTPUT(fffffff7)
2372 AT_SETUP([ovs-ofctl parse-oxm loose])
2374 AT_DATA([oxm.txt], [dnl
2375 OXM_OF_IN_PORT(00000001), 01020304(1111/3333), OXM_OF_ETH_TYPE(0800)
2376 OXM_OF_IN_PORT(00000001), ffff020800002320(11112222), OXM_OF_ETH_TYPE(0800)
2377 OXM_OF_IN_PORT(00000001), ffff030800002320(1111/3333), OXM_OF_ETH_TYPE(0800)
2380 AT_CHECK([ovs-ofctl --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2381 nx_pull_match() returned error OFPBMC_BAD_FIELD
2382 nx_pull_match() returned error OFPBMC_BAD_FIELD
2383 nx_pull_match() returned error OFPBMC_BAD_FIELD
2386 AT_CHECK([ovs-ofctl parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2387 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2388 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2389 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2393 AT_SETUP([experimenter OXM encoding])
2394 AT_DATA([oxm.txt], [dnl
2395 NXM_NX_DP_HASH(01234567)
2396 NXOXM_ET_DP_HASH(01234567)
2398 NXM_NX_DP_HASH_W(01234567/0fffffff)
2399 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2402 # To allow for testing experimenter OXM, which doesn't really have many
2403 # examples in the wild, we've defined a variant of NXM_NX_DP_HASH that uses
2404 # the experimenter OXM mechanism, called NXOXM_ET_DP_HASH. We've defined
2405 # it as if it were introduced with OpenFlow 1.5, which gives us the
2406 # opportunity to see that both forms are accepted in all OpenFlow versions
2407 # but the experimenter form is used for encoding in OF1.5+.
2409 # First verify that both forms are accepted and NXOXM_ET_DP_HASH is encoded
2411 AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow15 < oxm.txt], [0], [dnl
2412 NXOXM_ET_DP_HASH(01234567)
2413 00000000 00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
2414 NXOXM_ET_DP_HASH(01234567)
2415 00000000 00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
2417 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2418 00000000 00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
2419 00000010 0f ff ff ff 00 00 00 00-
2420 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2421 00000000 00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
2422 00000010 0f ff ff ff 00 00 00 00-
2425 # Then verify that both forms are accepted and NXM_NX_DP_HASH is encoded
2427 AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2428 NXM_NX_DP_HASH(01234567)
2429 00000000 00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
2430 NXM_NX_DP_HASH(01234567)
2431 00000000 00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
2433 NXM_NX_DP_HASH_W(01234567/0fffffff)
2434 00000000 00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2435 NXM_NX_DP_HASH_W(01234567/0fffffff)
2436 00000000 00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2440 AT_SETUP([check TCP flags expression in OXM and NXM])
2441 # NXM/OXM input for matching on TCP flags.
2442 tcp_flags='OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff)'
2444 # Check that marshaling into NXM gives all NXM headers.
2445 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-nxm], [0],
2446 [NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2449 # Check that marshaling in OXM for OF1.2 gives OXM headers except for
2450 # TCP flags, which didn't have an OXM definition.
2451 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow12], [0],
2452 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2455 # Check that marshaling in OXM for OF1.3 and OF1.4 gives OXM headers,
2456 # including the ONF extension for TCP flags introduced in OF1.3.
2457 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow13], [0],
2458 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
2460 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow14], [0],
2461 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
2464 # OpenFlow 1.5 added an OXM header for TCP flags:
2465 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow15], [0],
2466 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff)
2470 dnl Check all of the patterns mentioned in the "VLAN Matching" section
2471 dnl in the DESIGN file at top level.
2472 AT_SETUP([ovs-ofctl check-vlan])
2476 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2478 NXM: <any> -> 0000/0000
2479 OXM: <any> -> 0000/0000,--
2480 OF1.0: 0000/1,00/1 -> 0000/0000
2481 OF1.1: 0000/1,00/1 -> 0000/0000
2485 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2486 vlan_tci=0x0000 -> 0000/ffff
2487 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
2488 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
2489 OF1.0: ffff/0,00/0 -> 0000/ffff
2490 OF1.1: ffff/0,00/1 -> 0000/ffff
2494 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2495 dl_vlan=2748 -> 1abc/1fff
2496 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
2497 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
2498 OF1.0: 0abc/0,00/1 -> 1abc/1fff
2499 OF1.1: 0abc/0,00/1 -> 1abc/1fff
2503 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2504 dl_vlan_pcp=5 -> b000/f000
2505 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
2506 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
2507 OF1.0: 0000/1,05/0 -> b000/f000
2508 OF1.1: fffe/0,05/0 -> b000/f000
2512 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2513 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2514 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
2515 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
2516 OF1.0: 0abc/0,05/0 -> babc/ffff
2517 OF1.1: 0abc/0,05/0 -> babc/ffff
2521 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2522 vlan_tci=0x0000/0x0fff -> 0000/0fff
2523 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
2524 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2525 OF1.0: 0000/0,00/1 -> 1000/1fff
2526 OF1.1: 0000/0,00/1 -> 1000/1fff
2530 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2531 vlan_tci=0x0000/0xf000 -> 0000/f000
2532 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
2533 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
2534 OF1.0: ffff/0,00/0 -> 0000/ffff
2535 OF1.1: ffff/0,00/1 -> 0000/ffff
2539 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2540 vlan_tci=0x0000/0xefff -> 0000/efff
2541 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
2542 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2543 OF1.0: 0000/0,00/0 -> 1000/ffff
2544 OF1.1: 0000/0,00/0 -> 1000/ffff
2548 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2549 vlan_tci=0x1001/0x1001 -> 1001/1001
2550 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
2551 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
2552 OF1.0: 0001/0,00/1 -> 1001/1fff
2553 OF1.1: 0001/0,00/1 -> 1001/1fff
2557 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2558 vlan_tci=0x3000/0x3000 -> 3000/3000
2559 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
2560 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
2561 OF1.0: 0000/1,01/0 -> 3000/f000
2562 OF1.1: fffe/0,01/0 -> 3000/f000
2567 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2568 dnl such as tunnels and metadata.
2569 AT_SETUP([ovs-ofctl -F option and NXM features])
2570 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
2571 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2573 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
2574 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
2578 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2579 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2580 dnl additionally show up as the top 32 bits of the cookie.) This checks
2581 dnl for regression against bug #4566.
2582 AT_SETUP([ovs-ofctl -F option with flow_mods])
2584 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
2585 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
2587 tun_id=0x12345678 actions=drop
2592 dnl Check that "-F openflow10" is really honored on dump-flows.
2593 dnl (If it isn't, then dump-flows will show the register match.)
2594 AT_SETUP([ovs-ofctl dump-flows honors -F option])
2596 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
2597 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
2604 dnl Check that "-F openflow10" fails on dump-flows if the requested match
2605 dnl can't be represented in OpenFlow 1.0.
2606 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
2608 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
2609 [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2614 dnl Check that add-flow reports non-normalized flows (feature #5029).
2615 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
2617 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2619 ofp_util|INFO|normalization changed ofp_match, details:
2620 ofp_util|INFO| pre: nw_src=1.2.3.4
2621 ofp_util|INFO|post: @&t@
2626 dnl Check that --sort and --rsort works with dump-flows
2627 dnl Default field is 'priority'. Flow entries are displayed based
2628 dnl on field to sort.
2629 AT_SETUP([ovs-ofctl dump-flows with sorting])
2632 AT_DATA([allflows.txt], [[
2633 priority=4,in_port=23213 actions=output:42
2634 priority=5,in_port=1029 actions=output:43
2635 priority=7,in_port=1029 actions=output:43
2636 priority=3,in_port=1028 actions=output:44
2637 priority=1,in_port=1026 actions=output:45
2638 priority=6,in_port=1027 actions=output:64
2639 priority=2,in_port=1025 actions=output:47
2640 priority=8,tcp,tp_src=5 actions=drop
2641 priority=9,tcp,tp_src=6 actions=drop
2644 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2646 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2647 priority=1,in_port=1026 actions=output:45
2648 priority=2,in_port=1025 actions=output:47
2649 priority=3,in_port=1028 actions=output:44
2650 priority=4,in_port=23213 actions=output:42
2651 priority=5,in_port=1029 actions=output:43
2652 priority=6,in_port=1027 actions=output:64
2653 priority=7,in_port=1029 actions=output:43
2654 priority=8,tcp,tp_src=5 actions=drop
2655 priority=9,tcp,tp_src=6 actions=drop
2657 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2658 priority=9,tcp,tp_src=6 actions=drop
2659 priority=8,tcp,tp_src=5 actions=drop
2660 priority=7,in_port=1029 actions=output:43
2661 priority=6,in_port=1027 actions=output:64
2662 priority=5,in_port=1029 actions=output:43
2663 priority=4,in_port=23213 actions=output:42
2664 priority=3,in_port=1028 actions=output:44
2665 priority=2,in_port=1025 actions=output:47
2666 priority=1,in_port=1026 actions=output:45
2668 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2669 priority=2,in_port=1025 actions=output:47
2670 priority=1,in_port=1026 actions=output:45
2671 priority=6,in_port=1027 actions=output:64
2672 priority=3,in_port=1028 actions=output:44
2673 priority=7,in_port=1029 actions=output:43
2674 priority=5,in_port=1029 actions=output:43
2675 priority=4,in_port=23213 actions=output:42
2676 priority=9,tcp,tp_src=6 actions=drop
2677 priority=8,tcp,tp_src=5 actions=drop
2679 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2680 priority=4,in_port=23213 actions=output:42
2681 priority=7,in_port=1029 actions=output:43
2682 priority=5,in_port=1029 actions=output:43
2683 priority=3,in_port=1028 actions=output:44
2684 priority=6,in_port=1027 actions=output:64
2685 priority=1,in_port=1026 actions=output:45
2686 priority=2,in_port=1025 actions=output:47
2687 priority=9,tcp,tp_src=6 actions=drop
2688 priority=8,tcp,tp_src=5 actions=drop
2690 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2691 priority=8,tcp,tp_src=5 actions=drop
2692 priority=9,tcp,tp_src=6 actions=drop
2693 priority=7,in_port=1029 actions=output:43
2694 priority=6,in_port=1027 actions=output:64
2695 priority=5,in_port=1029 actions=output:43
2696 priority=4,in_port=23213 actions=output:42
2697 priority=3,in_port=1028 actions=output:44
2698 priority=2,in_port=1025 actions=output:47
2699 priority=1,in_port=1026 actions=output:45
2702 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2703 [ priority=2,in_port=1025 actions=output:47
2704 priority=1,in_port=1026 actions=output:45
2705 priority=6,in_port=1027 actions=output:64
2706 priority=3,in_port=1028 actions=output:44
2707 priority=7,in_port=1029 actions=output:43
2708 priority=5,in_port=1029 actions=output:43
2709 priority=4,in_port=23213 actions=output:42
2710 priority=8,tcp,tp_src=5 actions=drop
2711 priority=9,tcp,tp_src=6 actions=drop
2716 AT_SETUP([ovs-ofctl diff-flows])
2719 # Add tons of flows to br0.
2720 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2721 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2723 # Dump them and compare against what we expect by hand, then with diff-flows.
2724 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2725 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2727 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2729 # Remove even-numbered flows, compare again.
2730 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2731 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2732 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2733 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2734 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2735 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2740 dnl ofpacts that differ bytewise don't necessarily differ when
2741 dnl converted to another representation, such as OpenFlow 1.0
2742 dnl or to a string. "resubmit(,1)" is an example of an action
2743 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2744 dnl values even though this doesn't affect the string format.
2746 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2747 dnl false ofpacts differences.
2748 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2750 AT_DATA([flows.txt], [actions=resubmit(,1)
2752 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2753 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2754 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2755 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2756 -dl_vlan=9 idle_timeout=60 actions=output:1
2758 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2759 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2760 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2765 AT_SETUP([ovs-ofctl -F and -O interaction])
2766 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2767 [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.)
2769 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2770 [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.)
2772 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2773 [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.)
2775 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2776 [ovs-ofctl: missing command name; use --help for help
2778 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2779 [ovs-ofctl: missing command name; use --help for help
2781 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2782 [ovs-ofctl: missing command name; use --help for help
2786 AT_SETUP([ovs-ofctl ofp-parse])
2787 # Test the echo request/reply messages (0 payload).
2788 AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2789 AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2790 OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2791 OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2794 # Test the hello (xid:1 3-byte payload).
2795 AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2796 AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2797 OFPT_HELLO (xid=0x1):
2798 version bitmap: 0x01
2799 unknown data in hello:
2800 00000000 01 00 00 0b 00 00 00 01-41 42 43 |........ABC |
2804 AT_SETUP([tcp flags - filtering])
2805 OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 \
2806 -- add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
2807 AT_DATA([flows.txt], [dnl
2808 in_port=1,tcp,tp_dst=80,tcp_flags=+syn-rst-ack-fin,action=2 # Allow outbound web traffic bare-SYN
2809 in_port=1,tcp,tp_dst=80,tcp_flags=+ack,action=2 # Allow outbound web traffic with ACK bit
2810 in_port=1,tcp,tp_dst=80,tcp_flags=+rst,action=2 # Allow outbound web traffic with RST bit
2811 in_port=2,tcp,tp_src=80,tcp_flags=+ack,action=1 # Allow inbound web traffic with ACK bit
2812 in_port=2,tcp,tp_src=80,tcp_flags=+rst,action=1 # Allow inbound web traffic with RST bit
2813 priority=0,in_port=1,action=drop # Default drop outbound
2814 priority=0,in_port=2,action=drop # Default drop inbound
2817 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2819 AT_CHECK([ovs-ofctl add-flow br0 "tcp,tcp_flags=+ack-ack,action="], [1], [],
2820 [ovs-ofctl: ack: Each TCP flag can be specified only once
2823 AT_CHECK([ovs-appctl dpif/show | tail -n +4], [0], [dnl
2828 dnl Outbound web traffic with bare-SYN
2829 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x002)'], [0], [stdout])
2830 AT_CHECK([tail -1 stdout], [0],
2831 [Datapath actions: 2
2834 dnl Outbopund web traffic with ACK bit
2835 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x110)'], [0], [stdout])
2836 AT_CHECK([tail -1 stdout], [0],
2837 [Datapath actions: 2
2840 dnl Outbound web traffic with RST bit
2841 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x104)'], [0], [stdout])
2842 AT_CHECK([tail -1 stdout], [0],
2843 [Datapath actions: 2
2846 dnl Inbound web traffic with ACK bit
2847 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0x010)'], [0], [stdout])
2848 AT_CHECK([tail -1 stdout], [0],
2849 [Datapath actions: 1
2852 dnl Inbound web traffic with RST bit
2853 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0x014)'], [0], [stdout])
2854 AT_CHECK([tail -1 stdout], [0],
2855 [Datapath actions: 1
2858 dnl Inbound web traffic with SYN bit without ACK or RST bits
2859 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0xfeb)'], [0], [stdout])
2860 AT_CHECK([tail -1 stdout], [0],
2861 [Datapath actions: drop
2867 dnl Check importance parameter added in OF1.4.
2868 dnl It validates whether importance set via add-flow via OpenFlow1.4+ gets
2869 dnl set or not by validating it against the dump-flows output via OpenFlow1.4+
2870 dnl If add-flow or dump-flows is used with later version of OpenFlow prior to 1.4+
2871 dnl then the importance will be considered zero whether provided as an argument.
2873 AT_SETUP([ovs-ofctl rule with importance])
2875 dnl Flow with importance parameter added via OF1.4+ and later version
2876 AT_CHECK([ovs-ofctl -O OpenFlow14 add-flow br0 priority=21,importance=21,actions=normal])
2877 AT_CHECK([ovs-ofctl add-flow br0 priority=22,importance=22,actions=normal])
2879 dnl Importance parameter will only be visible of flows that are added via OF1.4+ if dumped via OF1.4+
2880 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
2881 importance=21, priority=21 actions=NORMAL
2882 reset_counts priority=22 actions=NORMAL
2885 dnl Importance parameter will not be visible if flow is dumped with previous version prior to OF1.4+ whether added via OF1.4+
2886 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
2887 priority=21 actions=NORMAL
2888 priority=22 actions=NORMAL
2895 dnl Importance parameter added in OF1.4.
2896 dnl This validates whether flows with importance
2897 dnl parameter are getting replaced with "replace-flows" or
2898 dnl not by validating dump-flows output after replace with the expected output.
2900 AT_SETUP([ovs-ofctl replace-flows with importance])
2903 dnl Add flows to br0 with importance via OF1.4+. For more details refer "ovs-ofctl rule with importance" test case.
2904 for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
2905 AT_CHECK([ovs-ofctl -O OpenFlow14 add-flows br0 add-flows.txt])
2907 dnl Replace the flows in the bridge.
2908 for i in 1 3 5 7; do echo " importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt
2909 AT_CHECK([ovs-ofctl -O OpenFlow14 replace-flows br0 replace-flows.txt])
2911 dnl Dump them and compare the dump flows output against the expected output.
2912 cat replace-flows.txt > expout
2913 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
2919 AT_SETUP([ovs-ofctl replace-flows with --bundle])
2922 AT_CHECK([ovs-appctl vlog/set vconn:dbg])
2924 dnl Add flows to br0 with importance via OF1.4+, using an OF1.4+ bundle. For more details refer "ovs-ofctl rule with importance" test case.
2925 for i in 1 2 3 4 5 6 7 8; do echo "table=$i,dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
2926 AT_CHECK([ovs-ofctl --bundle add-flows br0 add-flows.txt])
2928 dnl Replace some flows in the bridge.
2929 for i in 1 3 5 7; do echo " table=$i, importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt
2930 AT_CHECK([ovs-ofctl --bundle replace-flows br0 replace-flows.txt])
2932 dnl Dump them and compare the dump flows output against the expected output.
2933 cat replace-flows.txt > expout
2934 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
2937 dnl Check logs for OpenFlow trace
2939 OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): OFPST_FLOW reply" | wc -l` -ge 2])
2940 # AT_CHECK([sed -n "s/^.*\(|vconn|DBG|.*xid=.*:\).*$/\1/p" ovs-vswitchd.log], [0], [dnl
2941 AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
2942 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
2943 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
2944 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
2945 version bitmap: 0x05
2946 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
2947 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
2948 bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
2949 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
2950 bundle_id=0 type=OPEN_REPLY flags=0
2951 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2952 bundle_id=0 flags=atomic ordered
2953 OFPT_FLOW_MOD (OF1.4): ADD table:1 dl_vlan=1 importance:1 actions=drop
2954 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2955 bundle_id=0 flags=atomic ordered
2956 OFPT_FLOW_MOD (OF1.4): ADD table:2 dl_vlan=2 importance:2 actions=drop
2957 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2958 bundle_id=0 flags=atomic ordered
2959 OFPT_FLOW_MOD (OF1.4): ADD table:3 dl_vlan=3 importance:3 actions=drop
2960 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2961 bundle_id=0 flags=atomic ordered
2962 OFPT_FLOW_MOD (OF1.4): ADD table:4 dl_vlan=4 importance:4 actions=drop
2963 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2964 bundle_id=0 flags=atomic ordered
2965 OFPT_FLOW_MOD (OF1.4): ADD table:5 dl_vlan=5 importance:5 actions=drop
2966 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2967 bundle_id=0 flags=atomic ordered
2968 OFPT_FLOW_MOD (OF1.4): ADD table:6 dl_vlan=6 importance:6 actions=drop
2969 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2970 bundle_id=0 flags=atomic ordered
2971 OFPT_FLOW_MOD (OF1.4): ADD table:7 dl_vlan=7 importance:7 actions=drop
2972 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2973 bundle_id=0 flags=atomic ordered
2974 OFPT_FLOW_MOD (OF1.4): ADD table:8 dl_vlan=8 importance:8 actions=drop
2975 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
2976 bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
2977 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
2978 bundle_id=0 type=COMMIT_REPLY flags=0
2979 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
2980 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
2981 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
2982 version bitmap: 0x05
2983 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
2984 vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
2985 vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
2986 table=1, importance=1, dl_vlan=1 actions=drop
2987 table=2, importance=2, dl_vlan=2 actions=drop
2988 table=3, importance=3, dl_vlan=3 actions=drop
2989 table=4, importance=4, dl_vlan=4 actions=drop
2990 table=5, importance=5, dl_vlan=5 actions=drop
2991 table=6, importance=6, dl_vlan=6 actions=drop
2992 table=7, importance=7, dl_vlan=7 actions=drop
2993 table=8, importance=8, dl_vlan=8 actions=drop
2994 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
2995 bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
2996 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
2997 bundle_id=0 type=OPEN_REPLY flags=0
2998 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2999 bundle_id=0 flags=atomic ordered
3000 OFPT_FLOW_MOD (OF1.4): ADD table:1 dl_vlan=1 importance:11 actions=drop
3001 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3002 bundle_id=0 flags=atomic ordered
3003 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:2 dl_vlan=2 actions=drop
3004 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3005 bundle_id=0 flags=atomic ordered
3006 OFPT_FLOW_MOD (OF1.4): ADD table:3 dl_vlan=3 importance:13 actions=drop
3007 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3008 bundle_id=0 flags=atomic ordered
3009 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:4 dl_vlan=4 actions=drop
3010 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3011 bundle_id=0 flags=atomic ordered
3012 OFPT_FLOW_MOD (OF1.4): ADD table:5 dl_vlan=5 importance:15 actions=drop
3013 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3014 bundle_id=0 flags=atomic ordered
3015 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:6 dl_vlan=6 actions=drop
3016 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3017 bundle_id=0 flags=atomic ordered
3018 OFPT_FLOW_MOD (OF1.4): ADD table:7 dl_vlan=7 importance:17 actions=drop
3019 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3020 bundle_id=0 flags=atomic ordered
3021 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:8 dl_vlan=8 actions=drop
3022 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
3023 bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
3024 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
3025 bundle_id=0 type=COMMIT_REPLY flags=0
3026 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
3027 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
3028 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
3029 version bitmap: 0x05
3030 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
3031 vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
3032 vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
3033 table=1, importance=11, dl_vlan=1 actions=drop
3034 table=3, importance=13, dl_vlan=3 actions=drop
3035 table=5, importance=15, dl_vlan=5 actions=drop
3036 table=7, importance=17, dl_vlan=7 actions=drop