ovn: Remove a completed TODO item.
[cascardo/ovs.git] / tests / ovs-ofctl.at
1 AT_BANNER([ovs-ofctl])
2
3 AT_SETUP([ovs-ofctl parse-flows choice of protocol])
4 # This doesn't cover some potential vlan_tci test cases.
5 for test_case in \
6     'tun_id=0                                    NXM,OXM' \
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' \
14     'tun_tos=0                                   none' \
15     'tun_ttl=0                                   none' \
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' \
25     'in_port=1                                   any' \
26     'skb_priority=0                              none' \
27     'pkt_mark=1                                  NXM,OXM' \
28     'pkt_mark=1/1                                NXM,OXM' \
29     'reg0=0                                      NXM,OXM' \
30     'reg0=0/1                                    NXM,OXM' \
31     'reg1=1                                      NXM,OXM' \
32     'reg1=1/1                                    NXM,OXM' \
33     'reg2=2                                      NXM,OXM' \
34     'reg2=2/1                                    NXM,OXM' \
35     'reg3=3                                      NXM,OXM' \
36     'reg3=3/1                                    NXM,OXM' \
37     'reg4=4                                      NXM,OXM' \
38     'reg4=4/1                                    NXM,OXM' \
39     'reg5=5                                      NXM,OXM' \
40     'reg5=5/1                                    NXM,OXM' \
41     'reg6=6                                      NXM,OXM' \
42     'reg6=6/1                                    NXM,OXM' \
43     'reg7=7                                      NXM,OXM' \
44     'reg8=8/1                                    NXM,OXM' \
45     'reg8=8                                      NXM,OXM' \
46     'reg9=9/1                                    NXM,OXM' \
47     'reg9=9                                      NXM,OXM' \
48     'reg10=10                                    NXM,OXM' \
49     'reg10=10/1                                  NXM,OXM' \
50     'reg11=11                                    NXM,OXM' \
51     'reg11=11/1                                  NXM,OXM' \
52     'reg12=12                                    NXM,OXM' \
53     'reg12=12/1                                  NXM,OXM' \
54     'reg13=13                                    NXM,OXM' \
55     'reg13=13/1                                  NXM,OXM' \
56     'reg14=14                                    NXM,OXM' \
57     'reg14=14/1                                  NXM,OXM' \
58     'xreg0=0                                     NXM,OXM' \
59     'xreg0=0/1                                   NXM,OXM' \
60     'xreg1=1                                     NXM,OXM' \
61     'xreg1=1/1                                   NXM,OXM' \
62     'xreg2=2                                     NXM,OXM' \
63     'xreg2=2/3                                   NXM,OXM' \
64     'xreg3=3                                     NXM,OXM' \
65     'xreg3=3/5                                   NXM,OXM' \
66     'xreg4=4                                     NXM,OXM' \
67     'xreg4=4/1                                   NXM,OXM' \
68     'xreg5=5                                     NXM,OXM' \
69     'xreg5=5/1                                   NXM,OXM' \
70     'xreg6=6                                     NXM,OXM' \
71     'xreg6=6/1                                   NXM,OXM' \
72     'xreg7=7                                     NXM,OXM' \
73     'xreg7=7/1                                   NXM,OXM' \
74     'xxreg0=0                                    NXM,OXM' \
75     'xxreg0=0/1                                  NXM,OXM' \
76     'xxreg1=1                                    NXM,OXM' \
77     'xxreg1=1/1                                  NXM,OXM' \
78     'xxreg2=2                                    NXM,OXM' \
79     'xxreg2=2/1                                  NXM,OXM' \
80     'xxreg3=3                                    NXM,OXM' \
81     'xxreg3=3/1                                  NXM,OXM' \
82     'dl_src=00:11:22:33:44:55                    any' \
83     'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff  NXM,OXM,OpenFlow11' \
84     'dl_dst=00:11:22:33:44:55                    any' \
85     'dl_dst=00:11:22:33:44:55/00:ff:ff:ff:ff:ff  NXM,OXM,OpenFlow11' \
86     'dl_type=0x1234                              any' \
87     'dl_type=0x0800                              any' \
88     'dl_type=0x0806                              any' \
89     'dl_type=0x86dd                              any' \
90     'vlan_tci=0                                  any' \
91     'vlan_tci=0x1009                             any' \
92     'vlan_tci=0x1009/0x1                         NXM,OXM' \
93     'dl_vlan=9                                   any' \
94     'vlan_vid=11                                 any' \
95     'vlan_vid=11/0x1                             NXM,OXM' \
96     'dl_vlan_pcp=6                               any' \
97     'vlan_pcp=5                                  any' \
98     'mpls,mpls_label=5                           NXM,OXM,OpenFlow11' \
99     'mpls,mpls_tc=1                              NXM,OXM,OpenFlow11' \
100     'mpls,mpls_bos=0                             NXM,OXM' \
101     'ip,ip_src=1.2.3.4                           any' \
102     'ip,ip_src=192.168.0.0/24                    any' \
103     'ip,ip_src=192.0.168.0/255.0.255.0           NXM,OXM,OpenFlow11' \
104     'ip,ip_dst=1.2.3.4                           any' \
105     'ip,ip_dst=192.168.0.0/24                    any' \
106     'ip,ip_dst=192.0.168.0/255.0.255.0           NXM,OXM,OpenFlow11' \
107     'ipv6,ipv6_src=::1                           NXM,OXM' \
108     'ipv6,ipv6_src=0:0:0:0:0:0:0:1/::1           NXM,OXM' \
109     'ipv6,ipv6_dst=::1                           NXM,OXM' \
110     'ipv6,ipv6_dst=0:0:0:0:0:0:0:1/::1           NXM,OXM' \
111     'ipv6,ipv6_label=5                           NXM,OXM' \
112     'ipv6,ipv6_label=5/1                         NXM,OXM' \
113     'ip,nw_proto=1                               any' \
114     'ipv6,nw_proto=1                             NXM,OXM' \
115     'ip,nw_tos=0xf0                              any' \
116     'ipv6,nw_tos=0xf0                            NXM,OXM' \
117     'ip,ip_dscp=0x3c                             any' \
118     'ipv6,ip_dscp=0x3c                           NXM,OXM' \
119     'ip,nw_ecn=1                                 NXM,OXM' \
120     'ipv6,nw_ecn=1                               NXM,OXM' \
121     'ip,nw_ttl=5                                 NXM,OXM' \
122     'ipv6,nw_ttl=5                               NXM,OXM' \
123     'ip,ip_frag=no                               NXM,OXM' \
124     'ipv6,ip_frag=no                             NXM,OXM' \
125     'arp,arp_op=0                                any' \
126     'arp,arp_spa=1.2.3.4                         any' \
127     'arp,arp_spa=1.2.3.4/0.0.0.1                 NXM,OXM,OpenFlow11' \
128     'arp,arp_tpa=1.2.3.4                         any' \
129     'arp,arp_tpa=1.2.3.4/0.0.0.1                 NXM,OXM,OpenFlow11' \
130     'arp,arp_sha=00:11:22:33:44:55               NXM,OXM' \
131     'arp,arp_sha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
132     'arp,arp_tha=00:11:22:33:44:55               NXM,OXM' \
133     'arp,arp_tha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
134     'tcp,tcp_src=80                              any' \
135     'tcp,tcp_src=0x1000/0x1000                   NXM,OXM' \
136     'tcp6,tcp_src=80                             NXM,OXM' \
137     'tcp6,tcp_src=0x1000/0x1000                  NXM,OXM' \
138     'tcp,tcp_dst=80                              any' \
139     'tcp,tcp_dst=0x1000/0x1000                   NXM,OXM' \
140     'tcp6,tcp_dst=80                             NXM,OXM' \
141     'tcp6,tcp_dst=0x1000/0x1000                  NXM,OXM' \
142     'udp,udp_src=80                              any' \
143     'udp,udp_src=0x1000/0x1000                   NXM,OXM' \
144     'udp6,udp_src=80                             NXM,OXM' \
145     'udp6,udp_src=0x1000/0x1000                  NXM,OXM' \
146     'udp,udp_dst=80                              any' \
147     'udp,udp_dst=0x1000/0x1000                   NXM,OXM' \
148     'udp6,udp_dst=80                             NXM,OXM' \
149     'udp6,udp_dst=0x1000/0x1000                  NXM,OXM' \
150     'icmp,icmp_type=1                            any' \
151     'icmp,icmp_code=2                            any' \
152     'icmp6,icmpv6_type=1                         NXM,OXM' \
153     'icmp6,icmpv6_code=2                         NXM,OXM' \
154     'ct_state=+trk                               NXM,OXM' \
155     'ct_zone=0                                   NXM,OXM' \
156     'ct_mark=0                                   NXM,OXM' \
157     'ct_label=0                                  NXM,OXM' \
158     'ct_label=0x1234567890ABCDEF12345678         NXM,OXM'
159 do
160     set $test_case
161     echo
162     echo "### test case: '$1' should have usable protocols '$2'"
163     if test "$2" = none; then
164       AT_CHECK([ovs-ofctl parse-flow "$1,actions=drop"], [1],
165                [dnl
166 ],
167                [ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
168 ])
169     else
170       AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$1,actions=drop" | sed 1q], [0],
171                         [usable protocols: $2
172 ])
173     fi
174 done
175 AT_CLEANUP
176
177 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
178 AT_DATA([flows.txt], [[
179 # comment
180 tcp,tp_src=123,actions=flood
181 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
182 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
183 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
184 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
185 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
186 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
187 ip,actions=set_field:10.4.3.77->ip_src,mod_nw_ecn:2
188 sctp actions=drop
189 sctp actions=drop
190 in_port=0 actions=resubmit:0
191 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
192 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
193 actions=ct(nat)
194 actions=ct(commit,nat(dst))
195 actions=ct(commit,nat(src))
196 actions=ct(commit,nat(src=10.0.0.240,random))
197 actions=ct(commit,nat(src=10.0.0.240:32768-65535,random))
198 actions=ct(commit,nat(dst=10.0.0.128-10.0.0.254,hash))
199 actions=ct(commit,nat(src=10.0.0.240-10.0.0.254:32768-65535,persistent))
200 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:a18b,random))
201 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
202 actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
203 actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
204 ]])
205
206 AT_CHECK([ovs-ofctl parse-flows flows.txt
207 ], [0], [stdout])
208 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
209 [[usable protocols: OpenFlow10,NXM
210 chosen protocol: OpenFlow10-table_id
211 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
212 OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
213 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
214 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
215 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
216 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
217 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
218 OFPT_FLOW_MOD: ADD ip actions=mod_nw_src:10.4.3.77,load:0x2->NXM_NX_IP_ECN[]
219 OFPT_FLOW_MOD: ADD sctp actions=drop
220 OFPT_FLOW_MOD: ADD sctp actions=drop
221 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
222 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
223 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
224 OFPT_FLOW_MOD: ADD actions=ct(nat)
225 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(dst))
226 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src))
227 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.0.0.240,random))
228 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.0.0.240:32768-65535,random))
229 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(dst=10.0.0.128-10.0.0.254,hash))
230 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.0.0.240-10.0.0.254:32768-65535,persistent))
231 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=fe80::20c:29ff:fe88:a18b,random))
232 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
233 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
234 OFPT_FLOW_MOD: ADD actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
235 ]])
236 AT_CLEANUP
237
238 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.1)])
239 AT_DATA([flows.txt], [[
240 # comment
241 tcp,tp_src=123,actions=flood
242 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
243 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
244 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
245 udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
246 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
247 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
248 ip,actions=mod_nw_ttl:1,set_field:10.4.3.77->ip_src
249 sctp actions=drop
250 sctp actions=drop
251 in_port=0 actions=resubmit:0
252 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
253 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
254 ]])
255
256 AT_CHECK([ovs-ofctl --protocols OpenFlow11 parse-flows flows.txt
257 ], [0], [stdout])
258 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
259 [[usable protocols: any
260 chosen protocol: OpenFlow11
261 OFPT_FLOW_MOD (OF1.1): ADD tcp,tp_src=123 actions=FLOOD
262 OFPT_FLOW_MOD (OF1.1): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
263 OFPT_FLOW_MOD (OF1.1): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
264 OFPT_FLOW_MOD (OF1.1): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
265 OFPT_FLOW_MOD (OF1.1): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
266 OFPT_FLOW_MOD (OF1.1): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
267 OFPT_FLOW_MOD (OF1.1): ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
268 OFPT_FLOW_MOD (OF1.1): ADD ip actions=mod_nw_ttl:1,mod_nw_src:10.4.3.77
269 OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
270 OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
271 OFPT_FLOW_MOD (OF1.1): ADD in_port=0 actions=resubmit:0
272 OFPT_FLOW_MOD (OF1.1): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
273 OFPT_FLOW_MOD (OF1.1): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
274 ]])
275 AT_CLEANUP
276
277 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
278 AT_DATA([flows.txt], [[
279 # comment
280 tcp,tp_src=123,actions=flood
281 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=mod_vlan_vid:7,mod_vlan_pcp:2
282 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
283 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
284 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
285 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
286 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
287 ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
288 sctp actions=set_field:3334->sctp_src
289 sctp actions=set_field:4445->sctp_dst
290 tcp actions=mod_tp_dst:1234
291 udp actions=mod_tp_src:1111
292 ip actions=mod_nw_src:10.1.1.2,mod_nw_dst:192.168.10.1,mod_nw_ttl:1,mod_nw_tos:16,mod_nw_ecn:2
293 in_port=0 actions=mod_dl_src:11:22:33:44:55:66,mod_dl_dst:10:20:30:40:50:60
294 in_port=0 actions=resubmit:0
295 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
296 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
297 ]])
298
299 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
300 ], [0], [stdout])
301 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
302 [[usable protocols: NXM,OXM
303 chosen protocol: OXM-OpenFlow12
304 OFPT_FLOW_MOD (OF1.2): ADD tcp,tp_src=123 actions=FLOOD
305 OFPT_FLOW_MOD (OF1.2): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=set_field:4103->vlan_vid,set_field:2->vlan_pcp
306 OFPT_FLOW_MOD (OF1.2): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
307 OFPT_FLOW_MOD (OF1.2): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
308 OFPT_FLOW_MOD (OF1.2): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
309 OFPT_FLOW_MOD (OF1.2): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
310 OFPT_FLOW_MOD (OF1.2): ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
311 OFPT_FLOW_MOD (OF1.2): ADD ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
312 OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:3334->sctp_src
313 OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:4445->sctp_dst
314 OFPT_FLOW_MOD (OF1.2): ADD tcp actions=set_field:1234->tcp_dst
315 OFPT_FLOW_MOD (OF1.2): ADD udp actions=set_field:1111->udp_src
316 OFPT_FLOW_MOD (OF1.2): ADD ip actions=set_field:10.1.1.2->ip_src,set_field:192.168.10.1->ip_dst,mod_nw_ttl:1,set_field:4->ip_dscp,set_field:2->nw_ecn
317 OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=set_field:11:22:33:44:55:66->eth_src,set_field:10:20:30:40:50:60->eth_dst
318 OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=resubmit:0
319 OFPT_FLOW_MOD (OF1.2): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
320 OFPT_FLOW_MOD (OF1.2): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
321 ]])
322 AT_CLEANUP
323
324 AT_SETUP([ovs-ofctl parse-flow with invalid mask])
325 for test_case in \
326     'tun_tos 1/1' \
327     'tun_ttl 1/1' \
328     'skb_priority 1/1' \
329     'eth_type 0x1234/0x1' \
330     'dl_vlan 9/0x1' \
331     'dl_vlan_pcp 6/0x1' \
332     'vlan_pcp 5/0x1' \
333     'mpls mpls_label 5/0x1' \
334     'mpls mpls_tc 1/0x1' \
335     'mpls mpls_bos 1/0x1' \
336     'ip nw_proto 1/1' \
337     'ipv6 nw_proto 1/1' \
338     'ip nw_tos 0xf0/0xf0' \
339     'ipv6 nw_tos 0xf0/0xf0' \
340     'ip ip_dscp 0x3c/0xf0' \
341     'ipv6 ip_dscp 0x3c/0xf0' \
342     'ip nw_ecn 1/1' \
343     'ipv6 nw_ecn 1/1' \
344     'ip nw_ttl 5/1' \
345     'ipv6 nw_ttl 5/1' \
346     'arp arp_op 0/1' \
347     'icmp icmp_type 1/1' \
348     'icmp icmp_code 2/1' \
349     'icmp6 icmpv6_code 2/1'
350 do
351     set $test_case
352     if test $# = 3; then
353         prereq=$1, field=$2 value=$3
354     else
355         prereq= field=$1 value=$2
356     fi
357     AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$prereq$field=$value,actions=drop"], [1], [],
358 [ovs-ofctl: $value: invalid mask for field $field
359 ])
360 done
361 AT_CLEANUP
362
363 AT_SETUP([ovs-ofctl action inconsistency (OpenFlow 1.1)])
364 AT_CHECK([ovs-ofctl --protocols OpenFlow11 add-flow br0 'ip actions=mod_tp_dst:1234'
365 ], [1], [stdout], [ovs-ofctl: none of the usable flow formats (OpenFlow10,NXM) is among the allowed flow formats (OpenFlow11)
366 ])
367 AT_CLEANUP
368
369 AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
370 AT_DATA([flows.txt], [[
371 skb_priority=0x12341234,tcp,tp_src=123,actions=flood
372 ]])
373
374 AT_CHECK([ovs-ofctl parse-flows flows.txt
375 ], [1], [dnl
376 ], [stderr])
377
378 AT_CLEANUP
379
380
381 AT_SETUP([ovs-ofctl parse-flows (NXM)])
382 AT_DATA([flows.txt], [[
383 # comment
384 tcp,tp_src=123,actions=flood
385 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
386 pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
387 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
388 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
389 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
390 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
391 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
392 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
393 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
394 actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, NXM_NX_REG0[0..12])
395 table=1,actions=drop
396 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
397 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
398 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
399 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
400 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
401 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
402 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
403 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
404 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
405 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
406 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
407 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
408 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
409 check_overlap,actions=output:1,exit,output:2
410 tcp,actions=fin_timeout(idle_timeout=5,hard_timeout=15)
411 actions=controller(max_len=123,reason=invalid_ttl,id=555)
412 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
413 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
414 ip,actions=ct(commit,zone=5)
415 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[])))
416 ip,actions=ct(commit,exec(load(0x1->NXM_NX_CT_LABEL[])))
417 ip,actions=ct(commit,exec(load(0x1234567890ABCDEF->NXM_NX_CT_LABEL[32..95])))
418 ip,actions=ct(commit,exec(set_field(0x1->ct_label)))
419 ip,ct_state=+trk,ct_label=0x1234567890abcdef12345678,actions=ct(commit)
420 actions=output(max_len=100,port=123)
421 actions=output(port=100,max_len=123)
422 actions=output(port=LOCAL,max_len=123)
423 actions=output(port=IN_PORT,max_len=123)
424 ]])
425
426 AT_CHECK([ovs-ofctl parse-flows flows.txt
427 ], [0], [stdout])
428 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
429 [[usable protocols: OXM,NXM+table_id
430 chosen protocol: NXM+table_id
431 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
432 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
433 NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
434 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
435 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
436 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
437 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
438 NXT_FLOW_MOD: ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
439 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
440 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
441 NXT_FLOW_MOD: ADD table:255 actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multipath(symmetric_l4,1024,iter_hash,5000,5050,NXM_NX_REG0[0..12])
442 NXT_FLOW_MOD: ADD table:1 actions=drop
443 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
444 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
445 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
446 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
447 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
448 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
449 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
450 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
451 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
452 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
453 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
454 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
455 NXT_FLOW_MOD: ADD table:255 send_flow_rem actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
456 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
457 NXT_FLOW_MOD: ADD table:255 tcp actions=fin_timeout(idle_timeout=5,hard_timeout=15)
458 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
459 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
460 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
461 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,zone=5)
462 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
463 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
464 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1234567890abcdef->NXM_NX_CT_LABEL[32..95]))
465 NXT_FLOW_MOD: ADD table:255 ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
466 NXT_FLOW_MOD: ADD table:255 ct_state=+trk,ct_label=0x1234567890abcdef12345678,ip actions=ct(commit)
467 NXT_FLOW_MOD: ADD table:255 actions=output(port=123,max_len=100)
468 NXT_FLOW_MOD: ADD table:255 actions=output(port=100,max_len=123)
469 NXT_FLOW_MOD: ADD table:255 actions=output(port=65534,max_len=123)
470 NXT_FLOW_MOD: ADD table:255 actions=output(port=65528,max_len=123)
471 ]])
472 AT_CLEANUP
473
474 AT_SETUP([ovs-ofctl -F nxm parse-flows])
475 AT_DATA([flows.txt], [
476 # comment
477 tcp,tp_src=123,actions=flood
478 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
479 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
480 ipv6,ipv6_label=0x12345 actions=2
481 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
482 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
483 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
484 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop 
485 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop 
486 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
487 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
488 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
489 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
490 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
491 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
492 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
493 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
494 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
495 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
496 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
497 tun_id=0x1234,cookie=0x5678,actions=flood
498 actions=drop
499 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
500 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
501 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
502 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
503 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
504 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
505 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
506 ip,actions=ct(commit,zone=5)
507 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[[]])))
508 ip,actions=ct(commit,exec(load(0x1->NXM_NX_CT_LABEL[[]])))
509 ])
510 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
511 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
512 usable protocols: NXM,OXM
513 chosen protocol: NXM-table_id
514 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
515 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
516 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
517 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
518 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
519 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
520 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
521 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
522 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
523 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
524 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
525 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
526 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
527 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
528 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
529 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
530 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
531 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
532 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
533 NXT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
534 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
535 NXT_FLOW_MOD: ADD actions=drop
536 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
537 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
538 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
539 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
540 NXT_FLOW_MOD: ADD actions=drop
541 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
542 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
543 NXT_FLOW_MOD: ADD ip actions=ct(commit,zone=5)
544 NXT_FLOW_MOD: ADD ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[[]]))
545 NXT_FLOW_MOD: ADD ip actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[[0..63]],load:0->NXM_NX_CT_LABEL[[64..127]]))
546 ])
547 AT_CLEANUP
548
549 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
550 AT_DATA([flows.txt], [[
551 # comment
552 tcp,tp_src=123,actions=flood
553 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
554 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
555 ipv6,ipv6_label=0x12345 actions=2
556 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
557 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
558 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
559 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
560 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
561 sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
562 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
563 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
564 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
565 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
566 sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
567 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
568 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
569 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
570 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
571 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
572 tun_id=0x1234,cookie=0x5678,actions=flood
573 actions=drop
574 reg0=123,actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:55->NXM_NX_REG2[0..31],move:NXM_NX_REG0[0..31]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
575 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
576 actions=push:NXM_NX_REG0[0..31],pop:NXM_NX_REG0[]
577 vlan_tci=0x1123/0x1fff,actions=drop
578 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
579 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
580 ip,actions=ct(commit,zone=5)
581 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_MARK[])))
582 ip,actions=ct(commit,exec(load(1->NXM_NX_CT_LABEL[])))
583 ip,actions=ct(commit,exec(set_field(1->ct_label)))
584 ]])
585 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
586 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
587 [[usable protocols: NXM,OXM
588 chosen protocol: NXM-table_id
589 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
590 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
591 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
592 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
593 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
594 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
595 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
596 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=drop
597 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=drop
598 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000005), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=drop
599 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(0003), NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(86) actions=drop
600 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_VLAN_TCI_W(f000/f000), NXM_OF_IP_PROTO(11) idle:5 actions=strip_vlan,output:0
601 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=set_queue:37,output:1
602 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=pop_queue,output:1
603 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=pop_queue,output:1
604 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571) actions=drop
605 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_SLL(000ae4256bb0) actions=drop
606 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571), NXM_NX_ND_TLL(000ae4256bb1) actions=drop
607 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
608 NXT_FLOW_MOD: ADD <any> actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
609 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
610 NXT_FLOW_MOD: ADD <any> actions=drop
611 NXT_FLOW_MOD: ADD NXM_NX_REG0(0000007b) actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:0x37->NXM_NX_REG2[],move:NXM_NX_REG0[]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
612 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
613 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
614 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
615 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
616 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678,sampling_port=56789)
617 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,zone=5)
618 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_MARK[]))
619 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
620 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800) actions=ct(commit,exec(load:0x1->NXM_NX_CT_LABEL[0..63],load:0->NXM_NX_CT_LABEL[64..127]))
621 ]])
622 AT_CLEANUP
623
624 AT_SETUP([ovs-ofctl parse-nx-match])
625 AT_KEYWORDS([nx-match])
626 AT_DATA([nx-match.txt], [dnl
627 <any>
628
629 # in port
630 NXM_OF_IN_PORT(0000)
631 NXM_OF_IN_PORT(fffe)
632
633 # eth dst
634 NXM_OF_ETH_DST(0002e30f80a4)
635 NXM_OF_ETH_DST_W(010000000000/010000000000)
636 NXM_OF_ETH_DST_W(000000000000/010000000000)
637 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
638 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
639 NXM_OF_ETH_DST_W(60175619848f/000000000000)
640 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
641 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
642
643 # eth src
644 NXM_OF_ETH_SRC(020898456ddb)
645 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
646 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
647 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
648
649 # eth type
650 NXM_OF_ETH_TYPE(0800)
651 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
652
653 # vlan tci
654 NXM_OF_VLAN_TCI(f009)
655 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
656 NXM_OF_VLAN_TCI(0000)           # Packets without 802.1Q header.
657 NXM_OF_VLAN_TCI(3123)           # Packets with VID=123, PCP=1.
658 NXM_OF_VLAN_TCI(0123)           # Does not make sense (but supported anyway)
659 NXM_OF_VLAN_TCI_W(1123/1fff)    # Packets with VID=123, any PCP.
660 NXM_OF_VLAN_TCI_W(1123/ffff)    # Packets with VID=123, PCP=0
661 NXM_OF_VLAN_TCI_W(1123/0000)    # Packets with or without 802.1Q header
662 NXM_OF_VLAN_TCI_W(f000/f000)    # Packets with any VID, PCP=7.
663 NXM_OF_VLAN_TCI_W(0000/e000)    # No 802.1Q or with VID=0
664
665 # IP TOS
666 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
667 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
668 NXM_OF_IP_TOS(f0)
669
670 # IP ECN
671 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
672 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
673 NXM_NX_IP_ECN(03)
674
675 # IP protocol
676 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
677 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
678 NXM_OF_IP_PROTO(05)
679
680 # IP TTL
681 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
682 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
683 NXM_NX_IP_TTL(80)
684
685 # IP source
686 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
687 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
688 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
689 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
690 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
691 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
692
693 # IP destination
694 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
695 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
696 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
697 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
698 NXM_OF_IP_DST(ac100014)
699 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
700
701 # TCP source port
702 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
703 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
704 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
705 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
706
707 # TCP destination port
708 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
709 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
710 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
711 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
712
713 # TCP flags
714 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS(0131)
715 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00F0/0FF0)
716 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(01E2/ffff)
717 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_NX_TCP_FLAGS(0fff)
718
719 # UDP source port
720 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
721 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
722 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
723 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
724
725 # UDP destination port
726 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
727 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
728 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
729 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
730
731 # ICMP type
732 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
733 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
734
735 # ICMP code
736 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
737 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
738 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
739 NXM_OF_ICMP_CODE(00)
740
741 # ARP opcode
742 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
743 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
744 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
745 NXM_OF_ARP_OP(0001)
746 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
747
748 # ARP source protocol address
749 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
750 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
751 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
752 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
753 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
754 NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
755
756 # ARP destination protocol address
757 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
758 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
759 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
760 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
761 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
762 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
763
764 # ARP source hardware address
765 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
766 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
767 NXM_NX_ARP_SHA(0002e30f80a4)
768
769 # ARP destination hardware address
770 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
771 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
772 NXM_NX_ARP_THA(0002e30f80a4)
773
774 # RARP opcode
775 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
776 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
777 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
778 NXM_OF_ARP_OP(0003)
779 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
780
781 # RARP source protocol address
782 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
783 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
784 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
785 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
786 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
787 NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
788
789 # RARP destination protocol address
790 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
791 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
792 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
793 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
794 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
795 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
796
797 # RARP source hardware address
798 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
799 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
800 NXM_NX_ARP_SHA(0002e30f80a4)
801
802 # RARP destination hardware address
803 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
804 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
805 NXM_NX_ARP_THA(0002e30f80a4)
806
807 # IPv6 source
808 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
809 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
810 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
811 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
812 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
813 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
814 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffff000000000000)
815
816 # IPv6 destination
817 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
818 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
819 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
820 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
821 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
822 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
823
824 # IPv6 Flow Label
825 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
826 NXM_NX_IPV6_LABEL(0000000f)
827 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
828
829 # ND target address
830 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
831 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
832 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
833 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
834 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(00000000000000000000000000000000/00000000000000000000000000000000)
835 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
836
837 # ND source hardware address
838 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
839 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
840 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
841 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
842
843 # ND destination hardware address
844 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
845 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
846 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
847 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
848
849 # IPv4 fragments.
850 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
851 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
852 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
853 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
854 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
855 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
856 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
857 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
858 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
859 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
860 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
861 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
862 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
863
864 # IPv6 fragments.
865 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
866 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
867 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
868 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
869 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
870 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
871 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
872 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
873 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
874 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
875 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
876 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
877 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
878
879 # Flow cookie.
880 NXM_NX_COOKIE(00000000abcdef01)
881 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
882 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
883 NXM_NX_COOKIE_W(0000000000000000/0000000000000000)
884
885 # Tunnel ID.
886 NXM_NX_TUN_ID(00000000abcdef01)
887 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
888 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
889 NXM_NX_TUN_ID_W(0000000000000000/0000000000000000)
890
891 # Register 0.
892 NXM_NX_REG0(acebdf56)
893 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
894 NXM_NX_REG0_W(a0e0d050/ffffffff)
895 NXM_NX_REG0_W(00000000/00000000)
896
897 # Connection tracking fields,
898 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE(00000020)
899 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE(00001080)
900 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE_W(00000020/00000020)
901 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_STATE_W(00000020/000000F0)
902 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_ZONE(5a5a)
903 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_MARK(5a5a5a5a)
904 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_MARK_W(5a5a5a5a/fefefefe)
905 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_LABEL(1234567890abcdef1234567890abcdef)
906 NXM_OF_ETH_TYPE(0800) NXM_NX_CT_LABEL_W(10203040506070809000a0b0c0d0e0f0/f1f2f3f4f5f6f7f8f9f0fafbfcfdfeff)
907
908 # dp_hash (testing experimenter OXM).
909 NXM_NX_DP_HASH(01234567)
910 NXOXM_ET_DP_HASH(01234567)
911
912 # Invalid field number.
913 01020304(1111/3333)
914
915 # Invalid field numbers (experimenter OXM).
916 ffff020800002320(11112222)
917 ffff030800002320(1111/3333)
918 ])
919 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
920 <any>
921
922 # in port
923 NXM_OF_IN_PORT(0000)
924 NXM_OF_IN_PORT(fffe)
925
926 # eth dst
927 NXM_OF_ETH_DST(0002e30f80a4)
928 NXM_OF_ETH_DST_W(010000000000/010000000000)
929 NXM_OF_ETH_DST_W(000000000000/010000000000)
930 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
931 NXM_OF_ETH_DST(0002e30f80a4)
932 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
933 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
934 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
935
936 # eth src
937 NXM_OF_ETH_SRC(020898456ddb)
938 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
939 NXM_OF_ETH_SRC(020898456ddb)
940 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
941
942 # eth type
943 NXM_OF_ETH_TYPE(0800)
944 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800) 
945
946 # vlan tci
947 NXM_OF_VLAN_TCI(f009)
948 nx_pull_match() returned error OFPBMC_DUP_FIELD
949 NXM_OF_VLAN_TCI(0000)
950 NXM_OF_VLAN_TCI(3123)
951 NXM_OF_VLAN_TCI(0123)
952 NXM_OF_VLAN_TCI_W(1123/1fff)
953 NXM_OF_VLAN_TCI(1123)
954 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
955 NXM_OF_VLAN_TCI_W(f000/f000)
956 NXM_OF_VLAN_TCI_W(0000/e000)
957
958 # IP TOS
959 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
960 nx_pull_match() returned error OFPBMC_BAD_VALUE
961 nx_pull_match() returned error OFPBMC_BAD_PREREQ
962
963 # IP ECN
964 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
965 nx_pull_match() returned error OFPBMC_BAD_VALUE
966 nx_pull_match() returned error OFPBMC_BAD_PREREQ
967
968 # IP protocol
969 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
970 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
971 nx_pull_match() returned error OFPBMC_BAD_PREREQ
972
973 # IP TTL
974 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
975 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
976 nx_pull_match() returned error OFPBMC_BAD_PREREQ
977
978 # IP source
979 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
980 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
981 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
982 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
983 nx_pull_match() returned error OFPBMC_BAD_PREREQ
984 nx_pull_match() returned error OFPBMC_BAD_PREREQ
985
986 # IP destination
987 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
988 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
989 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
990 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
991 nx_pull_match() returned error OFPBMC_BAD_PREREQ
992 nx_pull_match() returned error OFPBMC_BAD_PREREQ
993
994 # TCP source port
995 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
996 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
997 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
998 nx_pull_match() returned error OFPBMC_BAD_PREREQ
999
1000 # TCP destination port
1001 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
1002 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
1003 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
1004 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1005
1006 # TCP flags
1007 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0131)
1008 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS_W(00f0/0ff0)
1009 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(01e2)
1010 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1011
1012 # UDP source port
1013 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
1014 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
1015 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
1016 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1017
1018 # UDP destination port
1019 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
1020 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
1021 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
1022 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1023
1024 # ICMP type
1025 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
1026 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1027
1028 # ICMP code
1029 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
1030 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1031 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1032 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1033
1034 # ARP opcode
1035 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
1036 nx_pull_match() returned error OFPBMC_BAD_VALUE
1037 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1038 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1039 nx_pull_match() returned error OFPBMC_DUP_FIELD
1040
1041 # ARP source protocol address
1042 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
1043 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1044 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1045 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
1046 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1047 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1048
1049 # ARP destination protocol address
1050 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
1051 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1052 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1053 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
1054 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1055 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1056
1057 # ARP source hardware address
1058 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
1059 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1060 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1061
1062 # ARP destination hardware address
1063 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
1064 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1065 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1066
1067 # RARP opcode
1068 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
1069 nx_pull_match() returned error OFPBMC_BAD_VALUE
1070 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1071 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1072 nx_pull_match() returned error OFPBMC_DUP_FIELD
1073
1074 # RARP source protocol address
1075 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
1076 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1077 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1078 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
1079 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1080 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1081
1082 # RARP destination protocol address
1083 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
1084 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1085 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1086 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
1087 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1088 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1089
1090 # RARP source hardware address
1091 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
1092 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1093 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1094
1095 # RARP destination hardware address
1096 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
1097 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1098 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1099
1100 # IPv6 source
1101 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
1102 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1103 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1104 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1105 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
1106 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1107 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1108
1109 # IPv6 destination
1110 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
1111 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1112 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1113 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
1114 NXM_OF_ETH_TYPE(86dd)
1115 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1116
1117 # IPv6 Flow Label
1118 nx_pull_match() returned error OFPBMC_BAD_VALUE
1119 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1120 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
1121
1122 # ND target address
1123 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1124 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1125 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1126 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1127 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
1128 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1129
1130 # ND source hardware address
1131 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
1132 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1133 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1134 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1135
1136 # ND destination hardware address
1137 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
1138 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1139 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1140 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1141
1142 # IPv4 fragments.
1143 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1144 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
1145 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
1146 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1147 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1148 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
1149 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
1150 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
1151 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
1152 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1153 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1154 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1155 nx_pull_match() returned error OFPBMC_BAD_VALUE
1156
1157 # IPv6 fragments.
1158 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1159 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
1160 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
1161 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1162 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1163 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
1164 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
1165 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
1166 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
1167 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1168 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1169 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1170 nx_pull_match() returned error OFPBMC_BAD_VALUE
1171
1172 # Flow cookie.
1173 NXM_NX_COOKIE(00000000abcdef01)
1174 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
1175 NXM_NX_COOKIE(84200000abcdef01)
1176 <any>
1177
1178 # Tunnel ID.
1179 NXM_NX_TUN_ID(00000000abcdef01)
1180 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
1181 NXM_NX_TUN_ID(84200000abcdef01)
1182 <any>
1183
1184 # Register 0.
1185 NXM_NX_REG0(acebdf56)
1186 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
1187 NXM_NX_REG0(a0e0d050)
1188 <any>
1189
1190 # Connection tracking fields,
1191 dnl
1192 dnl When re-serialising, bits 16-31 are wildcarded, because current OVS userspace
1193 dnl doesn't understand (or store) those bits.
1194 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/0000ffff)
1195 nx_pull_match() returned error OFPBMC_BAD_VALUE
1196 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/00000020)
1197 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/000000f0)
1198 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_ZONE(5a5a)
1199 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_MARK(5a5a5a5a)
1200 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_MARK_W(5a5a5a5a/fefefefe)
1201 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_LABEL(1234567890abcdef1234567890abcdef)
1202 NXM_OF_ETH_TYPE(0800), NXM_NX_CT_LABEL_W(10203040506070809000a0b0c0d0e0f0/f1f2f3f4f5f6f7f8f9f0fafbfcfdfeff)
1203
1204 # dp_hash (testing experimenter OXM).
1205 NXM_NX_DP_HASH(01234567)
1206 NXM_NX_DP_HASH(01234567)
1207
1208 # Invalid field number.
1209 nx_pull_match() returned error OFPBMC_BAD_FIELD
1210
1211 # Invalid field numbers (experimenter OXM).
1212 nx_pull_match() returned error OFPBMC_BAD_FIELD
1213 nx_pull_match() returned error OFPBMC_BAD_FIELD
1214 ], [stderr])
1215
1216 # Check that at least the first warning made it.  (It's rate-limited
1217 # so a variable number could show up, especially under valgrind etc.)
1218 AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
1219 nx_match|WARN|Rejecting NXM/OXM entry 0:0:1:1:12 with 1-bits in value for bits wildcarded by the mask.
1220 ])
1221
1222 # Check that there wasn't any other stderr output.
1223 AT_CHECK([grep -v '1-bits in value' stderr], [1])
1224 AT_CLEANUP
1225
1226 AT_SETUP([ovs-ofctl parse-ofp10-match])
1227 AT_KEYWORDS([OF1.0])
1228 AT_DATA([test-data], [dnl
1229 # in_port=LOCAL
1230 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1231 xxxxxxxx xxxxxxxx xxxx xxxx
1232
1233 # dl_src=00:01:02:03:04:05
1234 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1235 xxxxxxxx xxxxxxxx xxxx xxxx
1236
1237 # dl_dst=10:20:30:40:50:60
1238 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1239 xxxxxxxx xxxxxxxx xxxx xxxx
1240
1241 # dl_vlan=291
1242 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1243 xxxxxxxx xxxxxxxx xxxx xxxx
1244
1245 # dl_vlan_pcp=5
1246 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1247 xxxxxxxx xxxxxxxx xxxx xxxx
1248
1249 # dl_vlan=291,dl_vlan_pcp=4
1250 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1251 xxxxxxxx xxxxxxxx xxxx xxxx
1252
1253 dnl dl_vlan_pcp doesn't make sense when 802.1Q is not present, so
1254 dnl OVS ignores it and drops it on output.
1255 # vlan_tci=0x0000
1256 #  1: 38 -> 28
1257 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1258 xxxxxxxx xxxxxxxx xxxx xxxx
1259
1260 dnl dl_vlan_pcp doesn't make sense when 802.1Q is not present, so
1261 dnl OVS ignores it and drops it on output.
1262 # vlan_tci=0x0000
1263 # 20: 05 -> 00
1264 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1265 xxxxxxxx xxxxxxxx xxxx xxxx
1266
1267 dnl Invalid VID and PCP discards out-of-range bits:
1268 # dl_vlan=256,dl_vlan_pcp=7
1269 # 18: f1 -> 01
1270 # 20: ff -> 07
1271 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1272 xxxxxxxx xxxxxxxx xxxx xxxx
1273
1274 # dl_type=0x1234
1275 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1276 xxxxxxxx xxxxxxxx xxxx xxxx
1277
1278 # ip,nw_proto=5
1279 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1280 xxxxxxxx xxxxxxxx xxxx xxxx
1281
1282 dnl Ignore nw_proto if not IP or ARP:
1283 # dl_type=0x1234,nw_proto=5
1284 # normal:  3: cf -> ef
1285 # normal: 25: 05 -> 00
1286 & ofp_util|INFO|normalization changed ofp_match, details:
1287 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1288 & ofp_util|INFO|post: dl_type=0x1234
1289 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1290 xxxxxxxx xxxxxxxx xxxx xxxx
1291
1292 # ip,nw_tos=252
1293 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1294 xxxxxxxx xxxxxxxx xxxx xxxx
1295
1296 dnl Ignore nw_tos if not IP:
1297 # arp,nw_tos=4
1298 # 24: 05 -> 04
1299 # normal:  1: 18 -> 38
1300 # normal: 24: 04 -> 00
1301 & ofp_util|INFO|normalization changed ofp_match, details:
1302 & ofp_util|INFO| pre: arp,nw_tos=4
1303 & ofp_util|INFO|post: arp
1304 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1305 xxxxxxxx xxxxxxxx xxxx xxxx
1306
1307 dnl Low 2 bits of invalid TOS are forced to 0:
1308 # ip,nw_tos=48
1309 # 24: 31 -> 30
1310 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1311 xxxxxxxx xxxxxxxx xxxx xxxx
1312
1313 # arp,arp_op=2
1314 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1315 xxxxxxxx xxxxxxxx xxxx xxxx
1316
1317 # ip,nw_src=192.168.128.85
1318 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1319 c0a88055 xxxxxxxx xxxx xxxx
1320
1321 # ip,nw_src=192.168.128.0/24
1322 # 31: 55 -> 00
1323 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1324 c0a88055 xxxxxxxx xxxx xxxx
1325
1326 # ip,nw_dst=192.168.128.85
1327 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1328 xxxxxxxx c0a88055 xxxx xxxx
1329
1330 # ip,nw_dst=192.168.128.0/24
1331 # 35: 55 -> 00
1332 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1333 xxxxxxxx c0a88055 xxxx xxxx
1334
1335 # arp,arp_spa=192.168.128.85
1336 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1337 c0a88055 xxxxxxxx xxxx xxxx
1338
1339 # arp,arp_spa=192.168.128.0/24
1340 # 31: 55 -> 00
1341 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1342 c0a88055 xxxxxxxx xxxx xxxx
1343
1344 # arp,arp_tpa=192.168.128.85
1345 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1346 xxxxxxxx c0a88055 xxxx xxxx
1347
1348 # arp,arp_tpa=192.168.128.0/24
1349 # 35: 55 -> 00
1350 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1351 xxxxxxxx c0a88055 xxxx xxxx
1352
1353 dnl Ignore nw_src if not IP or ARP:
1354 # dl_type=0x1234,nw_src=192.168.128.0/24
1355 # 31: 55 -> 00
1356 # normal:  2: 08 -> 20
1357 # normal: 28: c0 -> 00
1358 # normal: 29: a8 -> 00
1359 # normal: 30: 80 -> 00
1360 & ofp_util|INFO|normalization changed ofp_match, details:
1361 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1362 & ofp_util|INFO|post: dl_type=0x1234
1363 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1364 c0a88055 xxxxxxxx xxxx xxxx
1365
1366 dnl Ignore nw_dst if not IP or ARP:
1367 # dl_type=0x1234,nw_dst=192.168.128.0/24
1368 # 35: 55 -> 00
1369 # normal:  1: 32 -> 38
1370 # normal: 32: c0 -> 00
1371 # normal: 33: a8 -> 00
1372 # normal: 34: 80 -> 00
1373 & ofp_util|INFO|normalization changed ofp_match, details:
1374 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1375 & ofp_util|INFO|post: dl_type=0x1234
1376 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1377 xxxxxxxx c0a88055 xxxx xxxx
1378
1379 # tcp,tp_src=443
1380 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1381 xxxxxxxx xxxxxxxx 01bb xxxx
1382
1383 # tcp,tp_dst=443
1384 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1385 xxxxxxxx xxxxxxxx xxxx 01bb
1386
1387 # udp,tp_src=443
1388 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1389 xxxxxxxx xxxxxxxx 01bb xxxx
1390
1391 # udp,tp_dst=443
1392 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1393 xxxxxxxx xxxxxxxx xxxx 01bb
1394
1395 # sctp,tp_src=443
1396 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1397 xxxxxxxx xxxxxxxx 01bb xxxx
1398
1399 # sctp,tp_dst=443
1400 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1401 xxxxxxxx xxxxxxxx xxxx 01bb
1402
1403 # icmp,icmp_type=5
1404 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1405 xxxxxxxx xxxxxxxx 0005 xxxx
1406
1407 # icmp,icmp_code=8
1408 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1409 xxxxxxxx xxxxxxxx xxxx 0008
1410
1411 dnl Ignore tp_src if not TCP/UDP/SCTP:
1412 # ip,nw_proto=21,tp_src=443
1413 # normal:  3: 8f -> cf
1414 # normal: 36: 01 -> 00
1415 # normal: 37: bb -> 00
1416 & ofp_util|INFO|normalization changed ofp_match, details:
1417 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1418 & ofp_util|INFO|post: ip,nw_proto=21
1419 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1420 xxxxxxxx xxxxxxxx 01bb xxxx
1421
1422 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1423 # ip,nw_proto=21,tp_dst=443
1424 # normal:  3: 4f -> cf
1425 # normal: 38: 01 -> 00
1426 # normal: 39: bb -> 00
1427 dnl The normalization details are suppressed here due to rate-limiting.
1428 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1429 xxxxxxxx xxxxxxxx xxxx 01bb
1430
1431 ])
1432 sed '/^[[#&]]/d' < test-data > input.txt
1433 sed -n 's/^# //p; /^$/p' < test-data > expout
1434 sed -n 's/^& //p' < test-data > experr
1435 AT_CAPTURE_FILE([input.txt])
1436 AT_CAPTURE_FILE([expout])
1437 AT_CAPTURE_FILE([experr])
1438 AT_CHECK(
1439   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1440   [0], [expout], [experr])
1441 AT_CLEANUP
1442
1443 AT_SETUP([ovs-ofctl parse-ofp11-match])
1444 AT_KEYWORDS([OF1.1])
1445 AT_DATA([test-data], [dnl
1446 # in_port=LOCAL
1447 0000 0058 fffffffe 000003fe dnl
1448 000000000000ffffffffffff 000000000000ffffffffffff dnl
1449 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1450 00000000 00 000000 0000000000000000ffffffffffffffff
1451
1452 # bad ofp11_match: OFPBMC_BAD_VALUE
1453 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1454 0000 0058 12345678 000003fe dnl
1455 000000000000ffffffffffff 000000000000ffffffffffff dnl
1456 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1457 00000000 00 000000 0000000000000000ffffffffffffffff
1458
1459 # dl_src=00:01:02:03:04:05
1460 0000 0058 00000000 000003ff dnl
1461 000102030405000000000000 000000000000ffffffffffff dnl
1462 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1463 00000000 00 000000 0000000000000000ffffffffffffffff
1464
1465 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1466 0000 0058 00000000 000003ff dnl
1467 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1468 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1469 00000000 00 000000 0000000000000000ffffffffffffffff
1470
1471 # dl_dst=00:01:02:03:04:05
1472 0000 0058 00000000 000003ff dnl
1473 000000000000ffffffffffff 000102030405000000000000 dnl
1474 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1475 00000000 00 000000 0000000000000000ffffffffffffffff
1476
1477 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1478 0000 0058 00000000 000003ff dnl
1479 000000000000ffffffffffff 010000000000feffffffffff dnl
1480 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1481 00000000 00 000000 0000000000000000ffffffffffffffff
1482
1483 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1484 0000 0058 00000000 000003ff dnl
1485 000000000000ffffffffffff 000102030405010000000000 dnl
1486 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1487 00000000 00 000000 0000000000000000ffffffffffffffff
1488
1489 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1490 0000 0058 00000000 000003ff dnl
1491 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1492 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1493 00000000 00 000000 0000000000000000ffffffffffffffff
1494
1495 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1496 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1497 # in_port=1
1498 # 11: fa -> fe
1499 # 38: 03 -> 00
1500 0000 0058 00000001 000003fa dnl
1501 000000000000ffffffffffff 000000000000ffffffffffff dnl
1502 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1503 00000000 00 000000 0000000000000000ffffffffffffffff
1504
1505 # dl_vlan=291
1506 0000 0058 00000000 000003fd dnl
1507 000000000000ffffffffffff 000000000000ffffffffffff dnl
1508 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1509 00000000 00 000000 0000000000000000ffffffffffffffff
1510
1511 dnl OFPVID_NONE:
1512 # vlan_tci=0x0000
1513 0000 0058 00000000 000003fd dnl
1514 000000000000ffffffffffff 000000000000ffffffffffff dnl
1515 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1516 00000000 00 000000 0000000000000000ffffffffffffffff
1517
1518 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1519 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1520 # vlan_tci=0x0000
1521 # 11: f9 -> fd
1522 # 38: 05 -> 00
1523 0000 0058 00000000 000003f9 dnl
1524 000000000000ffffffffffff 000000000000ffffffffffff dnl
1525 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1526 00000000 00 000000 0000000000000000ffffffffffffffff
1527
1528 # vlan_tci=0x1000/0x1000
1529 0000 0058 00000000 000003fd dnl
1530 000000000000ffffffffffff 000000000000ffffffffffff dnl
1531 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1532 00000000 00 000000 0000000000000000ffffffffffffffff
1533
1534 dnl Try invalid VID:
1535 # bad ofp11_match: OFPBMC_BAD_VALUE
1536 0000 0058 00000000 000003fd dnl
1537 000000000000ffffffffffff 000000000000ffffffffffff dnl
1538 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1539 00000000 00 000000 0000000000000000ffffffffffffffff
1540
1541 # dl_vlan_pcp=4
1542 0000 0058 00000000 000003f9 dnl
1543 000000000000ffffffffffff 000000000000ffffffffffff dnl
1544 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1545 00000000 00 000000 0000000000000000ffffffffffffffff
1546
1547 # dl_vlan=10,dl_vlan_pcp=6
1548 0000 0058 00000000 000003f9 dnl
1549 000000000000ffffffffffff 000000000000ffffffffffff dnl
1550 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1551 00000000 00 000000 0000000000000000ffffffffffffffff
1552
1553 # dl_type=0x1234
1554 0000 0058 00000000 000003f7 dnl
1555 000000000000ffffffffffff 000000000000ffffffffffff dnl
1556 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1557 00000000 00 000000 0000000000000000ffffffffffffffff
1558
1559 # ip,nw_tos=252
1560 0000 0058 00000000 000003e7 dnl
1561 000000000000ffffffffffff 000000000000ffffffffffff dnl
1562 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1563 00000000 00 000000 0000000000000000ffffffffffffffff
1564
1565 dnl Try invalid TOS:
1566 # bad ofp11_match: OFPBMC_BAD_VALUE
1567 0000 0058 00000000 000003e7 dnl
1568 000000000000ffffffffffff 000000000000ffffffffffff dnl
1569 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1570 00000000 00 000000 0000000000000000ffffffffffffffff
1571
1572 # ip,nw_proto=5
1573 0000 0058 00000000 000003d7 dnl
1574 000000000000ffffffffffff 000000000000ffffffffffff dnl
1575 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1576 00000000 00 000000 0000000000000000ffffffffffffffff
1577
1578 # arp,arp_op=2
1579 0000 0058 00000000 000003d7 dnl
1580 000000000000ffffffffffff 000000000000ffffffffffff dnl
1581 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1582 00000000 00 000000 0000000000000000ffffffffffffffff
1583
1584 # ip,nw_src=192.168.128.0/24
1585 0000 0058 00000000 000003f7 dnl
1586 000000000000ffffffffffff 000000000000ffffffffffff dnl
1587 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1588 00000000 00 000000 0000000000000000ffffffffffffffff
1589
1590 # ip,nw_src=128.160.128.0/165.165.165.165
1591 # 44: c0 -> 80
1592 # 45: a8 -> a0
1593 0000 0058 00000000 000003f7 dnl
1594 000000000000ffffffffffff 000000000000ffffffffffff dnl
1595 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1596 00000000 00 000000 0000000000000000ffffffffffffffff
1597
1598 # ip,nw_dst=192.168.128.0/24
1599 0000 0058 00000000 000003f7 dnl
1600 000000000000ffffffffffff 000000000000ffffffffffff dnl
1601 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1602 00000000 00 000000 0000000000000000ffffffffffffffff
1603
1604 # ip,nw_dst=128.160.128.0/165.165.165.165
1605 # 52: c0 -> 80
1606 # 53: a8 -> a0
1607 0000 0058 00000000 000003f7 dnl
1608 000000000000ffffffffffff 000000000000ffffffffffff dnl
1609 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1610 00000000 00 000000 0000000000000000ffffffffffffffff
1611
1612 # arp,arp_spa=192.168.128.0/24
1613 0000 0058 00000000 000003f7 dnl
1614 000000000000ffffffffffff 000000000000ffffffffffff dnl
1615 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1616 00000000 00 000000 0000000000000000ffffffffffffffff
1617
1618 # arp,arp_tpa=192.168.128.0/24
1619 0000 0058 00000000 000003f7 dnl
1620 000000000000ffffffffffff 000000000000ffffffffffff dnl
1621 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1622 00000000 00 000000 0000000000000000ffffffffffffffff
1623
1624 # tcp,tp_src=443
1625 0000 0058 00000000 00000397 dnl
1626 000000000000ffffffffffff 000000000000ffffffffffff dnl
1627 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1628 00000000 00 000000 0000000000000000ffffffffffffffff
1629
1630 # tcp,tp_dst=443
1631 0000 0058 00000000 00000357 dnl
1632 000000000000ffffffffffff 000000000000ffffffffffff dnl
1633 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1634 00000000 00 000000 0000000000000000ffffffffffffffff
1635
1636 # udp,tp_src=443
1637 0000 0058 00000000 00000397 dnl
1638 000000000000ffffffffffff 000000000000ffffffffffff dnl
1639 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1640 00000000 00 000000 0000000000000000ffffffffffffffff
1641
1642 # icmp,icmp_type=5
1643 0000 0058 00000000 00000397 dnl
1644 000000000000ffffffffffff 000000000000ffffffffffff dnl
1645 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1646 00000000 00 000000 0000000000000000ffffffffffffffff
1647
1648 # icmp,icmp_code=8
1649 0000 0058 00000000 00000357 dnl
1650 000000000000ffffffffffff 000000000000ffffffffffff dnl
1651 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1652 00000000 00 000000 0000000000000000ffffffffffffffff
1653
1654 # udp,tp_src=443
1655 0000 0058 00000000 00000397 dnl
1656 000000000000ffffffffffff 000000000000ffffffffffff dnl
1657 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1658 00000000 00 000000 0000000000000000ffffffffffffffff
1659
1660 # udp,tp_dst=443
1661 0000 0058 00000000 00000357 dnl
1662 000000000000ffffffffffff 000000000000ffffffffffff dnl
1663 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1664 00000000 00 000000 0000000000000000ffffffffffffffff
1665
1666 # sctp
1667 0000 0058 00000000 000003d7 dnl
1668 000000000000ffffffffffff 000000000000ffffffffffff dnl
1669 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1670 00000000 00 000000 0000000000000000ffffffffffffffff
1671
1672 # sctp,tp_src=443
1673 0000 0058 00000000 00000397 dnl
1674 000000000000ffffffffffff 000000000000ffffffffffff dnl
1675 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1676 00000000 00 000000 0000000000000000ffffffffffffffff
1677
1678 # sctp,tp_dst=443
1679 0000 0058 00000000 00000357 dnl
1680 000000000000ffffffffffff 000000000000ffffffffffff dnl
1681 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1682 00000000 00 000000 0000000000000000ffffffffffffffff
1683
1684 dnl Ignore tp_src if not TCP/UDP/SCTP:
1685 # ip,nw_proto=21
1686 # 11: 97 -> d7
1687 # 60: 01 -> 00
1688 # 61: bb -> 00
1689 0000 0058 00000000 00000397 dnl
1690 000000000000ffffffffffff 000000000000ffffffffffff dnl
1691 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1692 00000000 00 000000 0000000000000000ffffffffffffffff
1693
1694 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1695 # ip,nw_proto=22
1696 # 11: 57 -> d7
1697 # 62: 01 -> 00
1698 # 63: bb -> 00
1699 0000 0058 00000000 00000357 dnl
1700 000000000000ffffffffffff 000000000000ffffffffffff dnl
1701 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1702 00000000 00 000000 0000000000000000ffffffffffffffff
1703
1704 # mpls,mpls_label=284280
1705 # 64: 12 -> 00
1706 # 65: 34 -> 04
1707 0000 0058 00000000 000002f7 dnl
1708 000000000000ffffffffffff 000000000000ffffffffffff dnl
1709 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1710 12345678 00 000000 0000000000000000ffffffffffffffff
1711
1712 # mplsm,mpls_tc=2
1713 # 68: 5a -> 02
1714 0000 0058 00000000 000001f7 dnl
1715 000000000000ffffffffffff 000000000000ffffffffffff dnl
1716 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1717 00000000 5a 000000 0000000000000000ffffffffffffffff
1718
1719 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1720 # dl_type=0x1234
1721 # 10: 00 -> 03
1722 # 64: 12 -> 00
1723 # 65: 34 -> 00
1724 # 66: 56 -> 00
1725 # 67: 78 -> 00
1726 # 68: 5a -> 00
1727 0000 0058 00000000 000000f7 dnl
1728 000000000000ffffffffffff 000000000000ffffffffffff dnl
1729 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1730 12345678 5a 000000 0000000000000000ffffffffffffffff
1731
1732 dnl metadata match:
1733 # metadata=0x1234567890abcdef
1734 0000 0058 00000000 000003ff dnl
1735 000000000000ffffffffffff 000000000000ffffffffffff dnl
1736 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1737 00000000 00 000000 1234567890abcdef0000000000000000
1738
1739 dnl metadata match:
1740 # metadata=0x5555555555555555/0x5555555555555555
1741 0000 0058 00000000 000003ff dnl
1742 000000000000ffffffffffff 000000000000ffffffffffff dnl
1743 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1744 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1745
1746 dnl metadata match:
1747 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1748 # 74: 56 -> 00
1749 # 75: 78 -> 00
1750 # 78: cd -> 00
1751 # 79: ef -> 00
1752 0000 0058 00000000 000003ff dnl
1753 000000000000ffffffffffff 000000000000ffffffffffff dnl
1754 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1755 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1756
1757 ])
1758 sed '/^[[#&]]/d' < test-data > input.txt
1759 sed -n 's/^# //p; /^$/p' < test-data > expout
1760 sed -n 's/^& //p' < test-data > experr
1761 AT_CAPTURE_FILE([input.txt])
1762 AT_CAPTURE_FILE([expout])
1763 AT_CAPTURE_FILE([experr])
1764 AT_CHECK(
1765   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1766   [0], [expout], [experr])
1767 AT_CLEANUP
1768
1769 AT_SETUP([ovs-ofctl parse-nx-match loose])
1770 AT_KEYWORDS([nx-match])
1771 AT_DATA([nx-match.txt], [dnl
1772 NXM_OF_IN_PORT(0001), 01020304(1111/3333), NXM_OF_ETH_TYPE(0800)
1773 NXM_OF_IN_PORT(0001), ffff020800002320(11112222), NXM_OF_ETH_TYPE(0800)
1774 NXM_OF_IN_PORT(0001), ffff030800002320(1111/3333), NXM_OF_ETH_TYPE(0800)
1775 ])
1776
1777 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1778 nx_pull_match() returned error OFPBMC_BAD_FIELD
1779 nx_pull_match() returned error OFPBMC_BAD_FIELD
1780 nx_pull_match() returned error OFPBMC_BAD_FIELD
1781 ])
1782
1783 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1784 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1785 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1786 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1787 ])
1788 AT_CLEANUP
1789
1790 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.2)])
1791 AT_KEYWORDS([oxm])
1792 AT_DATA([oxm.txt], [dnl
1793 <any>
1794
1795 # in port
1796 OXM_OF_IN_PORT(00000000)
1797 OXM_OF_IN_PORT(fffffffe)
1798
1799 # metadata
1800 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1801 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1802 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1803 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1804 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1805
1806 # eth dst
1807 OXM_OF_ETH_DST(0002e30f80a4)
1808 OXM_OF_ETH_DST_W(010000000000/010000000000)
1809 OXM_OF_ETH_DST_W(000000000000/010000000000)
1810 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1811 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1812 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1813 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1814
1815 # eth src
1816 OXM_OF_ETH_SRC(020898456ddb)
1817
1818 # eth type
1819 OXM_OF_ETH_TYPE(0800)
1820 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1821
1822 # vlan
1823 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1824 OXM_OF_VLAN_VID(f009)           # Bad Value
1825 OXM_OF_VLAN_PCP(00)             # Bad Pre-Requisite
1826 OXM_OF_VLAN_VID(0000)           # Packets without 802.1Q header or with VID=0
1827 OXM_OF_VLAN_VID(1123)           # Packets with VID=123, any PCP
1828 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1829 OXM_OF_VLAN_VID(0123)           # Does not make sense (but supported anyway)
1830 OXM_OF_VLAN_VID_W(0123/0123)      # Does not make sense (but supported anyway)
1831 OXM_OF_VLAN_VID_W(1123/0123)      # Does not make sense (but supported anyway)
1832 OXM_OF_VLAN_VID_W(0123/1123)      # Does not make sense (but supported anyway)
1833 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01)  #Bad Pre-Requisite
1834 OXM_OF_VLAN_VID_W(1123/1fff)    # Packets with VID=123, any PCP.
1835 OXM_OF_VLAN_VID_W(1123/ffff)    # Packets with VID=123, any PCP.
1836 OXM_OF_VLAN_VID_W(0000/0000)    # Packets with or without 802.1Q header
1837 OXM_OF_VLAN_VID_W(1103/1f0f),   # Packets with # VID=123 (masked)
1838 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)  # Packets with VID=123 (masked), any PCP.
1839 OXM_OF_VLAN_VID_W(1000/1000)    # Packets with any VID, any PCP
1840 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)  # Packets with any VID, PCP=1.
1841
1842 # IP TOS
1843 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1844 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1845 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1846 OXM_OF_IP_DSCP(3f)
1847
1848 # IP ECN
1849 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1850 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1851 OXM_OF_IP_ECN(03)
1852
1853 # IP protocol
1854 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1855 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1856 OXM_OF_IP_PROTO(05)
1857
1858 # IP source
1859 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1860 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1861 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1862 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(00000000/00000000)
1863 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1864 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1865
1866 # IP destination
1867 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1868 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a80000/FFFF0000)
1869 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1870 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(00000000/00000000)
1871 OXM_OF_IPV4_DST(ac100014)
1872 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1873
1874 # TCP source port
1875 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1876 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1877 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1878 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(0000/0000)
1879 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1880
1881 # TCP destination port
1882 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1883 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1884 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1885 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(0000/0000)
1886 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1887
1888 # UDP source port
1889 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1890 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1891 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1892 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0000/0000)
1893 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1894
1895 # UDP destination port
1896 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1897 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1898 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1899 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(0000/0000)
1900 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1901
1902 # SCTP source port
1903 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1904 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1905 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1906 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0000/0000)
1907 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1908
1909 # SCTP destination port
1910 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1911 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1912 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1913 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(0000/0000)
1914 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1915
1916 # ICMP type
1917 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1918 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1919
1920 # ICMP code
1921 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1922 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1923 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1924 OXM_OF_ICMPV4_CODE(00)
1925
1926 # ARP opcode
1927 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1928 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1929 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1930 OXM_OF_ARP_OP(0001)
1931 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1932
1933 # ARP source protocol address
1934 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1935 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
1936 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1937 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(00000000/00000000)
1938 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1939 OXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
1940
1941 # ARP destination protocol address
1942 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1943 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
1944 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1945 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(00000000/00000000)
1946 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1947 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1948
1949 # ARP source hardware address
1950 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1951 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1952 OXM_OF_ARP_SHA(0002e30f80a4)
1953 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1954 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000000/000000000000)
1955 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1956
1957 # ARP destination hardware address
1958 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1959 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1960 OXM_OF_ARP_THA(0002e30f80a4)
1961 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1962 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000000/000000000000)
1963 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000004/00000000000f)
1964
1965 # IPv6 source
1966 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1967 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1968 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1969 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1970 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(00000000000000000000000000000000/00000000000000000000000000000000)
1971 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1972
1973 # IPv6 destination
1974 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1975 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1976 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1977 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1978 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
1979 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1980
1981 # IPv6 Flow Label
1982 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1983 OXM_OF_IPV6_FLABEL(0000000f)
1984 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1985 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1986 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1987 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1988 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1989 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1990 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/00000000)
1991
1992 # ND source hardware address
1993 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1994 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1995 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1996 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1997
1998 # ND destination hardware address
1999 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
2000 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
2001 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
2002 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
2003
2004 # Registers 0, 1, and 2.
2005 NXM_NX_REG0(acebdf56)
2006 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2007 NXM_NX_REG0(a0e0d050)
2008 NXM_NX_REG1(acebdf56)
2009 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2010 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2011 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2012 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2013
2014 # Extended registers 0, 1, and 2.
2015 # (For OpenFlow 1.2, OVS transforms these into its extension registers.)
2016 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2017 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2018 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2019 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2020 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2021 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2022 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2023 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2024
2025 # Invalid field number.
2026 01020304(1111/3333)
2027
2028 # Invalid field numbers (experimenter OXM).
2029 ffff020800002320(11112222)
2030 ffff030800002320(1111/3333)
2031 ])
2032 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow12 < oxm.txt],
2033   [0], [dnl
2034 <any>
2035
2036 # in port
2037 OXM_OF_IN_PORT(00000000)
2038 OXM_OF_IN_PORT(fffffffe)
2039
2040 # metadata
2041 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
2042 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
2043 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2044 OXM_OF_METADATA(1234567890abcdef)
2045 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2046
2047 # eth dst
2048 OXM_OF_ETH_DST(0002e30f80a4)
2049 OXM_OF_ETH_DST_W(010000000000/010000000000)
2050 OXM_OF_ETH_DST_W(000000000000/010000000000)
2051 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2052 OXM_OF_ETH_DST(0002e30f80a4)
2053 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2054 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
2055
2056 # eth src
2057 OXM_OF_ETH_SRC(020898456ddb)
2058
2059 # eth type
2060 OXM_OF_ETH_TYPE(0800)
2061 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
2062
2063 # vlan
2064 nx_pull_match() returned error OFPBMC_DUP_FIELD
2065 nx_pull_match() returned error OFPBMC_BAD_VALUE
2066 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2067 OXM_OF_VLAN_VID(0000)
2068 OXM_OF_VLAN_VID(1123)
2069 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
2070 OXM_OF_VLAN_VID(0123)
2071 OXM_OF_VLAN_VID_W(0123/0123)
2072 nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
2073 OXM_OF_VLAN_VID_W(0123/1123)
2074 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2075 OXM_OF_VLAN_VID(1123)
2076 OXM_OF_VLAN_VID(1123)
2077 <any>
2078 OXM_OF_VLAN_VID_W(1103/1f0f)
2079 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
2080 OXM_OF_VLAN_VID_W(1000/1000)
2081 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
2082
2083 # IP TOS
2084 nx_pull_match() returned error OFPBMC_BAD_VALUE
2085 nx_pull_match() returned error OFPBMC_BAD_VALUE
2086 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
2087 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2088
2089 # IP ECN
2090 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
2091 nx_pull_match() returned error OFPBMC_BAD_VALUE
2092 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2093
2094 # IP protocol
2095 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
2096 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
2097 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2098
2099 # IP source
2100 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
2101 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
2102 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
2103 OXM_OF_ETH_TYPE(0800)
2104 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2105 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2106
2107 # IP destination
2108 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
2109 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
2110 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
2111 OXM_OF_ETH_TYPE(0800)
2112 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2113 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2114
2115 # TCP source port
2116 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
2117 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
2118 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
2119 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
2120 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2121
2122 # TCP destination port
2123 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
2124 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
2125 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
2126 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
2127 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2128
2129 # UDP source port
2130 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
2131 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
2132 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
2133 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
2134 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2135
2136 # UDP destination port
2137 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
2138 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
2139 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
2140 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
2141 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2142
2143 # SCTP source port
2144 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
2145 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
2146 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
2147 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2148 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2149
2150 # SCTP destination port
2151 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
2152 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
2153 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
2154 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2155 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2156
2157 # ICMP type
2158 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
2159 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2160
2161 # ICMP code
2162 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
2163 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2164 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2165 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2166
2167 # ARP opcode
2168 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
2169 nx_pull_match() returned error OFPBMC_BAD_VALUE
2170 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2171 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2172 nx_pull_match() returned error OFPBMC_DUP_FIELD
2173
2174 # ARP source protocol address
2175 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
2176 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
2177 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
2178 OXM_OF_ETH_TYPE(0806)
2179 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2180 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2181
2182 # ARP destination protocol address
2183 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
2184 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
2185 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
2186 OXM_OF_ETH_TYPE(0806)
2187 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2188 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2189
2190 # ARP source hardware address
2191 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2192 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2193 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2194 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2195 OXM_OF_ETH_TYPE(0806)
2196 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
2197
2198 # ARP destination hardware address
2199 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2200 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2201 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2202 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2203 OXM_OF_ETH_TYPE(0806)
2204 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
2205
2206 # IPv6 source
2207 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
2208 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2209 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2210 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
2211 OXM_OF_ETH_TYPE(86dd)
2212 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2213
2214 # IPv6 destination
2215 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
2216 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2217 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
2218 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
2219 OXM_OF_ETH_TYPE(86dd)
2220 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2221
2222 # IPv6 Flow Label
2223 nx_pull_match() returned error OFPBMC_BAD_VALUE
2224 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2225 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2226 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
2227 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2228 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
2229 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2230 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2231 OXM_OF_ETH_TYPE(86dd)
2232
2233 # ND source hardware address
2234 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(87), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_SLL(0002e30f80a4)
2235 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2236 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2237 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2238
2239 # ND destination hardware address
2240 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(88), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_TLL(0002e30f80a4)
2241 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2242 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2243 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2244
2245 # Registers 0, 1, and 2.
2246 NXM_NX_REG0(acebdf56)
2247 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2248 NXM_NX_REG0(a0e0d050)
2249 NXM_NX_REG1(acebdf56)
2250 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2251 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2252 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2253 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2254
2255 # Extended registers 0, 1, and 2.
2256 # (For OpenFlow 1.2, OVS transforms these into its extension registers.)
2257 NXM_NX_REG0(acebdf56)
2258 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2259 NXM_NX_REG0(a0e0d050)
2260 NXM_NX_REG1(acebdf56)
2261 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2262 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2263 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2264 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2265
2266 # Invalid field number.
2267 nx_pull_match() returned error OFPBMC_BAD_FIELD
2268
2269 # Invalid field numbers (experimenter OXM).
2270 nx_pull_match() returned error OFPBMC_BAD_FIELD
2271 nx_pull_match() returned error OFPBMC_BAD_FIELD
2272 ], [stderr])
2273
2274 # Check that at least the first warning made it.  (It's rate-limited
2275 # so a variable number could show up, especially under valgrind etc.)
2276 AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
2277 nx_match|WARN|Rejecting NXM/OXM entry 0:32768:2:1:16 with 1-bits in value for bits wildcarded by the mask.
2278 ])
2279
2280 # Check that there wasn't any other stderr output.
2281 AT_CHECK([grep -v '1-bits in value' stderr], [1])
2282 AT_CLEANUP
2283
2284 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.3)])
2285 AT_KEYWORDS([oxm])
2286 AT_DATA([oxm.txt], [dnl
2287 # actset_output
2288 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2289 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2290 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2291 OXM_OF_ACTSET_OUTPUT(00000000)
2292 OXM_OF_ACTSET_OUTPUT(fffffffe)
2293 OXM_OF_ACTSET_OUTPUT(fffffff7)
2294 ])
2295 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow13 < oxm.txt],
2296   [0], [dnl
2297 # actset_output
2298 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2299 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2300 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2301 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2302 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2303 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2304 ], [])
2305 AT_CLEANUP
2306
2307 AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.5)])
2308 AT_KEYWORDS([oxm])
2309 AT_DATA([oxm.txt], [dnl
2310 # Extended registers 0 and 1.
2311 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2312 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2313 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2314 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2315 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2316 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2317 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2318 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2319
2320 # Registers 0, 1, and 2.
2321 # (OpenFlow 1.5 transforms these into the standard "xregs".)
2322 NXM_NX_REG0(acebdf56)
2323 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
2324 NXM_NX_REG0(a0e0d050)
2325 NXM_NX_REG1(acebdf56)
2326 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
2327 NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
2328 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
2329 NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
2330
2331 # actset_output
2332 ONFOXM_ET_ACTSET_OUTPUT(00000000)
2333 ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
2334 ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
2335 OXM_OF_ACTSET_OUTPUT(00000000)
2336 OXM_OF_ACTSET_OUTPUT(fffffffe)
2337 OXM_OF_ACTSET_OUTPUT(fffffff7)
2338 ])
2339 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow15 < oxm.txt],
2340   [0], [dnl
2341 # Extended registers 0 and 1.
2342 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2343 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2344 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2345 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2346 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2347 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2348 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2349 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2350
2351 # Registers 0, 1, and 2.
2352 # (OpenFlow 1.5 transforms these into the standard "xregs".)
2353 OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
2354 OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
2355 OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
2356 OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
2357 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
2358 OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
2359 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
2360 OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
2361
2362 # actset_output
2363 OXM_OF_ACTSET_OUTPUT(00000000)
2364 OXM_OF_ACTSET_OUTPUT(fffffffe)
2365 OXM_OF_ACTSET_OUTPUT(fffffff7)
2366 OXM_OF_ACTSET_OUTPUT(00000000)
2367 OXM_OF_ACTSET_OUTPUT(fffffffe)
2368 OXM_OF_ACTSET_OUTPUT(fffffff7)
2369 ], [])
2370 AT_CLEANUP
2371
2372 AT_SETUP([ovs-ofctl parse-oxm loose])
2373 AT_KEYWORDS([oxm])
2374 AT_DATA([oxm.txt], [dnl
2375 OXM_OF_IN_PORT(00000001), 01020304(1111/3333), OXM_OF_ETH_TYPE(0800)
2376 OXM_OF_IN_PORT(00000001), ffff020800002320(11112222), OXM_OF_ETH_TYPE(0800)
2377 OXM_OF_IN_PORT(00000001), ffff030800002320(1111/3333), OXM_OF_ETH_TYPE(0800)
2378 ])
2379
2380 AT_CHECK([ovs-ofctl --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2381 nx_pull_match() returned error OFPBMC_BAD_FIELD
2382 nx_pull_match() returned error OFPBMC_BAD_FIELD
2383 nx_pull_match() returned error OFPBMC_BAD_FIELD
2384 ])
2385
2386 AT_CHECK([ovs-ofctl parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2387 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2388 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2389 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2390 ])
2391 AT_CLEANUP
2392
2393 AT_SETUP([experimenter OXM encoding])
2394 AT_DATA([oxm.txt], [dnl
2395 NXM_NX_DP_HASH(01234567)
2396 NXOXM_ET_DP_HASH(01234567)
2397
2398 NXM_NX_DP_HASH_W(01234567/0fffffff)
2399 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2400 ])
2401
2402 # To allow for testing experimenter OXM, which doesn't really have many
2403 # examples in the wild, we've defined a variant of NXM_NX_DP_HASH that uses
2404 # the experimenter OXM mechanism, called NXOXM_ET_DP_HASH.  We've defined
2405 # it as if it were introduced with OpenFlow 1.5, which gives us the
2406 # opportunity to see that both forms are accepted in all OpenFlow versions
2407 # but the experimenter form is used for encoding in OF1.5+.
2408 #
2409 # First verify that both forms are accepted and NXOXM_ET_DP_HASH is encoded
2410 # in OF1.5.
2411 AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow15 < oxm.txt], [0], [dnl
2412 NXOXM_ET_DP_HASH(01234567)
2413 00000000  00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
2414 NXOXM_ET_DP_HASH(01234567)
2415 00000000  00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
2416
2417 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2418 00000000  00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
2419 00000010  0f ff ff ff 00 00 00 00-
2420 NXOXM_ET_DP_HASH_W(01234567/0fffffff)
2421 00000000  00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
2422 00000010  0f ff ff ff 00 00 00 00-
2423 ])
2424
2425 # Then verify that both forms are accepted and NXM_NX_DP_HASH is encoded
2426 # in OF1.2.
2427 AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2428 NXM_NX_DP_HASH(01234567)
2429 00000000  00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
2430 NXM_NX_DP_HASH(01234567)
2431 00000000  00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
2432
2433 NXM_NX_DP_HASH_W(01234567/0fffffff)
2434 00000000  00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2435 NXM_NX_DP_HASH_W(01234567/0fffffff)
2436 00000000  00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2437 ])
2438 AT_CLEANUP
2439
2440 AT_SETUP([check TCP flags expression in OXM and NXM])
2441 # NXM/OXM input for matching on TCP flags.
2442 tcp_flags='OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff)'
2443
2444 # Check that marshaling into NXM gives all NXM headers.
2445 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-nxm], [0],
2446   [NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2447 ])
2448
2449 # Check that marshaling in OXM for OF1.2 gives OXM headers except for
2450 # TCP flags, which didn't have an OXM definition.
2451 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow12], [0],
2452     [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2453 ])
2454
2455 # Check that marshaling in OXM for OF1.3 and OF1.4 gives OXM headers,
2456 # including the ONF extension for TCP flags introduced in OF1.3.
2457 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow13], [0],
2458     [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
2459 ])
2460 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow14], [0],
2461     [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
2462 ])
2463
2464 # OpenFlow 1.5 added an OXM header for TCP flags:
2465 AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow15], [0],
2466   [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff)
2467 ])
2468 AT_CLEANUP
2469
2470 dnl Check all of the patterns mentioned in the "VLAN Matching" section
2471 dnl in the DESIGN file at top level.
2472 AT_SETUP([ovs-ofctl check-vlan])
2473 AT_KEYWORDS([VLAN])
2474
2475 dnl [1]
2476 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2477  -> 0000/0000
2478 NXM: <any> -> 0000/0000
2479 OXM: <any> -> 0000/0000,--
2480 OF1.0: 0000/1,00/1 -> 0000/0000
2481 OF1.1: 0000/1,00/1 -> 0000/0000
2482 ])
2483
2484 dnl [2]
2485 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2486 vlan_tci=0x0000 -> 0000/ffff
2487 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
2488 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
2489 OF1.0: ffff/0,00/0 -> 0000/ffff
2490 OF1.1: ffff/0,00/1 -> 0000/ffff
2491 ])
2492
2493 dnl [3]
2494 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2495 dl_vlan=2748 -> 1abc/1fff
2496 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
2497 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
2498 OF1.0: 0abc/0,00/1 -> 1abc/1fff
2499 OF1.1: 0abc/0,00/1 -> 1abc/1fff
2500 ])
2501
2502 dnl [4]
2503 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2504 dl_vlan_pcp=5 -> b000/f000
2505 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
2506 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
2507 OF1.0: 0000/1,05/0 -> b000/f000
2508 OF1.1: fffe/0,05/0 -> b000/f000
2509 ])
2510
2511 dnl [5]
2512 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2513 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2514 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
2515 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
2516 OF1.0: 0abc/0,05/0 -> babc/ffff
2517 OF1.1: 0abc/0,05/0 -> babc/ffff
2518 ])
2519
2520 dnl [6]
2521 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2522 vlan_tci=0x0000/0x0fff -> 0000/0fff
2523 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
2524 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2525 OF1.0: 0000/0,00/1 -> 1000/1fff
2526 OF1.1: 0000/0,00/1 -> 1000/1fff
2527 ])
2528
2529 dnl [7]
2530 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2531 vlan_tci=0x0000/0xf000 -> 0000/f000
2532 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
2533 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
2534 OF1.0: ffff/0,00/0 -> 0000/ffff
2535 OF1.1: ffff/0,00/1 -> 0000/ffff
2536 ])
2537
2538 dnl [8]
2539 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2540 vlan_tci=0x0000/0xefff -> 0000/efff
2541 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
2542 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2543 OF1.0: 0000/0,00/0 -> 1000/ffff
2544 OF1.1: 0000/0,00/0 -> 1000/ffff
2545 ])
2546
2547 dnl [9]
2548 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2549 vlan_tci=0x1001/0x1001 -> 1001/1001
2550 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
2551 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
2552 OF1.0: 0001/0,00/1 -> 1001/1fff
2553 OF1.1: 0001/0,00/1 -> 1001/1fff
2554 ])
2555
2556 dnl [10]
2557 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2558 vlan_tci=0x3000/0x3000 -> 3000/3000
2559 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
2560 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
2561 OF1.0: 0000/1,01/0 -> 3000/f000
2562 OF1.1: fffe/0,01/0 -> 3000/f000
2563 ])
2564 AT_CHECK
2565 AT_CLEANUP
2566
2567 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2568 dnl such as tunnels and metadata.
2569 AT_SETUP([ovs-ofctl -F option and NXM features])
2570 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
2571   [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2572 ])
2573 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
2574   [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
2575 ])
2576 AT_CLEANUP
2577
2578 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2579 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2580 dnl additionally show up as the top 32 bits of the cookie.)  This checks
2581 dnl for regression against bug #4566.
2582 AT_SETUP([ovs-ofctl -F option with flow_mods])
2583 OVS_VSWITCHD_START
2584 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
2585 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
2586 NXST_FLOW reply:
2587  tun_id=0x12345678 actions=drop
2588 ])
2589 OVS_VSWITCHD_STOP
2590 AT_CLEANUP
2591
2592 dnl Check that "-F openflow10" is really honored on dump-flows.
2593 dnl (If it isn't, then dump-flows will show the register match.)
2594 AT_SETUP([ovs-ofctl dump-flows honors -F option])
2595 OVS_VSWITCHD_START
2596 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
2597 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
2598 OFPST_FLOW reply:
2599  actions=drop
2600 ])
2601 OVS_VSWITCHD_STOP
2602 AT_CLEANUP
2603
2604 dnl Check that "-F openflow10" fails on dump-flows if the requested match
2605 dnl can't be represented in OpenFlow 1.0.
2606 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
2607 OVS_VSWITCHD_START
2608 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
2609   [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2610 ])
2611 OVS_VSWITCHD_STOP
2612 AT_CLEANUP
2613
2614 dnl Check that add-flow reports non-normalized flows (feature #5029).
2615 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
2616 OVS_VSWITCHD_START
2617 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2618   [0], [], [dnl
2619 ofp_util|INFO|normalization changed ofp_match, details:
2620 ofp_util|INFO| pre: nw_src=1.2.3.4
2621 ofp_util|INFO|post: @&t@
2622 ])
2623 OVS_VSWITCHD_STOP
2624 AT_CLEANUP
2625
2626 dnl Check that --sort and --rsort works with dump-flows
2627 dnl Default field is 'priority'. Flow entries are displayed based
2628 dnl on field to sort.
2629 AT_SETUP([ovs-ofctl dump-flows with sorting])
2630 OVS_VSWITCHD_START
2631 AT_KEYWORDS([sort])
2632 AT_DATA([allflows.txt], [[
2633 priority=4,in_port=23213 actions=output:42
2634 priority=5,in_port=1029 actions=output:43
2635 priority=7,in_port=1029 actions=output:43
2636 priority=3,in_port=1028 actions=output:44
2637 priority=1,in_port=1026 actions=output:45
2638 priority=6,in_port=1027 actions=output:64
2639 priority=2,in_port=1025 actions=output:47
2640 priority=8,tcp,tp_src=5 actions=drop
2641 priority=9,tcp,tp_src=6 actions=drop
2642 ]])
2643
2644 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2645 ], [0], [ignore])
2646 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2647  priority=1,in_port=1026 actions=output:45
2648  priority=2,in_port=1025 actions=output:47
2649  priority=3,in_port=1028 actions=output:44
2650  priority=4,in_port=23213 actions=output:42
2651  priority=5,in_port=1029 actions=output:43
2652  priority=6,in_port=1027 actions=output:64
2653  priority=7,in_port=1029 actions=output:43
2654  priority=8,tcp,tp_src=5 actions=drop
2655  priority=9,tcp,tp_src=6 actions=drop
2656 ])
2657 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2658  priority=9,tcp,tp_src=6 actions=drop
2659  priority=8,tcp,tp_src=5 actions=drop
2660  priority=7,in_port=1029 actions=output:43
2661  priority=6,in_port=1027 actions=output:64
2662  priority=5,in_port=1029 actions=output:43
2663  priority=4,in_port=23213 actions=output:42
2664  priority=3,in_port=1028 actions=output:44
2665  priority=2,in_port=1025 actions=output:47
2666  priority=1,in_port=1026 actions=output:45
2667 ])
2668 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2669  priority=2,in_port=1025 actions=output:47
2670  priority=1,in_port=1026 actions=output:45
2671  priority=6,in_port=1027 actions=output:64
2672  priority=3,in_port=1028 actions=output:44
2673  priority=7,in_port=1029 actions=output:43
2674  priority=5,in_port=1029 actions=output:43
2675  priority=4,in_port=23213 actions=output:42
2676  priority=9,tcp,tp_src=6 actions=drop
2677  priority=8,tcp,tp_src=5 actions=drop
2678 ])
2679 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2680  priority=4,in_port=23213 actions=output:42
2681  priority=7,in_port=1029 actions=output:43
2682  priority=5,in_port=1029 actions=output:43
2683  priority=3,in_port=1028 actions=output:44
2684  priority=6,in_port=1027 actions=output:64
2685  priority=1,in_port=1026 actions=output:45
2686  priority=2,in_port=1025 actions=output:47
2687  priority=9,tcp,tp_src=6 actions=drop
2688  priority=8,tcp,tp_src=5 actions=drop
2689 ])
2690 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2691  priority=8,tcp,tp_src=5 actions=drop
2692  priority=9,tcp,tp_src=6 actions=drop
2693  priority=7,in_port=1029 actions=output:43
2694  priority=6,in_port=1027 actions=output:64
2695  priority=5,in_port=1029 actions=output:43
2696  priority=4,in_port=23213 actions=output:42
2697  priority=3,in_port=1028 actions=output:44
2698  priority=2,in_port=1025 actions=output:47
2699  priority=1,in_port=1026 actions=output:45
2700 ])
2701 AT_CHECK(
2702   [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2703   [ priority=2,in_port=1025 actions=output:47
2704  priority=1,in_port=1026 actions=output:45
2705  priority=6,in_port=1027 actions=output:64
2706  priority=3,in_port=1028 actions=output:44
2707  priority=7,in_port=1029 actions=output:43
2708  priority=5,in_port=1029 actions=output:43
2709  priority=4,in_port=23213 actions=output:42
2710  priority=8,tcp,tp_src=5 actions=drop
2711  priority=9,tcp,tp_src=6 actions=drop
2712 ])
2713 OVS_VSWITCHD_STOP
2714 AT_CLEANUP
2715
2716 AT_SETUP([ovs-ofctl diff-flows])
2717 OVS_VSWITCHD_START
2718
2719 # Add tons of flows to br0.
2720 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2721 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2722
2723 # Dump them and compare against what we expect by hand, then with diff-flows.
2724 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2725 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2726   [0], [expout])
2727 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2728
2729 # Remove even-numbered flows, compare again.
2730 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2731 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2732 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2733 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2734 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2735 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2736
2737 OVS_VSWITCHD_STOP
2738 AT_CLEANUP
2739
2740 dnl ofpacts that differ bytewise don't necessarily differ when
2741 dnl converted to another representation, such as OpenFlow 1.0
2742 dnl or to a string.  "resubmit(,1)" is an example of an action
2743 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2744 dnl values even though this doesn't affect the string format.
2745 dnl
2746 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2747 dnl false ofpacts differences.
2748 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2749 OVS_VSWITCHD_START
2750 AT_DATA([flows.txt], [actions=resubmit(,1)
2751 ])
2752 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2753 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2754 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2755 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2756 -dl_vlan=9 idle_timeout=60 actions=output:1
2757 ])
2758 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2759 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2760 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2761 ])
2762 OVS_VSWITCHD_STOP
2763 AT_CLEANUP
2764
2765 AT_SETUP([ovs-ofctl -F and -O interaction])
2766 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2767   [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10) supports any of the enabled flow formats (OXM).  (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2768 ])
2769 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2770   [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow11) supports any of the enabled flow formats (OXM).  (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2771 ])
2772 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2773   [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10, OpenFlow11) supports any of the enabled flow formats (OXM).  (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2774 ])
2775 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2776  [ovs-ofctl: missing command name; use --help for help
2777 ])
2778 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2779   [ovs-ofctl: missing command name; use --help for help
2780 ])
2781 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2782   [ovs-ofctl: missing command name; use --help for help
2783 ])
2784 AT_CLEANUP
2785
2786 AT_SETUP([ovs-ofctl ofp-parse])
2787 # Test the echo request/reply messages (0 payload).
2788 AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2789 AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2790 OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2791 OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2792 ])
2793
2794 # Test the hello (xid:1 3-byte payload).
2795 AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2796 AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2797 OFPT_HELLO (xid=0x1):
2798  version bitmap: 0x01
2799  unknown data in hello:
2800 00000000  01 00 00 0b 00 00 00 01-41 42 43                |........ABC     |
2801 ])
2802 AT_CLEANUP
2803
2804 AT_SETUP([tcp flags - filtering])
2805 OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 \
2806                     -- add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
2807 AT_DATA([flows.txt], [dnl
2808         in_port=1,tcp,tp_dst=80,tcp_flags=+syn-rst-ack-fin,action=2  # Allow outbound web traffic bare-SYN
2809         in_port=1,tcp,tp_dst=80,tcp_flags=+ack,action=2  # Allow outbound web traffic with ACK bit
2810         in_port=1,tcp,tp_dst=80,tcp_flags=+rst,action=2  # Allow outbound web traffic with RST bit
2811         in_port=2,tcp,tp_src=80,tcp_flags=+ack,action=1  # Allow inbound web traffic with ACK bit
2812         in_port=2,tcp,tp_src=80,tcp_flags=+rst,action=1  # Allow inbound web traffic with RST bit
2813         priority=0,in_port=1,action=drop  # Default drop outbound
2814         priority=0,in_port=2,action=drop  # Default drop inbound
2815 ])
2816
2817 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2818
2819 AT_CHECK([ovs-ofctl add-flow br0 "tcp,tcp_flags=+ack-ack,action="], [1], [],
2820   [ovs-ofctl: ack: Each TCP flag can be specified only once
2821 ])
2822
2823 AT_CHECK([ovs-appctl dpif/show | tail -n +4], [0], [dnl
2824                 p1 1/1: (dummy)
2825                 p2 2/2: (dummy)
2826 ])
2827
2828 dnl Outbound web traffic with bare-SYN
2829 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x002)'], [0], [stdout])
2830 AT_CHECK([tail -1 stdout], [0],
2831   [Datapath actions: 2
2832 ])
2833
2834 dnl Outbopund web traffic with ACK bit
2835 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x110)'], [0], [stdout])
2836 AT_CHECK([tail -1 stdout], [0],
2837   [Datapath actions: 2
2838 ])
2839
2840 dnl Outbound web traffic with RST bit
2841 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x104)'], [0], [stdout])
2842 AT_CHECK([tail -1 stdout], [0],
2843   [Datapath actions: 2
2844 ])
2845
2846 dnl Inbound web traffic with ACK bit
2847 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0x010)'], [0], [stdout])
2848 AT_CHECK([tail -1 stdout], [0],
2849   [Datapath actions: 1
2850 ])
2851
2852 dnl Inbound web traffic with RST bit
2853 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0x014)'], [0], [stdout])
2854 AT_CHECK([tail -1 stdout], [0],
2855   [Datapath actions: 1
2856 ])
2857
2858 dnl Inbound web traffic with SYN bit without ACK or RST bits
2859 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0xfeb)'], [0], [stdout])
2860 AT_CHECK([tail -1 stdout], [0],
2861   [Datapath actions: drop
2862 ])
2863
2864 OVS_VSWITCHD_STOP
2865 AT_CLEANUP
2866
2867 dnl Check importance parameter added in OF1.4.
2868 dnl It validates whether importance set via add-flow via OpenFlow1.4+ gets
2869 dnl set or not by validating it against the dump-flows output via OpenFlow1.4+
2870 dnl If add-flow or dump-flows is used with later version of OpenFlow prior to 1.4+
2871 dnl then the importance will be considered zero whether provided as an argument.
2872
2873 AT_SETUP([ovs-ofctl rule with importance])
2874 OVS_VSWITCHD_START
2875 dnl Flow with importance parameter added via OF1.4+ and later version
2876 AT_CHECK([ovs-ofctl -O OpenFlow14 add-flow br0 priority=21,importance=21,actions=normal])
2877 AT_CHECK([ovs-ofctl add-flow br0 priority=22,importance=22,actions=normal])
2878
2879 dnl Importance parameter will only be visible of flows that are added via OF1.4+ if dumped via OF1.4+
2880 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
2881  importance=21, priority=21 actions=NORMAL
2882  reset_counts priority=22 actions=NORMAL
2883 ])
2884
2885 dnl Importance parameter will not be visible if flow is dumped with previous version prior to OF1.4+ whether added via OF1.4+
2886 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
2887  priority=21 actions=NORMAL
2888  priority=22 actions=NORMAL
2889 ])
2890
2891 OVS_VSWITCHD_STOP
2892 AT_CLEANUP
2893
2894
2895 dnl Importance parameter added in OF1.4.
2896 dnl This validates whether flows with importance
2897 dnl parameter are getting replaced with "replace-flows" or
2898 dnl not by validating dump-flows output after replace with the expected output.
2899
2900 AT_SETUP([ovs-ofctl replace-flows with importance])
2901 OVS_VSWITCHD_START
2902
2903 dnl Add flows to br0 with importance via OF1.4+. For more details refer "ovs-ofctl rule with importance" test case.
2904 for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
2905 AT_CHECK([ovs-ofctl -O OpenFlow14 add-flows br0 add-flows.txt])
2906
2907 dnl Replace the flows in the bridge.
2908 for i in 1 3 5 7; do echo " importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt
2909 AT_CHECK([ovs-ofctl -O OpenFlow14 replace-flows br0 replace-flows.txt])
2910
2911 dnl Dump them and compare the dump flows output against the expected output.
2912 cat replace-flows.txt > expout
2913 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
2914   [0], [expout])
2915
2916 OVS_VSWITCHD_STOP
2917 AT_CLEANUP
2918
2919 AT_SETUP([ovs-ofctl replace-flows with --bundle])
2920 OVS_VSWITCHD_START
2921
2922 AT_CHECK([ovs-appctl vlog/set vconn:dbg])
2923
2924 dnl Add flows to br0 with importance via OF1.4+, using an OF1.4+ bundle. For more details refer "ovs-ofctl rule with importance" test case.
2925 for i in 1 2 3 4 5 6 7 8; do echo "table=$i,dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
2926 AT_CHECK([ovs-ofctl --bundle add-flows br0 add-flows.txt])
2927
2928 dnl Replace some flows in the bridge.
2929 for i in 1 3 5 7; do echo " table=$i, importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt
2930 AT_CHECK([ovs-ofctl --bundle replace-flows br0 replace-flows.txt])
2931
2932 dnl Dump them and compare the dump flows output against the expected output.
2933 cat replace-flows.txt > expout
2934 AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
2935   [0], [expout])
2936
2937 dnl Check logs for OpenFlow trace
2938 # Prevent race.
2939 OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): OFPST_FLOW reply" | wc -l` -ge 2])
2940 # AT_CHECK([sed -n "s/^.*\(|vconn|DBG|.*xid=.*:\).*$/\1/p" ovs-vswitchd.log], [0], [dnl
2941 AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
2942 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
2943  version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
2944 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
2945  version bitmap: 0x05
2946 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
2947 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
2948  bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
2949 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
2950  bundle_id=0 type=OPEN_REPLY flags=0
2951 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2952  bundle_id=0 flags=atomic ordered
2953 OFPT_FLOW_MOD (OF1.4): ADD table:1 dl_vlan=1 importance:1 actions=drop
2954 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2955  bundle_id=0 flags=atomic ordered
2956 OFPT_FLOW_MOD (OF1.4): ADD table:2 dl_vlan=2 importance:2 actions=drop
2957 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2958  bundle_id=0 flags=atomic ordered
2959 OFPT_FLOW_MOD (OF1.4): ADD table:3 dl_vlan=3 importance:3 actions=drop
2960 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2961  bundle_id=0 flags=atomic ordered
2962 OFPT_FLOW_MOD (OF1.4): ADD table:4 dl_vlan=4 importance:4 actions=drop
2963 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2964  bundle_id=0 flags=atomic ordered
2965 OFPT_FLOW_MOD (OF1.4): ADD table:5 dl_vlan=5 importance:5 actions=drop
2966 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2967  bundle_id=0 flags=atomic ordered
2968 OFPT_FLOW_MOD (OF1.4): ADD table:6 dl_vlan=6 importance:6 actions=drop
2969 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2970  bundle_id=0 flags=atomic ordered
2971 OFPT_FLOW_MOD (OF1.4): ADD table:7 dl_vlan=7 importance:7 actions=drop
2972 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2973  bundle_id=0 flags=atomic ordered
2974 OFPT_FLOW_MOD (OF1.4): ADD table:8 dl_vlan=8 importance:8 actions=drop
2975 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
2976  bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
2977 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
2978  bundle_id=0 type=COMMIT_REPLY flags=0
2979 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
2980  version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
2981 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
2982  version bitmap: 0x05
2983 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
2984 vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
2985 vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
2986  table=1, importance=1, dl_vlan=1 actions=drop
2987  table=2, importance=2, dl_vlan=2 actions=drop
2988  table=3, importance=3, dl_vlan=3 actions=drop
2989  table=4, importance=4, dl_vlan=4 actions=drop
2990  table=5, importance=5, dl_vlan=5 actions=drop
2991  table=6, importance=6, dl_vlan=6 actions=drop
2992  table=7, importance=7, dl_vlan=7 actions=drop
2993  table=8, importance=8, dl_vlan=8 actions=drop
2994 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
2995  bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
2996 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
2997  bundle_id=0 type=OPEN_REPLY flags=0
2998 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
2999  bundle_id=0 flags=atomic ordered
3000 OFPT_FLOW_MOD (OF1.4): ADD table:1 dl_vlan=1 importance:11 actions=drop
3001 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3002  bundle_id=0 flags=atomic ordered
3003 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:2 dl_vlan=2 actions=drop
3004 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3005  bundle_id=0 flags=atomic ordered
3006 OFPT_FLOW_MOD (OF1.4): ADD table:3 dl_vlan=3 importance:13 actions=drop
3007 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3008  bundle_id=0 flags=atomic ordered
3009 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:4 dl_vlan=4 actions=drop
3010 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3011  bundle_id=0 flags=atomic ordered
3012 OFPT_FLOW_MOD (OF1.4): ADD table:5 dl_vlan=5 importance:15 actions=drop
3013 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3014  bundle_id=0 flags=atomic ordered
3015 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:6 dl_vlan=6 actions=drop
3016 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3017  bundle_id=0 flags=atomic ordered
3018 OFPT_FLOW_MOD (OF1.4): ADD table:7 dl_vlan=7 importance:17 actions=drop
3019 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
3020  bundle_id=0 flags=atomic ordered
3021 OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:8 dl_vlan=8 actions=drop
3022 vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
3023  bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
3024 vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
3025  bundle_id=0 type=COMMIT_REPLY flags=0
3026 vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
3027  version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
3028 vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
3029  version bitmap: 0x05
3030 vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
3031 vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
3032 vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
3033  table=1, importance=11, dl_vlan=1 actions=drop
3034  table=3, importance=13, dl_vlan=3 actions=drop
3035  table=5, importance=15, dl_vlan=5 actions=drop
3036  table=7, importance=17, dl_vlan=7 actions=drop
3037 ])
3038
3039 OVS_VSWITCHD_STOP
3040 AT_CLEANUP