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 'xxreg3[[0..0]]=1 NXM,OXM' \
83 'xxreg3[[126..127]]=3 NXM,OXM' \
84 'reg3[[]]=3 NXM,OXM' \
85 'dl_src=00:11:22:33:44:55 any' \
86 'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
87 'dl_dst=00:11:22:33:44:55 any' \
88 'dl_dst=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
89 'dl_type=0x1234 any' \
90 'dl_type=0x0800 any' \
91 'dl_type=0x0806 any' \
92 'dl_type=0x86dd any' \
94 'vlan_tci=0x1009 any' \
95 'vlan_tci=0x1009/0x1 NXM,OXM' \
98 'vlan_vid=11/0x1 NXM,OXM' \
101 'mpls,mpls_label=5 NXM,OXM,OpenFlow11' \
102 'mpls,mpls_tc=1 NXM,OXM,OpenFlow11' \
103 'mpls,mpls_bos=0 NXM,OXM' \
104 'ip,ip_src=1.2.3.4 any' \
105 'ip,ip_src=192.168.0.0/24 any' \
106 'ip,ip_src=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
107 'ip,ip_dst=1.2.3.4 any' \
108 'ip,ip_dst=192.168.0.0/24 any' \
109 'ip,ip_dst=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
110 'ipv6,ipv6_src=::1 NXM,OXM' \
111 'ipv6,ipv6_src=0:0:0:0:0:0:0:1/::1 NXM,OXM' \
112 'ipv6,ipv6_dst=::1 NXM,OXM' \
113 'ipv6,ipv6_dst=0:0:0:0:0:0:0:1/::1 NXM,OXM' \
114 'ipv6,ipv6_label=5 NXM,OXM' \
115 'ipv6,ipv6_label=5/1 NXM,OXM' \
116 'ip,nw_proto=1 any' \
117 'ipv6,nw_proto=1 NXM,OXM' \
118 'ip,nw_tos=0xf0 any' \
119 'ipv6,nw_tos=0xf0 NXM,OXM' \
120 'ip,ip_dscp=0x3c any' \
121 'ipv6,ip_dscp=0x3c NXM,OXM' \
122 'ip,nw_ecn=1 NXM,OXM,OpenFlow11' \
123 'ipv6,nw_ecn=1 NXM,OXM' \
124 'ip,nw_ttl=5 NXM,OXM' \
125 'ipv6,nw_ttl=5 NXM,OXM' \
126 'ip,ip_frag=no NXM,OXM' \
127 'ipv6,ip_frag=no NXM,OXM' \
129 'arp,arp_spa=1.2.3.4 any' \
130 'arp,arp_spa=1.2.3.4/0.0.0.1 NXM,OXM,OpenFlow11' \
131 'arp,arp_tpa=1.2.3.4 any' \
132 'arp,arp_tpa=1.2.3.4/0.0.0.1 NXM,OXM,OpenFlow11' \
133 'arp,arp_sha=00:11:22:33:44:55 NXM,OXM' \
134 'arp,arp_sha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
135 'arp,arp_tha=00:11:22:33:44:55 NXM,OXM' \
136 'arp,arp_tha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
137 'tcp,tcp_src=80 any' \
138 'tcp,tcp_src=0x1000/0x1000 NXM,OXM' \
139 'tcp6,tcp_src=80 NXM,OXM' \
140 'tcp6,tcp_src=0x1000/0x1000 NXM,OXM' \
141 'tcp,tcp_dst=80 any' \
142 'tcp,tcp_dst=0x1000/0x1000 NXM,OXM' \
143 'tcp6,tcp_dst=80 NXM,OXM' \
144 'tcp6,tcp_dst=0x1000/0x1000 NXM,OXM' \
145 'udp,udp_src=80 any' \
146 'udp,udp_src=0x1000/0x1000 NXM,OXM' \
147 'udp6,udp_src=80 NXM,OXM' \
148 'udp6,udp_src=0x1000/0x1000 NXM,OXM' \
149 'udp,udp_dst=80 any' \
150 'udp,udp_dst=0x1000/0x1000 NXM,OXM' \
151 'udp6,udp_dst=80 NXM,OXM' \
152 'udp6,udp_dst=0x1000/0x1000 NXM,OXM' \
153 'udp6,udp_dst[[12]]=1 NXM,OXM' \
154 'icmp,icmp_type=1 any' \
155 'icmp,icmp_code=2 any' \
156 'icmp6,icmpv6_type=1 NXM,OXM' \
157 'icmp6,icmpv6_code=2 NXM,OXM' \
158 'ct_state=+trk NXM,OXM' \
159 'ct_zone=0 NXM,OXM' \
160 'ct_mark=0 NXM,OXM' \
161 'ct_label=0 NXM,OXM' \
162 'ct_label=0x1234567890ABCDEF12345678 NXM,OXM'
166 echo "### test case: '$1' should have usable protocols '$2'"
167 if test "$2" = none; then
168 AT_CHECK([ovs-ofctl parse-flow "$1,actions=drop"], [1],
171 [ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
174 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$1,actions=drop" | sed 1q], [0],
175 [usable protocols: $2
181 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
182 AT_DATA([flows.txt], [[
184 tcp,tp_src=123,actions=flood
185 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
186 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
187 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
188 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
189 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
190 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
191 ip,actions=set_field:10.4.3.77->ip_src,mod_nw_ecn:2
194 in_port=0 actions=resubmit:0
195 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
196 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,ingress)
197 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
198 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789,egress)
200 ip,actions=ct(commit,nat(dst))
201 ip,actions=ct(commit,nat(src))
202 ip,actions=ct(commit,nat(src=10.0.0.240,random))
203 ip,actions=ct(commit,nat(src=10.0.0.240:32768-65535,random))
204 ip,actions=ct(commit,nat(dst=10.0.0.128-10.0.0.254,hash))
205 ip,actions=ct(commit,nat(src=10.0.0.240-10.0.0.254:32768-65535,persistent))
206 ipv6,actions=ct(commit,nat(src=fe80::20c:29ff:fe88:a18b,random))
207 ipv6,actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
208 ipv6,actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
209 tcp,actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
210 actions=in_port,output:in_port
213 AT_CHECK([ovs-ofctl parse-flows flows.txt
215 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
216 [[usable protocols: any
217 chosen protocol: OpenFlow10-table_id
218 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
219 OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
220 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
221 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
222 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
223 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
224 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
225 OFPT_FLOW_MOD: ADD ip actions=mod_nw_src:10.4.3.77,load:0x2->NXM_NX_IP_ECN[]
226 OFPT_FLOW_MOD: ADD sctp actions=drop
227 OFPT_FLOW_MOD: ADD sctp actions=drop
228 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
229 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
230 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,ingress)
231 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
232 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789,egress)
233 OFPT_FLOW_MOD: ADD ip actions=ct(nat)
234 OFPT_FLOW_MOD: ADD ip actions=ct(commit,nat(dst))
235 OFPT_FLOW_MOD: ADD ip actions=ct(commit,nat(src))
236 OFPT_FLOW_MOD: ADD ip actions=ct(commit,nat(src=10.0.0.240,random))
237 OFPT_FLOW_MOD: ADD ip actions=ct(commit,nat(src=10.0.0.240:32768-65535,random))
238 OFPT_FLOW_MOD: ADD ip actions=ct(commit,nat(dst=10.0.0.128-10.0.0.254,hash))
239 OFPT_FLOW_MOD: ADD ip actions=ct(commit,nat(src=10.0.0.240-10.0.0.254:32768-65535,persistent))
240 OFPT_FLOW_MOD: ADD ipv6 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:a18b,random))
241 OFPT_FLOW_MOD: ADD ipv6 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
242 OFPT_FLOW_MOD: ADD ipv6 actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
243 OFPT_FLOW_MOD: ADD tcp actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
244 OFPT_FLOW_MOD: ADD actions=IN_PORT,IN_PORT
248 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.1)])
249 AT_DATA([flows.txt], [[
251 tcp,tp_src=123,actions=flood
252 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
253 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
254 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
255 udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
256 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
257 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
258 ip,actions=mod_nw_ttl:1,set_field:10.4.3.77->ip_src
261 in_port=0 actions=resubmit:0
262 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
263 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
266 AT_CHECK([ovs-ofctl --protocols OpenFlow11 parse-flows flows.txt
268 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
269 [[usable protocols: any
270 chosen protocol: OpenFlow11
271 OFPT_FLOW_MOD (OF1.1): ADD tcp,tp_src=123 actions=FLOOD
272 OFPT_FLOW_MOD (OF1.1): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
273 OFPT_FLOW_MOD (OF1.1): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
274 OFPT_FLOW_MOD (OF1.1): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
275 OFPT_FLOW_MOD (OF1.1): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
276 OFPT_FLOW_MOD (OF1.1): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
277 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
278 OFPT_FLOW_MOD (OF1.1): ADD ip actions=mod_nw_ttl:1,mod_nw_src:10.4.3.77
279 OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
280 OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
281 OFPT_FLOW_MOD (OF1.1): ADD in_port=0 actions=resubmit:0
282 OFPT_FLOW_MOD (OF1.1): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
283 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)
287 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
288 AT_DATA([flows.txt], [[
290 tcp,tp_src[5]=1,actions=flood
291 tcp,tp_src[6..10]=19,actions=flood
292 tcp,tp_src=123,actions=flood
293 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=mod_vlan_vid:7,mod_vlan_pcp:2
294 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
295 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
296 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
297 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
298 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
299 ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
300 sctp actions=set_field:3334->sctp_src
301 sctp actions=set_field:4445->sctp_dst
302 tcp actions=mod_tp_dst:1234
303 udp actions=mod_tp_src:1111
304 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
305 in_port=0 actions=mod_dl_src:11:22:33:44:55:66,mod_dl_dst:10:20:30:40:50:60
306 in_port=0 actions=resubmit:0
307 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
308 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
311 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
313 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
314 [[usable protocols: NXM,OXM
315 chosen protocol: OXM-OpenFlow12
316 OFPT_FLOW_MOD (OF1.2): ADD tcp,tp_src=0x20/0x20 actions=FLOOD
317 OFPT_FLOW_MOD (OF1.2): ADD tcp,tp_src=0x4c0/0x7c0 actions=FLOOD
318 OFPT_FLOW_MOD (OF1.2): ADD tcp,tp_src=123 actions=FLOOD
319 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
320 OFPT_FLOW_MOD (OF1.2): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
321 OFPT_FLOW_MOD (OF1.2): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
322 OFPT_FLOW_MOD (OF1.2): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
323 OFPT_FLOW_MOD (OF1.2): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
324 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
325 OFPT_FLOW_MOD (OF1.2): ADD ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
326 OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:3334->sctp_src
327 OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:4445->sctp_dst
328 OFPT_FLOW_MOD (OF1.2): ADD tcp actions=set_field:1234->tcp_dst
329 OFPT_FLOW_MOD (OF1.2): ADD udp actions=set_field:1111->udp_src
330 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
331 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
332 OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=resubmit:0
333 OFPT_FLOW_MOD (OF1.2): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
334 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)
338 AT_SETUP([ovs-ofctl parse-flow with invalid mask])
343 'eth_type 0x1234/0x1' \
345 'dl_vlan_pcp 6/0x1' \
347 'mpls mpls_label 5/0x1' \
348 'mpls mpls_tc 1/0x1' \
349 'mpls mpls_bos 1/0x1' \
351 'ipv6 nw_proto 1/1' \
352 'ip nw_tos 0xf0/0xf0' \
353 'ipv6 nw_tos 0xf0/0xf0' \
354 'ip ip_dscp 0x3c/0xf0' \
355 'ipv6 ip_dscp 0x3c/0xf0' \
361 'icmp icmp_type 1/1' \
362 'icmp icmp_code 2/1' \
363 'icmp6 icmpv6_code 2/1'
367 prereq=$1, field=$2 value=$3
369 prereq= field=$1 value=$2
371 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$prereq$field=$value,actions=drop"], [1], [],
372 [ovs-ofctl: $value: invalid mask for field $field
377 AT_SETUP([ovs-ofctl action inconsistency (OpenFlow 1.1)])
379 add_of_ports br0 1 2 3
380 AT_CHECK([ovs-ofctl --protocols OpenFlow11 add-flow br0 'ip actions=mod_tp_dst:1234'
381 ], [1], [stdout], [ovs-ofctl: none of the usable flow formats (OpenFlow10,NXM) is among the allowed flow formats (OpenFlow11)
386 AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
387 AT_DATA([flows.txt], [[
388 skb_priority=0x12341234,tcp,tp_src=123,actions=flood
391 AT_CHECK([ovs-ofctl parse-flows flows.txt
398 AT_SETUP([ovs-ofctl parse-flows (NXM)])
399 AT_DATA([flows.txt], [[
401 tcp,tp_src=123,actions=flood
402 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
403 pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
404 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
405 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
406 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
407 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
408 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
409 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
410 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
411 actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, reg0[0..12])
413 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
414 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
415 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
416 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
417 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
418 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
419 actions=bundle_load(eth_src,50,active_backup,ofport,reg0,slaves:1)
420 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
421 actions=bundle_load(symmetric_l4,60,hrw,ofport,reg0[0..15],slaves:[2,3])
422 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
423 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
424 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
425 send_flow_rem,actions=output:1,output:NXM_NX_REG0,output:2,output:reg1[16..31],output:3
426 check_overlap,actions=output:1,exit,output:2
427 tcp,actions=fin_timeout(idle_timeout=5,hard_timeout=15)
428 actions=controller(max_len=123,reason=invalid_ttl,id=555)
429 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
430 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
431 ip,actions=ct(commit,zone=5)
432 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[])))
433 ip,actions=ct(commit,exec(load(0x1->NXM_NX_CT_LABEL[])))
434 ip,actions=ct(commit,exec(load(0x1234567890ABCDEF->NXM_NX_CT_LABEL[32..95])))
435 ip,actions=ct(commit,exec(load(1->ct_mark)))
436 ip,actions=ct(commit,exec(load(0x1->ct_label[])))
437 ip,actions=ct(commit,exec(load(0x1234567890ABCDEF->ct_label[32..95])))
438 ip,actions=ct(commit,exec(set_field(0x1->ct_label)))
439 ip,ct_state=+trk,ct_label=0x1234567890abcdef12345678,actions=ct(commit)
440 actions=output(max_len=100,port=123)
441 actions=output(port=100,max_len=123)
442 actions=output(port=LOCAL,max_len=123)
443 actions=output(port=IN_PORT,max_len=123)
446 AT_CHECK([ovs-ofctl parse-flows flows.txt
448 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
449 [[usable protocols: OXM,NXM+table_id
450 chosen protocol: NXM+table_id
451 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
452 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
453 NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
454 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
455 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
456 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
457 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
458 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
459 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
460 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
461 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])
462 NXT_FLOW_MOD: ADD table:1 actions=drop
463 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
464 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
465 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
466 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
467 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
468 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
469 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
470 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
471 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
472 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
473 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
474 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
475 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
476 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
477 NXT_FLOW_MOD: ADD table:255 tcp actions=fin_timeout(idle_timeout=5,hard_timeout=15)
478 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
479 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
480 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)
481 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,zone=5)
482 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
483 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]))
484 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1234567890abcdef->NXM_NX_CT_LABEL[32..95]))
485 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
486 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]))
487 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1234567890abcdef->NXM_NX_CT_LABEL[32..95]))
488 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]))
489 NXT_FLOW_MOD: ADD table:255 ct_state=+trk,ct_label=0x1234567890abcdef12345678,ip actions=ct(commit)
490 NXT_FLOW_MOD: ADD table:255 actions=output(port=123,max_len=100)
491 NXT_FLOW_MOD: ADD table:255 actions=output(port=100,max_len=123)
492 NXT_FLOW_MOD: ADD table:255 actions=output(port=LOCAL,max_len=123)
493 NXT_FLOW_MOD: ADD table:255 actions=output(port=IN_PORT,max_len=123)
497 AT_SETUP([ovs-ofctl -F nxm parse-flows])
498 AT_DATA([flows.txt], [
500 tcp,tp_src=123,actions=flood
501 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
502 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
503 ipv6,ipv6_label=0x12345 actions=2
504 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
505 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
506 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
507 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
508 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
509 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
510 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
511 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
512 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
513 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
514 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
515 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
516 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
517 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
518 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
519 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
520 tun_id=0x1234,cookie=0x5678,actions=flood
522 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
523 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
524 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
525 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
526 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
527 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
528 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
529 ip,actions=ct(commit,zone=5)
530 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[[]])))
531 ip,actions=ct(commit,exec(load(0x1->NXM_NX_CT_LABEL[[]])))
533 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
535 # The substitution for fec0:0: is because some libcs (e.g. MUSL)
536 # abbreviate a single zero and others (e.g. glibc) don't.
537 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//
538 s/fec0:0:/fec0::/g' stdout]], [0], [dnl
539 usable protocols: NXM,OXM
540 chosen protocol: NXM-table_id
541 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
542 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
543 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
544 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
545 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
546 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
547 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
548 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
549 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
550 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
551 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
552 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
553 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
554 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0::1234:f045:8fff:1111:fe4e:571 actions=drop
555 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0::1234:f045:8fff:1111:fe4f:0/112 actions=drop
556 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
557 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0::1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
558 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0::1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
559 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
560 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
561 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
562 NXT_FLOW_MOD: ADD actions=drop
563 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
564 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
565 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
566 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
567 NXT_FLOW_MOD: ADD actions=drop
568 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
569 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
570 NXT_FLOW_MOD: ADD ip actions=ct(commit,zone=5)
571 NXT_FLOW_MOD: ADD ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[[]]))
572 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]]))
576 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
577 AT_DATA([flows.txt], [[
579 tcp,tp_src=123,actions=flood
580 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
581 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
582 ipv6,ipv6_label=0x12345 actions=2
583 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
584 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
585 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
586 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
587 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
588 sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
589 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
590 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
591 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
592 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
593 sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
594 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
595 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
596 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
597 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
598 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
599 tun_id=0x1234,cookie=0x5678,actions=flood
601 reg0=123,actions=move:reg0[0..5]->reg1[26..31],load:55->reg2,move:reg0->tun_id[0..31],move:reg0[0..15]->vlan_tci
602 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
603 actions=push:reg0[0..31],pop:NXM_NX_REG0[]
604 reg0=123,actions=move:reg0[0..5]->reg1[26..31],load:55->reg2,move:reg0->tun_id[0..31],move:reg0[0..15]->vlan_tci
605 actions=move:eth_dst->eth_src[]
606 actions=push:reg0[0..31],pop:reg0
607 vlan_tci=0x1123/0x1fff,actions=drop
608 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
609 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
610 ip,actions=ct(commit,zone=5)
611 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[])))
612 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_LABEL[])))
613 ip,actions=ct(commit,exec(set_field(1->ct_label)))
615 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
616 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
617 [[usable protocols: NXM,OXM
618 chosen protocol: NXM-table_id
619 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
620 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
621 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
622 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
623 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
624 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
625 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
626 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
627 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
628 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
629 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
630 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
631 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
632 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
633 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
634 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
635 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
636 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
637 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
638 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
639 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
640 NXT_FLOW_MOD: ADD <any> actions=drop
641 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[]
642 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
643 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
644 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[]
645 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
646 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
647 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
648 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
649 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
650 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,zone=5)
651 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
652 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]))
653 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]))
657 AT_SETUP([ovs-ofctl parse-nx-match])
658 AT_KEYWORDS([nx-match])
659 AT_DATA([nx-match.txt], [dnl
667 NXM_OF_ETH_DST(0002e30f80a4)
668 NXM_OF_ETH_DST_W(010000000000/010000000000)
669 NXM_OF_ETH_DST_W(000000000000/010000000000)
670 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
671 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
672 NXM_OF_ETH_DST_W(60175619848f/000000000000)
673 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
674 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
677 NXM_OF_ETH_SRC(020898456ddb)
678 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
679 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
680 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
683 NXM_OF_ETH_TYPE(0800)
684 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
687 NXM_OF_VLAN_TCI(f009)
688 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
689 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
690 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
691 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
692 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
693 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
694 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
695 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
696 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
699 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
700 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
704 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
705 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
709 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
710 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
714 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
715 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
719 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
720 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
721 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
722 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
723 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
724 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
727 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
728 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
729 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
730 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
731 NXM_OF_IP_DST(ac100014)
732 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
735 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
736 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
737 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
738 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
740 # TCP destination port
741 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
742 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
743 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
744 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
747 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS(0131)
748 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00F0/0FF0)
749 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(01E2/ffff)
750 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_NX_TCP_FLAGS(0fff)
753 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
754 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
755 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
756 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
758 # UDP destination port
759 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
760 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
761 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
762 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
765 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
766 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
769 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
770 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
771 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
775 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
776 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
777 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
779 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
781 # ARP source protocol address
782 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
783 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
784 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
785 NXM_OF_ETH_TYPE(0806) 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 # ARP destination protocol address
790 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
791 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
792 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
793 NXM_OF_ETH_TYPE(0806) 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 # ARP source hardware address
798 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
799 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
800 NXM_NX_ARP_SHA(0002e30f80a4)
802 # ARP destination hardware address
803 NXM_OF_ETH_TYPE(0806) 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(8035) NXM_OF_ARP_OP(0003)
809 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
810 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
812 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
814 # RARP source protocol address
815 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
816 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
817 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
818 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
819 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
820 NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
822 # RARP destination protocol address
823 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
824 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
825 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
826 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
827 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
828 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
830 # RARP source hardware address
831 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
832 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
833 NXM_NX_ARP_SHA(0002e30f80a4)
835 # RARP destination hardware address
836 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
837 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
838 NXM_NX_ARP_THA(0002e30f80a4)
841 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
842 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
843 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
844 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
845 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
846 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
847 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffff000000000000)
850 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
851 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
852 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
853 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
854 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
855 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
858 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
859 NXM_NX_IPV6_LABEL(0000000f)
860 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
863 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
864 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
865 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
866 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
867 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(00000000000000000000000000000000/00000000000000000000000000000000)
868 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
870 # ND source hardware address
871 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)
872 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)
873 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)
874 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)
876 # ND destination hardware address
877 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)
878 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)
879 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)
880 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)
883 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
884 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
885 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
886 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
887 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
888 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
889 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
890 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
891 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
892 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
893 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
894 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
895 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
898 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
899 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
900 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
901 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
902 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
903 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
904 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
905 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
906 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
907 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
908 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
909 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
910 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
913 NXM_NX_COOKIE(00000000abcdef01)
914 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
915 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
916 NXM_NX_COOKIE_W(0000000000000000/0000000000000000)
919 NXM_NX_TUN_ID(00000000abcdef01)
920 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
921 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
922 NXM_NX_TUN_ID_W(0000000000000000/0000000000000000)
925 NXM_NX_REG0(acebdf56)
926 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
927 NXM_NX_REG0_W(a0e0d050/ffffffff)
928 NXM_NX_REG0_W(00000000/00000000)
930 # Connection tracking fields,
931 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE(00000020)
932 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE(00001080)
933 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE_W(00000020/00000020)
934 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE_W(00000020/000000F0)
935 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_ZONE(5a5a)
936 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_MARK(5a5a5a5a)
937 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_MARK_W(5a5a5a5a/fefefefe)
938 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_LABEL(1234567890abcdef1234567890abcdef)
939 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_LABEL_W(10203040506070809000a0b0c0d0e0f0/f1f2f3f4f5f6f7f8f9f0fafbfcfdfeff)
941 # dp_hash (testing experimenter OXM).
942 NXM_NX_DP_HASH(01234567)
943 NXOXM_ET_DP_HASH(01234567)
945 # Invalid field number.
948 # Invalid field numbers (experimenter OXM).
949 ffff020800002320(11112222)
950 ffff030800002320(1111/3333)
952 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
960 NXM_OF_ETH_DST(0002e30f80a4)
961 NXM_OF_ETH_DST_W(010000000000/010000000000)
962 NXM_OF_ETH_DST_W(000000000000/010000000000)
963 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
964 NXM_OF_ETH_DST(0002e30f80a4)
965 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
966 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
967 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
970 NXM_OF_ETH_SRC(020898456ddb)
971 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
972 NXM_OF_ETH_SRC(020898456ddb)
973 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
976 NXM_OF_ETH_TYPE(0800)
977 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
980 NXM_OF_VLAN_TCI(f009)
981 nx_pull_match() returned error OFPBMC_DUP_FIELD
982 NXM_OF_VLAN_TCI(0000)
983 NXM_OF_VLAN_TCI(3123)
984 NXM_OF_VLAN_TCI(0123)
985 NXM_OF_VLAN_TCI_W(1123/1fff)
986 NXM_OF_VLAN_TCI(1123)
987 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
988 NXM_OF_VLAN_TCI_W(f000/f000)
989 NXM_OF_VLAN_TCI_W(0000/e000)
992 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
993 nx_pull_match() returned error OFPBMC_BAD_VALUE
994 nx_pull_match() returned error OFPBMC_BAD_PREREQ
997 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
998 nx_pull_match() returned error OFPBMC_BAD_VALUE
999 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1002 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
1003 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
1004 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1007 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
1008 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
1009 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1012 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
1013 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
1014 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1015 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
1016 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1017 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1020 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
1021 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1022 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1023 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
1024 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1025 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1028 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
1029 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
1030 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
1031 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1033 # TCP destination port
1034 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
1035 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
1036 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
1037 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1040 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0131)
1041 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS_W(00f0/0ff0)
1042 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(01e2)
1043 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1046 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
1047 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
1048 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
1049 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1051 # UDP destination port
1052 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
1053 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
1054 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
1055 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1058 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
1059 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1062 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
1063 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1064 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1065 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1068 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
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 # ARP source protocol address
1075 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
1076 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1077 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1078 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
1079 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1080 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1082 # ARP destination protocol address
1083 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
1084 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1085 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1086 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
1087 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1088 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1090 # ARP source hardware address
1091 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
1092 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1093 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1095 # ARP destination hardware address
1096 NXM_OF_ETH_TYPE(0806), 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(8035), NXM_OF_ARP_OP(0003)
1102 nx_pull_match() returned error OFPBMC_BAD_VALUE
1103 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1104 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1105 nx_pull_match() returned error OFPBMC_DUP_FIELD
1107 # RARP source protocol address
1108 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
1109 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1110 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1111 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
1112 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1113 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1115 # RARP destination protocol address
1116 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
1117 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1118 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1119 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
1120 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1121 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1123 # RARP source hardware address
1124 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
1125 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1126 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1128 # RARP destination hardware address
1129 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
1130 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1131 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1134 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
1135 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1136 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1137 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1138 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
1139 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1140 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1143 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
1144 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1145 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1146 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
1147 NXM_OF_ETH_TYPE(86dd)
1148 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1151 nx_pull_match() returned error OFPBMC_BAD_VALUE
1152 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1153 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
1156 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1157 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1158 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1159 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1160 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
1161 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1163 # ND source hardware address
1164 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)
1165 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1166 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1167 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1169 # ND destination hardware address
1170 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)
1171 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1172 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1173 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1176 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1177 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
1178 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
1179 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1180 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1181 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
1182 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
1183 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
1184 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
1185 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1186 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1187 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1188 nx_pull_match() returned error OFPBMC_BAD_VALUE
1191 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1192 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
1193 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
1194 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1195 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1196 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
1197 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
1198 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
1199 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
1200 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1201 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1202 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1203 nx_pull_match() returned error OFPBMC_BAD_VALUE
1206 NXM_NX_COOKIE(00000000abcdef01)
1207 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
1208 NXM_NX_COOKIE(84200000abcdef01)
1212 NXM_NX_TUN_ID(00000000abcdef01)
1213 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
1214 NXM_NX_TUN_ID(84200000abcdef01)
1218 NXM_NX_REG0(acebdf56)
1219 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
1220 NXM_NX_REG0(a0e0d050)
1223 # Connection tracking fields,
1225 dnl When re-serialising, bits 8-31 are wildcarded, because current OVS userspace
1226 dnl doesn't understand (or store) those bits.
1227 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/000000ff)
1228 nx_pull_match() returned error OFPBMC_BAD_VALUE
1229 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/00000020)
1230 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/000000f0)
1231 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_ZONE(5a5a)
1232 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_MARK(5a5a5a5a)
1233 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_MARK_W(5a5a5a5a/fefefefe)
1234 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_LABEL(1234567890abcdef1234567890abcdef)
1235 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_LABEL_W(10203040506070809000a0b0c0d0e0f0/f1f2f3f4f5f6f7f8f9f0fafbfcfdfeff)
1237 # dp_hash (testing experimenter OXM).
1238 NXM_NX_DP_HASH(01234567)
1239 NXM_NX_DP_HASH(01234567)
1241 # Invalid field number.
1242 nx_pull_match() returned error OFPBMC_BAD_FIELD
1244 # Invalid field numbers (experimenter OXM).
1245 nx_pull_match() returned error OFPBMC_BAD_FIELD
1246 nx_pull_match() returned error OFPBMC_BAD_FIELD
1249 # Check that at least the first warning made it. (It's rate-limited
1250 # so a variable number could show up, especially under valgrind etc.)
1251 AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
1252 nx_match|WARN|Rejecting NXM/OXM entry 0:0:1:1:12 with 1-bits in value for bits wildcarded by the mask.
1255 # Check that there wasn't any other stderr output.
1256 AT_CHECK([grep -v '1-bits in value' stderr], [1])
1259 AT_SETUP([ovs-ofctl parse-ofp10-match])
1260 AT_KEYWORDS([OF1.0])
1261 AT_DATA([test-data], [dnl
1263 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1264 xxxxxxxx xxxxxxxx xxxx xxxx
1266 # dl_src=00:01:02:03:04:05
1267 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1268 xxxxxxxx xxxxxxxx xxxx xxxx
1270 # dl_dst=10:20:30:40:50:60
1271 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1272 xxxxxxxx xxxxxxxx xxxx xxxx
1275 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1276 xxxxxxxx xxxxxxxx xxxx xxxx
1279 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1280 xxxxxxxx xxxxxxxx xxxx xxxx
1282 # dl_vlan=291,dl_vlan_pcp=4
1283 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1284 xxxxxxxx xxxxxxxx xxxx xxxx
1286 dnl dl_vlan_pcp doesn't make sense when 802.1Q is not present, so
1287 dnl OVS ignores it and drops it on output.
1290 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1291 xxxxxxxx xxxxxxxx xxxx xxxx
1293 dnl dl_vlan_pcp doesn't make sense when 802.1Q is not present, so
1294 dnl OVS ignores it and drops it on output.
1297 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1298 xxxxxxxx xxxxxxxx xxxx xxxx
1300 dnl Invalid VID and PCP discards out-of-range bits:
1301 # dl_vlan=256,dl_vlan_pcp=7
1304 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1305 xxxxxxxx xxxxxxxx xxxx xxxx
1308 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1309 xxxxxxxx xxxxxxxx xxxx xxxx
1312 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1313 xxxxxxxx xxxxxxxx xxxx xxxx
1315 dnl Ignore nw_proto if not IP or ARP:
1316 # dl_type=0x1234,nw_proto=5
1317 # normal: 3: cf -> ef
1318 # normal: 25: 05 -> 00
1319 & ofp_util|INFO|normalization changed ofp_match, details:
1320 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1321 & ofp_util|INFO|post: dl_type=0x1234
1322 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1323 xxxxxxxx xxxxxxxx xxxx xxxx
1326 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1327 xxxxxxxx xxxxxxxx xxxx xxxx
1329 dnl Ignore nw_tos if not IP:
1332 # normal: 1: 18 -> 38
1333 # normal: 24: 04 -> 00
1334 & ofp_util|INFO|normalization changed ofp_match, details:
1335 & ofp_util|INFO| pre: arp,nw_tos=4
1336 & ofp_util|INFO|post: arp
1337 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1338 xxxxxxxx xxxxxxxx xxxx xxxx
1340 dnl Low 2 bits of invalid TOS are forced to 0:
1343 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1344 xxxxxxxx xxxxxxxx xxxx xxxx
1347 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1348 xxxxxxxx xxxxxxxx xxxx xxxx
1350 # ip,nw_src=192.168.128.85
1351 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1352 c0a88055 xxxxxxxx xxxx xxxx
1354 # ip,nw_src=192.168.128.0/24
1356 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1357 c0a88055 xxxxxxxx xxxx xxxx
1359 # ip,nw_dst=192.168.128.85
1360 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1361 xxxxxxxx c0a88055 xxxx xxxx
1363 # ip,nw_dst=192.168.128.0/24
1365 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1366 xxxxxxxx c0a88055 xxxx xxxx
1368 # arp,arp_spa=192.168.128.85
1369 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1370 c0a88055 xxxxxxxx xxxx xxxx
1372 # arp,arp_spa=192.168.128.0/24
1374 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1375 c0a88055 xxxxxxxx xxxx xxxx
1377 # arp,arp_tpa=192.168.128.85
1378 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1379 xxxxxxxx c0a88055 xxxx xxxx
1381 # arp,arp_tpa=192.168.128.0/24
1383 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1384 xxxxxxxx c0a88055 xxxx xxxx
1386 dnl Ignore nw_src if not IP or ARP:
1387 # dl_type=0x1234,nw_src=192.168.128.0/24
1389 # normal: 2: 08 -> 20
1390 # normal: 28: c0 -> 00
1391 # normal: 29: a8 -> 00
1392 # normal: 30: 80 -> 00
1393 & ofp_util|INFO|normalization changed ofp_match, details:
1394 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1395 & ofp_util|INFO|post: dl_type=0x1234
1396 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1397 c0a88055 xxxxxxxx xxxx xxxx
1399 dnl Ignore nw_dst if not IP or ARP:
1400 # dl_type=0x1234,nw_dst=192.168.128.0/24
1402 # normal: 1: 32 -> 38
1403 # normal: 32: c0 -> 00
1404 # normal: 33: a8 -> 00
1405 # normal: 34: 80 -> 00
1406 & ofp_util|INFO|normalization changed ofp_match, details:
1407 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1408 & ofp_util|INFO|post: dl_type=0x1234
1409 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1410 xxxxxxxx c0a88055 xxxx xxxx
1413 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1414 xxxxxxxx xxxxxxxx 01bb xxxx
1417 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1418 xxxxxxxx xxxxxxxx xxxx 01bb
1421 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1422 xxxxxxxx xxxxxxxx 01bb xxxx
1425 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1426 xxxxxxxx xxxxxxxx xxxx 01bb
1429 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1430 xxxxxxxx xxxxxxxx 01bb xxxx
1433 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1434 xxxxxxxx xxxxxxxx xxxx 01bb
1437 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1438 xxxxxxxx xxxxxxxx 0005 xxxx
1441 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1442 xxxxxxxx xxxxxxxx xxxx 0008
1444 dnl Ignore tp_src if not TCP/UDP/SCTP:
1445 # ip,nw_proto=21,tp_src=443
1446 # normal: 3: 8f -> cf
1447 # normal: 36: 01 -> 00
1448 # normal: 37: bb -> 00
1449 & ofp_util|INFO|normalization changed ofp_match, details:
1450 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1451 & ofp_util|INFO|post: ip,nw_proto=21
1452 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1453 xxxxxxxx xxxxxxxx 01bb xxxx
1455 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1456 # ip,nw_proto=21,tp_dst=443
1457 # normal: 3: 4f -> cf
1458 # normal: 38: 01 -> 00
1459 # normal: 39: bb -> 00
1460 dnl The normalization details are suppressed here due to rate-limiting.
1461 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1462 xxxxxxxx xxxxxxxx xxxx 01bb
1465 sed '/^[[#&]]/d' < test-data > input.txt
1466 sed -n 's/^# //p; /^$/p' < test-data > expout
1467 sed -n 's/^& //p' < test-data > experr
1468 AT_CAPTURE_FILE([input.txt])
1469 AT_CAPTURE_FILE([expout])
1470 AT_CAPTURE_FILE([experr])
1472 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1473 [0], [expout], [experr])
1476 AT_SETUP([ovs-ofctl parse-ofp11-match])
1477 AT_KEYWORDS([OF1.1])
1478 AT_DATA([test-data], [dnl
1480 0000 0058 fffffffe 000003fe dnl
1481 000000000000ffffffffffff 000000000000ffffffffffff dnl
1482 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1483 00000000 00 000000 0000000000000000ffffffffffffffff
1485 # bad ofp11_match: OFPBMC_BAD_VALUE
1486 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1487 0000 0058 12345678 000003fe dnl
1488 000000000000ffffffffffff 000000000000ffffffffffff dnl
1489 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1490 00000000 00 000000 0000000000000000ffffffffffffffff
1492 # dl_src=00:01:02:03:04:05
1493 0000 0058 00000000 000003ff dnl
1494 000102030405000000000000 000000000000ffffffffffff dnl
1495 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1496 00000000 00 000000 0000000000000000ffffffffffffffff
1498 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1499 0000 0058 00000000 000003ff dnl
1500 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1501 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1502 00000000 00 000000 0000000000000000ffffffffffffffff
1504 # dl_dst=00:01:02:03:04:05
1505 0000 0058 00000000 000003ff dnl
1506 000000000000ffffffffffff 000102030405000000000000 dnl
1507 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1508 00000000 00 000000 0000000000000000ffffffffffffffff
1510 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1511 0000 0058 00000000 000003ff dnl
1512 000000000000ffffffffffff 010000000000feffffffffff dnl
1513 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1514 00000000 00 000000 0000000000000000ffffffffffffffff
1516 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1517 0000 0058 00000000 000003ff dnl
1518 000000000000ffffffffffff 000102030405010000000000 dnl
1519 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1520 00000000 00 000000 0000000000000000ffffffffffffffff
1522 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1523 0000 0058 00000000 000003ff dnl
1524 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1525 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1526 00000000 00 000000 0000000000000000ffffffffffffffff
1528 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1529 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1533 0000 0058 00000001 000003fa dnl
1534 000000000000ffffffffffff 000000000000ffffffffffff dnl
1535 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1536 00000000 00 000000 0000000000000000ffffffffffffffff
1539 0000 0058 00000000 000003fd dnl
1540 000000000000ffffffffffff 000000000000ffffffffffff dnl
1541 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1542 00000000 00 000000 0000000000000000ffffffffffffffff
1546 0000 0058 00000000 000003fd dnl
1547 000000000000ffffffffffff 000000000000ffffffffffff dnl
1548 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1549 00000000 00 000000 0000000000000000ffffffffffffffff
1551 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1552 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1556 0000 0058 00000000 000003f9 dnl
1557 000000000000ffffffffffff 000000000000ffffffffffff dnl
1558 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1559 00000000 00 000000 0000000000000000ffffffffffffffff
1561 # vlan_tci=0x1000/0x1000
1562 0000 0058 00000000 000003fd dnl
1563 000000000000ffffffffffff 000000000000ffffffffffff dnl
1564 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1565 00000000 00 000000 0000000000000000ffffffffffffffff
1567 dnl Try invalid VID:
1568 # bad ofp11_match: OFPBMC_BAD_VALUE
1569 0000 0058 00000000 000003fd dnl
1570 000000000000ffffffffffff 000000000000ffffffffffff dnl
1571 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1572 00000000 00 000000 0000000000000000ffffffffffffffff
1575 0000 0058 00000000 000003f9 dnl
1576 000000000000ffffffffffff 000000000000ffffffffffff dnl
1577 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1578 00000000 00 000000 0000000000000000ffffffffffffffff
1580 # dl_vlan=10,dl_vlan_pcp=6
1581 0000 0058 00000000 000003f9 dnl
1582 000000000000ffffffffffff 000000000000ffffffffffff dnl
1583 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1584 00000000 00 000000 0000000000000000ffffffffffffffff
1587 0000 0058 00000000 000003f7 dnl
1588 000000000000ffffffffffff 000000000000ffffffffffff dnl
1589 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1590 00000000 00 000000 0000000000000000ffffffffffffffff
1593 0000 0058 00000000 000003e7 dnl
1594 000000000000ffffffffffff 000000000000ffffffffffff dnl
1595 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1596 00000000 00 000000 0000000000000000ffffffffffffffff
1598 dnl Try invalid TOS:
1599 # bad ofp11_match: OFPBMC_BAD_VALUE
1600 0000 0058 00000000 000003e7 dnl
1601 000000000000ffffffffffff 000000000000ffffffffffff dnl
1602 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1603 00000000 00 000000 0000000000000000ffffffffffffffff
1606 0000 0058 00000000 000003d7 dnl
1607 000000000000ffffffffffff 000000000000ffffffffffff dnl
1608 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1609 00000000 00 000000 0000000000000000ffffffffffffffff
1612 0000 0058 00000000 000003d7 dnl
1613 000000000000ffffffffffff 000000000000ffffffffffff dnl
1614 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1615 00000000 00 000000 0000000000000000ffffffffffffffff
1617 # ip,nw_src=192.168.128.0/24
1618 0000 0058 00000000 000003f7 dnl
1619 000000000000ffffffffffff 000000000000ffffffffffff dnl
1620 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1621 00000000 00 000000 0000000000000000ffffffffffffffff
1623 # ip,nw_src=128.160.128.0/165.165.165.165
1626 0000 0058 00000000 000003f7 dnl
1627 000000000000ffffffffffff 000000000000ffffffffffff dnl
1628 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1629 00000000 00 000000 0000000000000000ffffffffffffffff
1631 # ip,nw_dst=192.168.128.0/24
1632 0000 0058 00000000 000003f7 dnl
1633 000000000000ffffffffffff 000000000000ffffffffffff dnl
1634 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1635 00000000 00 000000 0000000000000000ffffffffffffffff
1637 # ip,nw_dst=128.160.128.0/165.165.165.165
1640 0000 0058 00000000 000003f7 dnl
1641 000000000000ffffffffffff 000000000000ffffffffffff dnl
1642 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1643 00000000 00 000000 0000000000000000ffffffffffffffff
1645 # arp,arp_spa=192.168.128.0/24
1646 0000 0058 00000000 000003f7 dnl
1647 000000000000ffffffffffff 000000000000ffffffffffff dnl
1648 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1649 00000000 00 000000 0000000000000000ffffffffffffffff
1651 # arp,arp_tpa=192.168.128.0/24
1652 0000 0058 00000000 000003f7 dnl
1653 000000000000ffffffffffff 000000000000ffffffffffff dnl
1654 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1655 00000000 00 000000 0000000000000000ffffffffffffffff
1658 0000 0058 00000000 00000397 dnl
1659 000000000000ffffffffffff 000000000000ffffffffffff dnl
1660 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1661 00000000 00 000000 0000000000000000ffffffffffffffff
1664 0000 0058 00000000 00000357 dnl
1665 000000000000ffffffffffff 000000000000ffffffffffff dnl
1666 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1667 00000000 00 000000 0000000000000000ffffffffffffffff
1670 0000 0058 00000000 00000397 dnl
1671 000000000000ffffffffffff 000000000000ffffffffffff dnl
1672 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1673 00000000 00 000000 0000000000000000ffffffffffffffff
1676 0000 0058 00000000 00000397 dnl
1677 000000000000ffffffffffff 000000000000ffffffffffff dnl
1678 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1679 00000000 00 000000 0000000000000000ffffffffffffffff
1682 0000 0058 00000000 00000357 dnl
1683 000000000000ffffffffffff 000000000000ffffffffffff dnl
1684 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1685 00000000 00 000000 0000000000000000ffffffffffffffff
1688 0000 0058 00000000 00000397 dnl
1689 000000000000ffffffffffff 000000000000ffffffffffff dnl
1690 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1691 00000000 00 000000 0000000000000000ffffffffffffffff
1694 0000 0058 00000000 00000357 dnl
1695 000000000000ffffffffffff 000000000000ffffffffffff dnl
1696 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1697 00000000 00 000000 0000000000000000ffffffffffffffff
1700 0000 0058 00000000 000003d7 dnl
1701 000000000000ffffffffffff 000000000000ffffffffffff dnl
1702 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1703 00000000 00 000000 0000000000000000ffffffffffffffff
1706 0000 0058 00000000 00000397 dnl
1707 000000000000ffffffffffff 000000000000ffffffffffff dnl
1708 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1709 00000000 00 000000 0000000000000000ffffffffffffffff
1712 0000 0058 00000000 00000357 dnl
1713 000000000000ffffffffffff 000000000000ffffffffffff dnl
1714 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1715 00000000 00 000000 0000000000000000ffffffffffffffff
1717 dnl Ignore tp_src if not TCP/UDP/SCTP:
1722 0000 0058 00000000 00000397 dnl
1723 000000000000ffffffffffff 000000000000ffffffffffff dnl
1724 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1725 00000000 00 000000 0000000000000000ffffffffffffffff
1727 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1732 0000 0058 00000000 00000357 dnl
1733 000000000000ffffffffffff 000000000000ffffffffffff dnl
1734 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1735 00000000 00 000000 0000000000000000ffffffffffffffff
1737 # mpls,mpls_label=284280
1740 0000 0058 00000000 000002f7 dnl
1741 000000000000ffffffffffff 000000000000ffffffffffff dnl
1742 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1743 12345678 00 000000 0000000000000000ffffffffffffffff
1747 0000 0058 00000000 000001f7 dnl
1748 000000000000ffffffffffff 000000000000ffffffffffff dnl
1749 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1750 00000000 5a 000000 0000000000000000ffffffffffffffff
1752 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1760 0000 0058 00000000 000000f7 dnl
1761 000000000000ffffffffffff 000000000000ffffffffffff dnl
1762 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1763 12345678 5a 000000 0000000000000000ffffffffffffffff
1766 # metadata=0x1234567890abcdef
1767 0000 0058 00000000 000003ff dnl
1768 000000000000ffffffffffff 000000000000ffffffffffff dnl
1769 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1770 00000000 00 000000 1234567890abcdef0000000000000000
1773 # metadata=0x5555555555555555/0x5555555555555555
1774 0000 0058 00000000 000003ff dnl
1775 000000000000ffffffffffff 000000000000ffffffffffff dnl
1776 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1777 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1780 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1785 0000 0058 00000000 000003ff dnl
1786 000000000000ffffffffffff 000000000000ffffffffffff dnl
1787 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1788 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1791 sed '/^[[#&]]/d' < test-data > input.txt
1792 sed -n 's/^# //p; /^$/p' < test-data > expout
1793 sed -n 's/^& //p' < test-data > experr
1794 AT_CAPTURE_FILE([input.txt])
1795 AT_CAPTURE_FILE([expout])
1796 AT_CAPTURE_FILE([experr])
1798 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1799 [0], [expout], [experr])
1802 AT_SETUP([ovs-ofctl parse-nx-match loose])
1803 AT_KEYWORDS([nx-match])
1804 AT_DATA([nx-match.txt], [dnl
1805 NXM_OF_IN_PORT(0001), 01020304(1111/3333), NXM_OF_ETH_TYPE(0800)
1806 NXM_OF_IN_PORT(0001), ffff020800002320(11112222), NXM_OF_ETH_TYPE(0800)
1807 NXM_OF_IN_PORT(0001), ffff030800002320(1111/3333), NXM_OF_ETH_TYPE(0800)
1810 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1811 nx_pull_match() returned error OFPBMC_BAD_FIELD
1812 nx_pull_match() returned error OFPBMC_BAD_FIELD
1813 nx_pull_match() returned error OFPBMC_BAD_FIELD
1816 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1817 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1818 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1819 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1823 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.2)])
1825 AT_DATA([oxm.txt], [dnl
1829 OXM_OF_IN_PORT(00000000)
1830 OXM_OF_IN_PORT(fffffffe)
1833 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1834 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1835 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1836 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1837 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1840 OXM_OF_ETH_DST(0002e30f80a4)
1841 OXM_OF_ETH_DST_W(010000000000/010000000000)
1842 OXM_OF_ETH_DST_W(000000000000/010000000000)
1843 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1844 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1845 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1846 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1849 OXM_OF_ETH_SRC(020898456ddb)
1852 OXM_OF_ETH_TYPE(0800)
1853 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1856 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1857 OXM_OF_VLAN_VID(f009) # Bad Value
1858 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1859 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1860 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1861 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1862 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1863 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1864 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1865 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1866 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1867 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1868 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1869 OXM_OF_VLAN_VID_W(0000/0000) # Packets with or without 802.1Q header
1870 OXM_OF_VLAN_VID_W(1103/1f0f), # Packets with # VID=123 (masked)
1871 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1872 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1873 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1876 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1877 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1878 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1882 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1883 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1887 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1888 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1892 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1893 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1894 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1895 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(00000000/00000000)
1896 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1897 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1900 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1901 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a80000/FFFF0000)
1902 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1903 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(00000000/00000000)
1904 OXM_OF_IPV4_DST(ac100014)
1905 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1908 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1909 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1910 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1911 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(0000/0000)
1912 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1914 # TCP destination port
1915 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1916 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1917 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1918 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(0000/0000)
1919 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1922 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1923 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1924 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1925 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0000/0000)
1926 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1928 # UDP destination port
1929 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1930 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1931 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1932 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(0000/0000)
1933 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1936 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1937 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1938 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1939 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0000/0000)
1940 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1942 # SCTP destination port
1943 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1944 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1945 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1946 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(0000/0000)
1947 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1950 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1951 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1954 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1955 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1956 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1957 OXM_OF_ICMPV4_CODE(00)
1960 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1961 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1962 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1964 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1966 # ARP source protocol address
1967 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1968 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
1969 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1970 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(00000000/00000000)
1971 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1972 OXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
1974 # ARP destination protocol address
1975 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1976 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
1977 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1978 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(00000000/00000000)
1979 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1980 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1982 # ARP source hardware address
1983 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1984 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1985 OXM_OF_ARP_SHA(0002e30f80a4)
1986 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1987 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000000/000000000000)
1988 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1990 # ARP destination hardware address
1991 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1992 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1993 OXM_OF_ARP_THA(0002e30f80a4)
1994 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1995 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000000/000000000000)
1996 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000004/00000000000f)
1999 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
2000 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
2001 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2002 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
2003 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(00000000000000000000000000000000/00000000000000000000000000000000)
2004 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2007 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
2008 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
2009 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2010 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
2011 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
2012 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2015 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
2016 OXM_OF_IPV6_FLABEL(0000000f)
2017 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
2018 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
2019 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
2020 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
2021 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
2022 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
2023 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/00000000)
2025 # ND source hardware address
2026 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)
2027 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)
2028 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)
2029 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)
2031 # ND destination hardware address
2032 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)
2033 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)
2034 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)
2035 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)
2037 # Registers 0, 1, and 2.
2038 NXM_NX_REG0(acebdf56)
2039 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2040 NXM_NX_REG0(a0e0d050)
2041 NXM_NX_REG1(acebdf56)
2042 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2043 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2044 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2045 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2047 # Extended registers 0, 1, and 2.
2048 # (For OpenFlow 1.2, OVS transforms these into its extension registers.)
2049 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2050 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2051 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2052 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2053 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2054 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2055 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2056 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2058 # Invalid field number.
2061 # Invalid field numbers (experimenter OXM).
2062 ffff020800002320(11112222)
2063 ffff030800002320(1111/3333)
2065 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow12 < oxm.txt],
2070 OXM_OF_IN_PORT(00000000)
2071 OXM_OF_IN_PORT(fffffffe)
2074 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
2075 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
2076 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2077 OXM_OF_METADATA(1234567890abcdef)
2078 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2081 OXM_OF_ETH_DST(0002e30f80a4)
2082 OXM_OF_ETH_DST_W(010000000000/010000000000)
2083 OXM_OF_ETH_DST_W(000000000000/010000000000)
2084 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2085 OXM_OF_ETH_DST(0002e30f80a4)
2086 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2087 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
2090 OXM_OF_ETH_SRC(020898456ddb)
2093 OXM_OF_ETH_TYPE(0800)
2094 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
2097 nx_pull_match() returned error OFPBMC_DUP_FIELD
2098 nx_pull_match() returned error OFPBMC_BAD_VALUE
2099 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2100 OXM_OF_VLAN_VID(0000)
2101 OXM_OF_VLAN_VID(1123)
2102 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
2103 OXM_OF_VLAN_VID(0123)
2104 OXM_OF_VLAN_VID_W(0123/0123)
2105 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2106 OXM_OF_VLAN_VID_W(0123/1123)
2107 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2108 OXM_OF_VLAN_VID(1123)
2109 OXM_OF_VLAN_VID(1123)
2110 OXM_OF_PACKET_TYPE(00000000)
2111 OXM_OF_VLAN_VID_W(1103/1f0f)
2112 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
2113 OXM_OF_VLAN_VID_W(1000/1000)
2114 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
2117 nx_pull_match() returned error OFPBMC_BAD_VALUE
2118 nx_pull_match() returned error OFPBMC_BAD_VALUE
2119 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
2120 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2123 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
2124 nx_pull_match() returned error OFPBMC_BAD_VALUE
2125 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2128 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
2129 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
2130 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2133 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
2134 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
2135 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
2136 OXM_OF_ETH_TYPE(0800)
2137 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2138 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2141 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
2142 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
2143 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
2144 OXM_OF_ETH_TYPE(0800)
2145 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2146 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2149 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
2150 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
2151 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
2152 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
2153 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2155 # TCP destination port
2156 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
2157 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
2158 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
2159 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
2160 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2163 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
2164 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
2165 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
2166 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
2167 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2169 # UDP destination port
2170 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
2171 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
2172 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
2173 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
2174 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2177 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
2178 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
2179 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
2180 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2181 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2183 # SCTP destination port
2184 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
2185 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
2186 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
2187 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2188 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2191 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
2192 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2195 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
2196 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2197 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2198 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2201 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
2202 nx_pull_match() returned error OFPBMC_BAD_VALUE
2203 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2204 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2205 nx_pull_match() returned error OFPBMC_DUP_FIELD
2207 # ARP source protocol address
2208 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
2209 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
2210 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
2211 OXM_OF_ETH_TYPE(0806)
2212 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2213 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2215 # ARP destination protocol address
2216 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
2217 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
2218 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
2219 OXM_OF_ETH_TYPE(0806)
2220 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2221 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2223 # ARP source hardware address
2224 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2225 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2226 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2227 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2228 OXM_OF_ETH_TYPE(0806)
2229 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
2231 # ARP destination hardware address
2232 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2233 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2234 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2235 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2236 OXM_OF_ETH_TYPE(0806)
2237 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
2240 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
2241 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2242 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2243 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
2244 OXM_OF_ETH_TYPE(86dd)
2245 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2248 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
2249 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2250 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2251 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
2252 OXM_OF_ETH_TYPE(86dd)
2253 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2256 nx_pull_match() returned error OFPBMC_BAD_VALUE
2257 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2258 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2259 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
2260 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2261 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
2262 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2263 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2264 OXM_OF_ETH_TYPE(86dd)
2266 # ND source hardware address
2267 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)
2268 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2269 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2270 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2272 # ND destination hardware address
2273 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)
2274 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2275 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2276 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2278 # Registers 0, 1, and 2.
2279 NXM_NX_REG0(acebdf56)
2280 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2281 NXM_NX_REG0(a0e0d050)
2282 NXM_NX_REG1(acebdf56)
2283 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2284 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2285 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2286 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2288 # Extended registers 0, 1, and 2.
2289 # (For OpenFlow 1.2, OVS transforms these into its extension registers.)
2290 NXM_NX_REG0(acebdf56)
2291 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2292 NXM_NX_REG0(a0e0d050)
2293 NXM_NX_REG1(acebdf56)
2294 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2295 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2296 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2297 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2299 # Invalid field number.
2300 nx_pull_match() returned error OFPBMC_BAD_FIELD
2302 # Invalid field numbers (experimenter OXM).
2303 nx_pull_match() returned error OFPBMC_BAD_FIELD
2304 nx_pull_match() returned error OFPBMC_BAD_FIELD
2307 # Check that at least the first warning made it. (It's rate-limited
2308 # so a variable number could show up, especially under valgrind etc.)
2309 AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
2310 nx_match|WARN|Rejecting NXM/OXM entry 0:32768:2:1:16 with 1-bits in value for bits wildcarded by the mask.
2313 # Check that there wasn't any other stderr output.
2314 AT_CHECK([grep -v '1-bits in value' stderr], [1])
2317 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.3)])
2319 AT_DATA([oxm.txt], [dnl
2321 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2322 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2323 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2324 OXM_OF_ACTSET_OUTPUT(00000000)
2325 OXM_OF_ACTSET_OUTPUT(fffffffe)
2326 OXM_OF_ACTSET_OUTPUT(fffffff7)
2328 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow13 < oxm.txt],
2331 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2332 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2333 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2334 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2335 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2336 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2340 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.5)])
2342 AT_DATA([oxm.txt], [dnl
2343 # Extended registers 0 and 1.
2344 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2345 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2346 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2347 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2348 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2349 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2350 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2351 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2353 # Registers 0, 1, and 2.
2354 # (OpenFlow 1.5 transforms these into the standard "xregs".)
2355 NXM_NX_REG0(acebdf56)
2356 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2357 NXM_NX_REG0(a0e0d050)
2358 NXM_NX_REG1(acebdf56)
2359 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2360 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2361 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2362 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2365 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2366 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2367 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2368 OXM_OF_ACTSET_OUTPUT(00000000)
2369 OXM_OF_ACTSET_OUTPUT(fffffffe)
2370 OXM_OF_ACTSET_OUTPUT(fffffff7)
2372 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow15 < oxm.txt],
2374 # Extended registers 0 and 1.
2375 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2376 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2377 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2378 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2379 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2380 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2381 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2382 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2384 # Registers 0, 1, and 2.
2385 # (OpenFlow 1.5 transforms these into the standard "xregs".)
2386 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2387 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2388 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2389 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2390 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2391 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2392 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2393 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2396 OXM_OF_ACTSET_OUTPUT(00000000)
2397 OXM_OF_ACTSET_OUTPUT(fffffffe)
2398 OXM_OF_ACTSET_OUTPUT(fffffff7)
2399 OXM_OF_ACTSET_OUTPUT(00000000)
2400 OXM_OF_ACTSET_OUTPUT(fffffffe)
2401 OXM_OF_ACTSET_OUTPUT(fffffff7)
2405 AT_SETUP([ovs-ofctl parse-oxm loose])
2407 AT_DATA([oxm.txt], [dnl
2408 OXM_OF_IN_PORT(00000001), 01020304(1111/3333), OXM_OF_ETH_TYPE(0800)
2409 OXM_OF_IN_PORT(00000001), ffff020800002320(11112222), OXM_OF_ETH_TYPE(0800)
2410 OXM_OF_IN_PORT(00000001), ffff030800002320(1111/3333), OXM_OF_ETH_TYPE(0800)
2413 AT_CHECK([ovs-ofctl --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2414 nx_pull_match() returned error OFPBMC_BAD_FIELD
2415 nx_pull_match() returned error OFPBMC_BAD_FIELD
2416 nx_pull_match() returned error OFPBMC_BAD_FIELD
2419 AT_CHECK([ovs-ofctl parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2420 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2421 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2422 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2426 AT_SETUP([experimenter OXM encoding])
2427 AT_DATA([oxm.txt], [dnl
2428 NXM_NX_DP_HASH(01234567)
2429 NXOXM_ET_DP_HASH(01234567)
2431 NXM_NX_DP_HASH_W(01234567/0fffffff)
2432 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2435 # To allow for testing experimenter OXM, which doesn't really have many
2436 # examples in the wild, we've defined a variant of NXM_NX_DP_HASH that uses
2437 # the experimenter OXM mechanism, called NXOXM_ET_DP_HASH. We've defined
2438 # it as if it were introduced with OpenFlow 1.5, which gives us the
2439 # opportunity to see that both forms are accepted in all OpenFlow versions
2440 # but the experimenter form is used for encoding in OF1.5+.
2442 # First verify that both forms are accepted and NXOXM_ET_DP_HASH is encoded
2444 AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow15 < oxm.txt], [0], [dnl
2445 NXOXM_ET_DP_HASH(01234567)
2446 00000000 00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
2447 NXOXM_ET_DP_HASH(01234567)
2448 00000000 00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
2450 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2451 00000000 00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
2452 00000010 0f ff ff ff 00 00 00 00-
2453 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2454 00000000 00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
2455 00000010 0f ff ff ff 00 00 00 00-
2458 # Then verify that both forms are accepted and NXM_NX_DP_HASH is encoded
2460 AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2461 NXM_NX_DP_HASH(01234567)
2462 00000000 00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
2463 NXM_NX_DP_HASH(01234567)
2464 00000000 00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
2466 NXM_NX_DP_HASH_W(01234567/0fffffff)
2467 00000000 00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2468 NXM_NX_DP_HASH_W(01234567/0fffffff)
2469 00000000 00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2473 AT_SETUP([check TCP flags expression in OXM and NXM])
2474 # NXM/OXM input for matching on TCP flags.
2475 tcp_flags='OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff)'
2477 # Check that marshaling into NXM gives all NXM headers.
2478 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-nxm], [0],
2479 [NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2482 # Check that marshaling in OXM for OF1.2 gives OXM headers except for
2483 # TCP flags, which didn't have an OXM definition.
2484 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow12], [0],
2485 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2488 # Check that marshaling in OXM for OF1.3 and OF1.4 gives OXM headers,
2489 # including the ONF extension for TCP flags introduced in OF1.3.
2490 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow13], [0],
2491 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
2493 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow14], [0],
2494 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
2497 # OpenFlow 1.5 added an OXM header for TCP flags:
2498 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow15], [0],
2499 [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff)
2503 dnl Check all of the patterns mentioned in the "VLAN Matching" section
2504 dnl in the topics/design doc
2505 AT_SETUP([ovs-ofctl check-vlan])
2509 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2511 NXM: <any> -> 0000/0000
2512 OXM: <any> -> 0000/0000,--
2513 OF1.0: 0000/1,00/1 -> 0000/0000
2514 OF1.1: 0000/1,00/1 -> 0000/0000
2518 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2519 vlan_tci=0x0000 -> 0000/ffff
2520 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
2521 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
2522 OF1.0: ffff/0,00/0 -> 0000/ffff
2523 OF1.1: ffff/0,00/1 -> 0000/ffff
2527 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2528 dl_vlan=2748 -> 1abc/1fff
2529 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
2530 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
2531 OF1.0: 0abc/0,00/1 -> 1abc/1fff
2532 OF1.1: 0abc/0,00/1 -> 1abc/1fff
2536 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2537 dl_vlan_pcp=5 -> b000/f000
2538 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
2539 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
2540 OF1.0: 0000/1,05/0 -> b000/f000
2541 OF1.1: fffe/0,05/0 -> b000/f000
2545 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2546 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2547 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
2548 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
2549 OF1.0: 0abc/0,05/0 -> babc/ffff
2550 OF1.1: 0abc/0,05/0 -> babc/ffff
2554 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2555 vlan_tci=0x0000/0x0fff -> 0000/0fff
2556 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
2557 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2558 OF1.0: 0000/0,00/1 -> 1000/1fff
2559 OF1.1: 0000/0,00/1 -> 1000/1fff
2563 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2564 vlan_tci=0x0000/0xf000 -> 0000/f000
2565 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
2566 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
2567 OF1.0: ffff/0,00/0 -> 0000/ffff
2568 OF1.1: ffff/0,00/1 -> 0000/ffff
2572 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2573 vlan_tci=0x0000/0xefff -> 0000/efff
2574 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
2575 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2576 OF1.0: 0000/0,00/0 -> 1000/ffff
2577 OF1.1: 0000/0,00/0 -> 1000/ffff
2581 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2582 vlan_tci=0x1001/0x1001 -> 1001/1001
2583 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
2584 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
2585 OF1.0: 0001/0,00/1 -> 1001/1fff
2586 OF1.1: 0001/0,00/1 -> 1001/1fff
2590 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2591 vlan_tci=0x3000/0x3000 -> 3000/3000
2592 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
2593 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
2594 OF1.0: 0000/1,01/0 -> 3000/f000
2595 OF1.1: fffe/0,01/0 -> 3000/f000
2600 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2601 dnl such as tunnels and metadata.
2602 AT_SETUP([ovs-ofctl -F option and NXM features])
2604 AT_CHECK([ovs-ofctl -F openflow10 add-flow br0 tun_id=123,actions=drop],
2605 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2607 AT_CHECK([ovs-ofctl -F openflow10 add-flow br0 metadata=123,actions=drop],
2608 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
2613 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2614 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2615 dnl additionally show up as the top 32 bits of the cookie.) This checks
2616 dnl for regression against bug #4566.
2617 AT_SETUP([ovs-ofctl -F option with flow_mods])
2619 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
2620 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
2622 tun_id=0x12345678 actions=drop
2627 dnl Check that "-F openflow10" is really honored on dump-flows.
2628 dnl (If it isn't, then dump-flows will show the register match.)
2629 AT_SETUP([ovs-ofctl dump-flows honors -F option])
2631 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
2632 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
2639 dnl Check that "-F openflow10" fails on dump-flows if the requested match
2640 dnl can't be represented in OpenFlow 1.0.
2641 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
2643 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
2644 [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2649 dnl Check that add-flow reports non-normalized flows (feature #5029).
2650 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
2652 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2654 ofp_util|INFO|normalization changed ofp_match, details:
2655 ofp_util|INFO| pre: nw_src=1.2.3.4
2656 ofp_util|INFO|post: @&t@
2661 dnl Check that --sort and --rsort works with dump-flows
2662 dnl Default field is 'priority'. Flow entries are displayed based
2663 dnl on field to sort.
2664 AT_SETUP([ovs-ofctl dump-flows with sorting])
2667 AT_DATA([allflows.txt], [[
2668 priority=4,in_port=23213 actions=output:42
2669 priority=5,in_port=1029 actions=output:43
2670 priority=7,in_port=1029 actions=output:43
2671 priority=3,in_port=1028 actions=output:44
2672 priority=1,in_port=1026 actions=output:45
2673 priority=6,in_port=1027 actions=output:64
2674 priority=2,in_port=1025 actions=output:47
2675 priority=8,tcp,tp_src=5 actions=drop
2676 priority=9,tcp,tp_src=6 actions=drop
2677 priority=10,tun_metadata0=0xab actions=drop
2678 priority=11,tun_metadata0=0xcd actions=drop
2681 AT_CHECK([ovs-ofctl add-tlv-map br0 "{class=0xffff,type=0,len=4}->tun_metadata0"])
2682 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2685 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2686 priority=1,in_port=1026 actions=output:45
2687 priority=2,in_port=1025 actions=output:47
2688 priority=3,in_port=1028 actions=output:44
2689 priority=4,in_port=23213 actions=output:42
2690 priority=5,in_port=1029 actions=output:43
2691 priority=6,in_port=1027 actions=output:64
2692 priority=7,in_port=1029 actions=output:43
2693 priority=8,tcp,tp_src=5 actions=drop
2694 priority=9,tcp,tp_src=6 actions=drop
2695 priority=10,tun_metadata0=0xab actions=drop
2696 priority=11,tun_metadata0=0xcd actions=drop
2698 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2699 priority=11,tun_metadata0=0xcd actions=drop
2700 priority=10,tun_metadata0=0xab actions=drop
2701 priority=9,tcp,tp_src=6 actions=drop
2702 priority=8,tcp,tp_src=5 actions=drop
2703 priority=7,in_port=1029 actions=output:43
2704 priority=6,in_port=1027 actions=output:64
2705 priority=5,in_port=1029 actions=output:43
2706 priority=4,in_port=23213 actions=output:42
2707 priority=3,in_port=1028 actions=output:44
2708 priority=2,in_port=1025 actions=output:47
2709 priority=1,in_port=1026 actions=output:45
2711 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2712 priority=2,in_port=1025 actions=output:47
2713 priority=1,in_port=1026 actions=output:45
2714 priority=6,in_port=1027 actions=output:64
2715 priority=3,in_port=1028 actions=output:44
2716 priority=7,in_port=1029 actions=output:43
2717 priority=5,in_port=1029 actions=output:43
2718 priority=4,in_port=23213 actions=output:42
2719 priority=11,tun_metadata0=0xcd actions=drop
2720 priority=10,tun_metadata0=0xab actions=drop
2721 priority=9,tcp,tp_src=6 actions=drop
2722 priority=8,tcp,tp_src=5 actions=drop
2724 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2725 priority=4,in_port=23213 actions=output:42
2726 priority=7,in_port=1029 actions=output:43
2727 priority=5,in_port=1029 actions=output:43
2728 priority=3,in_port=1028 actions=output:44
2729 priority=6,in_port=1027 actions=output:64
2730 priority=1,in_port=1026 actions=output:45
2731 priority=2,in_port=1025 actions=output:47
2732 priority=11,tun_metadata0=0xcd actions=drop
2733 priority=10,tun_metadata0=0xab actions=drop
2734 priority=9,tcp,tp_src=6 actions=drop
2735 priority=8,tcp,tp_src=5 actions=drop
2737 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2738 priority=8,tcp,tp_src=5 actions=drop
2739 priority=9,tcp,tp_src=6 actions=drop
2740 priority=11,tun_metadata0=0xcd actions=drop
2741 priority=10,tun_metadata0=0xab actions=drop
2742 priority=7,in_port=1029 actions=output:43
2743 priority=6,in_port=1027 actions=output:64
2744 priority=5,in_port=1029 actions=output:43
2745 priority=4,in_port=23213 actions=output:42
2746 priority=3,in_port=1028 actions=output:44
2747 priority=2,in_port=1025 actions=output:47
2748 priority=1,in_port=1026 actions=output:45
2751 [ovs-ofctl --sort=in_port --sort=tcp_src --sort=tun_metadata0 dump-flows br0 | ofctl_strip], [0],
2752 [ priority=2,in_port=1025 actions=output:47
2753 priority=1,in_port=1026 actions=output:45
2754 priority=6,in_port=1027 actions=output:64
2755 priority=3,in_port=1028 actions=output:44
2756 priority=7,in_port=1029 actions=output:43
2757 priority=5,in_port=1029 actions=output:43
2758 priority=4,in_port=23213 actions=output:42
2759 priority=8,tcp,tp_src=5 actions=drop
2760 priority=9,tcp,tp_src=6 actions=drop
2761 priority=10,tun_metadata0=0xab actions=drop
2762 priority=11,tun_metadata0=0xcd actions=drop
2767 AT_SETUP([ovs-ofctl dump-flows --names])
2768 AT_KEYWORDS([port names])
2769 OVS_VSWITCHD_START([\
2770 -- add-port br0 xyzzy -- set Interface xyzzy type=dummy -- \
2771 -- add-port br0 x-y -- set Interface x-y type=dummy -- \
2772 -- add-port br0 abc123 -- set Interface abc123 type=dummy -- \
2773 -- add-port br0 reallyverylongportname -- set Interface reallyverylongportname type=dummy -- \
2774 -- add-port br0 conflictinglongportname1 -- set Interface conflictinglongportname1 type=dummy -- \
2775 -- add-port br0 conflictinglongportname2 -- set Interface conflictinglongportname2 type=dummy])
2777 # These plain port names should be accepted.
2778 AT_CHECK([ovs-ofctl add-flow br0 in_port=xyzzy,actions=x-y,abc123])
2780 # reallyverylongportname is accepted truncated, but not in full.
2781 AT_CHECK([ovs-ofctl add-flow br0 in_port=reallyverylongp,actions=drop])
2782 AT_CHECK([ovs-ofctl add-flow br0 in_port=reallyverylongportname,actions=drop],
2783 [1], [], [ovs-ofctl: reallyverylongportname: invalid or unknown port for in_port
2786 # conflictinglongportname1 and 2 can't be accepted even truncated, since
2787 # they conflict when truncated.
2788 AT_CHECK([ovs-ofctl add-flow br0 in_port=conflictinglongportname1,actions=drop], [1], [], [ovs-ofctl: conflictinglongportname1: invalid or unknown port for in_port
2790 AT_CHECK([ovs-ofctl add-flow br0 in_port=conflictinglongportname2,actions=drop], [1], [], [ovs-ofctl: conflictinglongportname2: invalid or unknown port for in_port
2792 AT_CHECK([ovs-ofctl add-flow br0 in_port=conflictinglong,actions=drop], [1], [], [ovs-ofctl: conflictinglong: invalid or unknown port for in_port
2795 # Show that the port names get displayed properly and that port names that
2796 # aren't alphanumeric get quoted.
2797 AT_CHECK([ovs-ofctl --names dump-flows br0 | ofctl_strip | sort], [0], [dnl
2798 in_port=reallyverylongp actions=drop
2799 in_port=xyzzy actions=output:"x-y",output:abc123
2804 AT_SETUP([ovs-ofctl diff-flows])
2807 # Add tons of flows to br0.
2808 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2809 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2811 # Dump them and compare against what we expect by hand, then with diff-flows.
2812 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2813 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2815 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2817 # Remove even-numbered flows, compare again.
2818 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2819 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2820 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2821 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2822 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2823 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2828 AT_SETUP([ovs-ofctl diff-flows - tunnel metadata])
2831 AT_CHECK([ovs-ofctl add-tlv-map br0 "{class=0xffff,type=0,len=4}->tun_metadata0,{class=0xffff,type=1,len=8}->tun_metadata1"])
2833 # Tunnel metadata requires dynamic allocation of space in the metadata table.
2834 # To stress this, try flows with different sizes for metadata, in different
2835 # orders, and interspersed with other fields to see if they still compare
2837 AT_DATA([flows.txt], [dnl
2838 priority=0,tun_metadata0=0,actions=drop
2839 priority=1,tun_metadata1=0xef/0xff,tun_metadata0=0xabcd,actions=drop
2840 priority=2,tun_metadata0=0xffffffff,actions=drop
2843 AT_DATA([flows2.txt], [dnl
2844 priority=2,tun_metadata0=0xffffffff,actions=drop
2845 priority=0,tun_metadata0=0,actions=drop
2848 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2849 AT_CHECK([ovs-ofctl diff-flows br0 flows2.txt], [2], [dnl
2850 -priority=1,tun_metadata0=0xabcd,tun_metadata1=0xef/0xff actions=drop
2856 dnl ofpacts that differ bytewise don't necessarily differ when
2857 dnl converted to another representation, such as OpenFlow 1.0
2858 dnl or to a string. "resubmit(,1)" is an example of an action
2859 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2860 dnl values even though this doesn't affect the string format.
2862 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2863 dnl false ofpacts differences.
2864 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2866 AT_DATA([flows.txt], [actions=resubmit(,1)
2868 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2869 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2870 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2871 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2872 -dl_vlan=9 idle_timeout=60 actions=output:1
2874 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2875 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2876 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2881 AT_SETUP([ovs-ofctl -F and -O interaction])
2882 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2883 [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.)
2885 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2886 [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.)
2888 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2889 [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.)
2891 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2892 [ovs-ofctl: missing command name; use --help for help
2894 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2895 [ovs-ofctl: missing command name; use --help for help
2897 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2898 [ovs-ofctl: missing command name; use --help for help
2902 AT_SETUP([ovs-ofctl ofp-parse])
2903 # Test the echo request/reply messages (0 payload).
2904 AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2905 AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2906 OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2907 OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2910 # Test the hello (xid:1 3-byte payload).
2911 AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2912 AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2913 OFPT_HELLO (xid=0x1):
2914 version bitmap: 0x01
2915 unknown data in hello:
2916 00000000 01 00 00 0b 00 00 00 01-41 42 43 |........ABC |
2920 AT_SETUP([tcp flags - filtering])
2921 OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 \
2922 -- add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
2923 AT_DATA([flows.txt], [dnl
2924 in_port=1,tcp,tp_dst=80,tcp_flags=+syn-rst-ack-fin,action=2 # Allow outbound web traffic bare-SYN
2925 in_port=1,tcp,tp_dst=80,tcp_flags=+ack,action=2 # Allow outbound web traffic with ACK bit
2926 in_port=1,tcp,tp_dst=80,tcp_flags=+rst,action=2 # Allow outbound web traffic with RST bit
2927 in_port=2,tcp,tp_src=80,tcp_flags=+ack,action=1 # Allow inbound web traffic with ACK bit
2928 in_port=2,tcp,tp_src=80,tcp_flags=+rst,action=1 # Allow inbound web traffic with RST bit
2929 priority=0,in_port=1,action=drop # Default drop outbound
2930 priority=0,in_port=2,action=drop # Default drop inbound
2933 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2935 AT_CHECK([ovs-ofctl add-flow br0 "tcp,tcp_flags=+ack-ack,action="], [1], [],
2936 [ovs-ofctl: ack: Each TCP flag can be specified only once
2939 AT_CHECK([ovs-appctl dpif/show | tail -n +4], [0], [dnl
2944 dnl Outbound web traffic with bare-SYN
2945 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])
2946 AT_CHECK([tail -1 stdout], [0],
2947 [Datapath actions: 2
2950 dnl Outbopund web traffic with ACK bit
2951 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])
2952 AT_CHECK([tail -1 stdout], [0],
2953 [Datapath actions: 2
2956 dnl Outbound web traffic with RST bit
2957 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])
2958 AT_CHECK([tail -1 stdout], [0],
2959 [Datapath actions: 2
2962 dnl Inbound web traffic with ACK bit
2963 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])
2964 AT_CHECK([tail -1 stdout], [0],
2965 [Datapath actions: 1
2968 dnl Inbound web traffic with RST bit
2969 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])
2970 AT_CHECK([tail -1 stdout], [0],
2971 [Datapath actions: 1
2974 dnl Inbound web traffic with SYN bit without ACK or RST bits
2975 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])
2976 AT_CHECK([tail -1 stdout], [0],
2977 [Datapath actions: drop
2983 dnl Check importance parameter added in OF1.4.
2984 dnl It validates whether importance set via add-flow via OpenFlow1.4+ gets
2985 dnl set or not by validating it against the dump-flows output via OpenFlow1.4+
2986 dnl If add-flow or dump-flows is used with later version of OpenFlow prior to 1.4+
2987 dnl then the importance will be considered zero whether provided as an argument.
2989 AT_SETUP([ovs-ofctl rule with importance])
2991 dnl Flow with importance parameter added via OF1.4+ and later version
2992 AT_CHECK([ovs-ofctl -O OpenFlow14 add-flow br0 priority=21,importance=21,actions=normal])
2993 AT_CHECK([ovs-ofctl add-flow br0 priority=22,importance=22,actions=normal])
2995 dnl Importance parameter will only be visible of flows that are added via OF1.4+ if dumped via OF1.4+
2996 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
2997 importance=21, priority=21 actions=NORMAL
2998 reset_counts priority=22 actions=NORMAL
3001 dnl Importance parameter will not be visible if flow is dumped with previous version prior to OF1.4+ whether added via OF1.4+
3002 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
3003 priority=21 actions=NORMAL
3004 priority=22 actions=NORMAL
3011 dnl Importance parameter added in OF1.4.
3012 dnl This validates whether flows with importance
3013 dnl parameter are getting replaced with "replace-flows" or
3014 dnl not by validating dump-flows output after replace with the expected output.
3016 AT_SETUP([ovs-ofctl replace-flows with importance])
3019 dnl Add flows to br0 with importance via OF1.4+. For more details refer "ovs-ofctl rule with importance" test case.
3020 for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
3021 AT_CHECK([ovs-ofctl -O OpenFlow14 add-flows br0 add-flows.txt])
3023 dnl Replace the flows in the bridge.
3024 for i in 1 3 5 7; do echo " importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt
3025 AT_CHECK([ovs-ofctl -O OpenFlow14 replace-flows br0 replace-flows.txt])
3027 dnl Dump them and compare the dump flows output against the expected output.
3028 cat replace-flows.txt > expout
3029 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
3035 AT_SETUP([ovs-ofctl replace-flows with --bundle])
3038 AT_CHECK([ovs-appctl vlog/set vconn:dbg])
3040 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.
3041 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
3042 AT_CHECK([ovs-ofctl --bundle --no-names add-flows br0 add-flows.txt])
3044 dnl Replace some flows in the bridge.
3045 for i in 1 3 5 7; do echo " table=$i, importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt
3046 AT_CHECK([ovs-ofctl --bundle --no-names replace-flows br0 replace-flows.txt])
3048 dnl Dump them and compare the dump flows output against the expected output.
3049 cat replace-flows.txt > expout
3050 AT_CHECK([ovs-ofctl -O OpenFlow14 --no-names dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
3053 dnl Check logs for OpenFlow trace
3055 OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): OFPST_FLOW reply" | wc -l` -ge 2])
3056 # AT_CHECK([sed -n "s/^.*\(|vconn|DBG|.*xid=.*:\).*$/\1/p" ovs-vswitchd.log], [0], [dnl
3057 AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
3058 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
3059 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
3060 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
3061 version bitmap: 0x05
3062 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
3063 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
3064 bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
3065 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
3066 bundle_id=0 type=OPEN_REPLY flags=0
3067 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3068 bundle_id=0 flags=atomic ordered
3069 OFPT_FLOW_MOD (OF1.4): ADD table:1 dl_vlan=1 importance:1 actions=drop
3070 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3071 bundle_id=0 flags=atomic ordered
3072 OFPT_FLOW_MOD (OF1.4): ADD table:2 dl_vlan=2 importance:2 actions=drop
3073 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3074 bundle_id=0 flags=atomic ordered
3075 OFPT_FLOW_MOD (OF1.4): ADD table:3 dl_vlan=3 importance:3 actions=drop
3076 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3077 bundle_id=0 flags=atomic ordered
3078 OFPT_FLOW_MOD (OF1.4): ADD table:4 dl_vlan=4 importance:4 actions=drop
3079 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3080 bundle_id=0 flags=atomic ordered
3081 OFPT_FLOW_MOD (OF1.4): ADD table:5 dl_vlan=5 importance:5 actions=drop
3082 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3083 bundle_id=0 flags=atomic ordered
3084 OFPT_FLOW_MOD (OF1.4): ADD table:6 dl_vlan=6 importance:6 actions=drop
3085 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3086 bundle_id=0 flags=atomic ordered
3087 OFPT_FLOW_MOD (OF1.4): ADD table:7 dl_vlan=7 importance:7 actions=drop
3088 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3089 bundle_id=0 flags=atomic ordered
3090 OFPT_FLOW_MOD (OF1.4): ADD table:8 dl_vlan=8 importance:8 actions=drop
3091 vconn|DBG|unix: received: OFPT_BARRIER_REQUEST (OF1.4):
3092 vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY (OF1.4):
3093 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
3094 bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
3095 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
3096 bundle_id=0 type=COMMIT_REPLY flags=0
3097 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
3098 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
3099 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
3100 version bitmap: 0x05
3101 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
3102 vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
3103 vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
3104 table=1, importance=1, dl_vlan=1 actions=drop
3105 table=2, importance=2, dl_vlan=2 actions=drop
3106 table=3, importance=3, dl_vlan=3 actions=drop
3107 table=4, importance=4, dl_vlan=4 actions=drop
3108 table=5, importance=5, dl_vlan=5 actions=drop
3109 table=6, importance=6, dl_vlan=6 actions=drop
3110 table=7, importance=7, dl_vlan=7 actions=drop
3111 table=8, importance=8, dl_vlan=8 actions=drop
3112 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
3113 bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
3114 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
3115 bundle_id=0 type=OPEN_REPLY flags=0
3116 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3117 bundle_id=0 flags=atomic ordered
3118 OFPT_FLOW_MOD (OF1.4): ADD table:1 dl_vlan=1 importance:11 actions=drop
3119 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3120 bundle_id=0 flags=atomic ordered
3121 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:2 dl_vlan=2 actions=drop
3122 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3123 bundle_id=0 flags=atomic ordered
3124 OFPT_FLOW_MOD (OF1.4): ADD table:3 dl_vlan=3 importance:13 actions=drop
3125 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3126 bundle_id=0 flags=atomic ordered
3127 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:4 dl_vlan=4 actions=drop
3128 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3129 bundle_id=0 flags=atomic ordered
3130 OFPT_FLOW_MOD (OF1.4): ADD table:5 dl_vlan=5 importance:15 actions=drop
3131 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3132 bundle_id=0 flags=atomic ordered
3133 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:6 dl_vlan=6 actions=drop
3134 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3135 bundle_id=0 flags=atomic ordered
3136 OFPT_FLOW_MOD (OF1.4): ADD table:7 dl_vlan=7 importance:17 actions=drop
3137 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3138 bundle_id=0 flags=atomic ordered
3139 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:8 dl_vlan=8 actions=drop
3140 vconn|DBG|unix: received: OFPT_BARRIER_REQUEST (OF1.4):
3141 vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY (OF1.4):
3142 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
3143 bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
3144 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
3145 bundle_id=0 type=COMMIT_REPLY flags=0
3146 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
3147 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
3148 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
3149 version bitmap: 0x05
3150 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
3151 vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
3152 vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
3153 table=1, importance=11, dl_vlan=1 actions=drop
3154 table=3, importance=13, dl_vlan=3 actions=drop
3155 table=5, importance=15, dl_vlan=5 actions=drop
3156 table=7, importance=17, dl_vlan=7 actions=drop
3163 AT_SETUP([ovs-ofctl ct-flush-zone])
3166 AT_CHECK([ovs-appctl vlog/set ct_dpif:dbg])
3167 AT_CHECK([ovs-ofctl ct-flush-zone br0 123])
3169 OVS_WAIT_UNTIL([grep -q "|ct_dpif|DBG|.*ct_flush:" ovs-vswitchd.log])
3170 AT_CHECK([grep -q "ct_dpif|DBG|.*ct_flush: 123" ovs-vswitchd.log])