Add OF11 set IPv4 ECN action.
[sliver-openvswitch.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_src=1.2.3.4                             NXM,OXM' \
8     'tun_dst=1.2.3.4                             NXM,OXM' \
9     'tun_flags=0                                 none' \
10     'tun_tos=0                                   none' \
11     'tun_ttl=0                                   none' \
12     'metadata=0                                  NXM,OXM,OpenFlow11' \
13     'in_port=1                                   any' \
14     'skb_priority=0                              none' \
15     'pkt_mark=1                                  NXM,OXM' \
16     'reg0=0                                      NXM,OXM' \
17     'reg1=1                                      NXM,OXM' \
18     'reg2=2                                      NXM,OXM' \
19     'reg3=3                                      NXM,OXM' \
20     'reg4=4                                      NXM,OXM' \
21     'reg5=5                                      NXM,OXM' \
22     'reg6=6                                      NXM,OXM' \
23     'reg7=7                                      NXM,OXM' \
24     'dl_src=00:11:22:33:44:55                    any' \
25     'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff  NXM,OXM,OpenFlow11' \
26     'dl_dst=00:11:22:33:44:55                    any' \
27     'dl_dst=00:11:22:33:44:55/00:ff:ff:ff:ff:ff  NXM,OXM,OpenFlow11' \
28     'dl_type=0x1234                              any' \
29     'dl_type=0x0800                              any' \
30     'dl_type=0x0806                              any' \
31     'dl_type=0x86dd                              any' \
32     'vlan_tci=0                                  any' \
33     'vlan_tci=0x1009                             any' \
34     'dl_vlan=9                                   any' \
35     'vlan_vid=11                                 any' \
36     'dl_vlan_pcp=6                               any' \
37     'vlan_pcp=5                                  any' \
38     'mpls,mpls_label=5                           NXM,OXM,OpenFlow11' \
39     'mpls,mpls_tc=1                              NXM,OXM,OpenFlow11' \
40     'mpls,mpls_bos=0                             NXM,OXM' \
41     'ip,ip_src=1.2.3.4                           any' \
42     'ip,ip_src=192.168.0.0/24                    any' \
43     'ip,ip_src=192.0.168.0/255.0.255.0           NXM,OXM,OpenFlow11' \
44     'ip,ip_dst=1.2.3.4                           any' \
45     'ip,ip_dst=192.168.0.0/24                    any' \
46     'ip,ip_dst=192.0.168.0/255.0.255.0           NXM,OXM,OpenFlow11' \
47     'ipv6,ipv6_src=::1                           NXM,OXM' \
48     'ipv6,ipv6_dst=::1                           NXM,OXM' \
49     'ipv6,ipv6_label=5                           NXM,OXM' \
50     'ip,nw_proto=1                               any' \
51     'ipv6,nw_proto=1                             NXM,OXM' \
52     'ip,nw_tos=0xf0                              any' \
53     'ipv6,nw_tos=0xf0                            NXM,OXM' \
54     'ip,nw_tos_shifted=0x3c                      any' \
55     'ipv6,nw_tos_shifted=0x3c                    NXM,OXM' \
56     'ip,nw_ecn=1                                 NXM,OXM' \
57     'ipv6,nw_ecn=1                               NXM,OXM' \
58     'ip,nw_ttl=5                                 NXM,OXM' \
59     'ipv6,nw_ttl=5                               NXM,OXM' \
60     'ip,ip_frag=no                               NXM,OXM' \
61     'ipv6,ip_frag=no                             NXM,OXM' \
62     'arp,arp_op=0                                any' \
63     'arp,arp_spa=1.2.3.4                         any' \
64     'arp,arp_tpa=1.2.3.4                         any' \
65     'arp,arp_sha=00:11:22:33:44:55               NXM,OXM' \
66     'arp,arp_tha=00:11:22:33:44:55               NXM,OXM' \
67     'tcp,tcp_src=80                              any' \
68     'tcp,tcp_src=0x1000/0x1000                   NXM,OXM' \
69     'tcp6,tcp_src=80                             NXM,OXM' \
70     'tcp6,tcp_src=0x1000/0x1000                  NXM,OXM' \
71     'tcp,tcp_dst=80                              any' \
72     'tcp,tcp_dst=0x1000/0x1000                   NXM,OXM' \
73     'tcp6,tcp_dst=80                             NXM,OXM' \
74     'tcp6,tcp_dst=0x1000/0x1000                  NXM,OXM' \
75     'udp,udp_src=80                              any' \
76     'udp,udp_src=0x1000/0x1000                   NXM,OXM' \
77     'udp6,udp_src=80                             NXM,OXM' \
78     'udp6,udp_src=0x1000/0x1000                  NXM,OXM' \
79     'udp,udp_dst=80                              any' \
80     'udp,udp_dst=0x1000/0x1000                   NXM,OXM' \
81     'udp6,udp_dst=80                             NXM,OXM' \
82     'udp6,udp_dst=0x1000/0x1000                  NXM,OXM' \
83     'icmp,icmp_type=1                            any' \
84     'icmp,icmp_type=1                            any' \
85     'icmp6,icmpv6_type=1                         NXM,OXM' \
86     'icmp6,icmpv6_code=2                         NXM,OXM'
87 do
88     set $test_case
89     echo
90     echo "### test case: '$1' should have usable protocols '$2'"
91     if test "$2" = none; then
92       AT_CHECK([ovs-ofctl parse-flow "$1,actions=drop"], [1],
93                [usable protocols: none
94 ],
95                [ovs-ofctl: no usable protocol
96 ])
97     else
98       AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$1,actions=drop" | sed 1q], [0],
99                         [usable protocols: $2
100 ])
101     fi
102 done
103 AT_CLEANUP
104
105 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
106 AT_DATA([flows.txt], [[
107 # comment
108 tcp,tp_src=123,out_port=5,actions=flood
109 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
110 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
111 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
112 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
113 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
114 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
115 ip,actions=set_field:10.4.3.77->ip_src
116 sctp actions=drop
117 sctp actions=drop
118 in_port=0 actions=resubmit:0
119 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
120 ]])
121
122 AT_CHECK([ovs-ofctl parse-flows flows.txt
123 ], [0], [stdout])
124 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
125 [[usable protocols: any
126 chosen protocol: OpenFlow10-table_id
127 OFPT_FLOW_MOD: ADD tcp,tp_src=123 out_port:5 actions=FLOOD
128 OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
129 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
130 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
131 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
132 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
133 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
134 OFPT_FLOW_MOD: ADD ip actions=load:0xa04034d->NXM_OF_IP_SRC[]
135 OFPT_FLOW_MOD: ADD sctp actions=drop
136 OFPT_FLOW_MOD: ADD sctp actions=drop
137 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
138 OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
139 ]])
140 AT_CLEANUP
141
142 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.1)])
143 AT_DATA([flows.txt], [[
144 # comment
145 tcp,tp_src=123,out_port=5,actions=flood
146 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
147 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
148 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
149 udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
150 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
151 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
152 ip,actions=set_field:10.4.3.77->ip_src
153 sctp actions=drop
154 sctp actions=drop
155 in_port=0 actions=resubmit:0
156 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
157 ]])
158
159 AT_CHECK([ovs-ofctl --protocols OpenFlow11 parse-flows flows.txt
160 ], [0], [stdout])
161 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
162 [[usable protocols: any
163 chosen protocol: OpenFlow11
164 OFPT_FLOW_MOD (OF1.1): ADD table:255 tcp,tp_src=123 out_port:5 actions=FLOOD
165 OFPT_FLOW_MOD (OF1.1): ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
166 OFPT_FLOW_MOD (OF1.1): ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
167 OFPT_FLOW_MOD (OF1.1): ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
168 OFPT_FLOW_MOD (OF1.1): ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
169 OFPT_FLOW_MOD (OF1.1): ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
170 OFPT_FLOW_MOD (OF1.1): ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
171 OFPT_FLOW_MOD (OF1.1): ADD table:255 ip actions=load:0xa04034d->NXM_OF_IP_SRC[]
172 OFPT_FLOW_MOD (OF1.1): ADD table:255 sctp actions=drop
173 OFPT_FLOW_MOD (OF1.1): ADD table:255 sctp actions=drop
174 OFPT_FLOW_MOD (OF1.1): ADD table:255 in_port=0 actions=resubmit:0
175 OFPT_FLOW_MOD (OF1.1): ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
176 ]])
177 AT_CLEANUP
178
179 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
180 AT_DATA([flows.txt], [[
181 # comment
182 tcp,tp_src=123,actions=flood
183 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
184 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
185 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
186 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
187 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
188 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
189 ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
190 sctp actions=set_field:3334->sctp_src
191 sctp actions=set_field:4445->sctp_dst
192 in_port=0 actions=resubmit:0
193 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
194 ]])
195
196 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
197 ], [0], [stdout])
198 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
199 [[usable protocols: NXM,OXM
200 chosen protocol: OXM-OpenFlow12
201 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,tp_src=123 actions=FLOOD
202 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
203 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
204 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
205 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
206 OFPT_FLOW_MOD (OF1.2): ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
207 OFPT_FLOW_MOD (OF1.2): ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
208 OFPT_FLOW_MOD (OF1.2): ADD table:255 ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
209 OFPT_FLOW_MOD (OF1.2): ADD table:255 sctp actions=set_field:3334->sctp_src
210 OFPT_FLOW_MOD (OF1.2): ADD table:255 sctp actions=set_field:4445->sctp_dst
211 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=0 actions=resubmit:0
212 OFPT_FLOW_MOD (OF1.2): ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
213 ]])
214 AT_CLEANUP
215
216 AT_SETUP([ovs-ofctl parse-flows (With Tunnel-Parameters)])
217 AT_DATA([flows.txt], [[
218 tun_id=0x1234000056780000/0xffff0000ffff0000,tun_src=1.1.1.1,tun_dst=2.2.2.2,tun_tos=0x3,tun_ttl=20,tun_flags=key|csum actions=drop
219 ]])
220
221 AT_CHECK([ovs-ofctl parse-flows flows.txt
222 ], [1], [usable protocols: none
223 ], [stderr])
224
225 AT_CLEANUP
226
227
228 AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
229 AT_DATA([flows.txt], [[
230 skb_priority=0x12341234,tcp,tp_src=123,actions=flood
231 ]])
232
233 AT_CHECK([ovs-ofctl parse-flows flows.txt
234 ], [1], [usable protocols: none
235 ], [stderr])
236
237 AT_CLEANUP
238
239
240 AT_SETUP([ovs-ofctl parse-flows (NXM)])
241 AT_DATA([flows.txt], [[
242 # comment
243 tcp,tp_src=123,actions=flood
244 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
245 pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
246 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
247 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
248 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
249 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
250 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
251 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
252 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
253 actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, NXM_NX_REG0[0..12])
254 table=1,actions=drop
255 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
256 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
257 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
258 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
259 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
260 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
261 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
262 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
263 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
264 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
265 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
266 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
267 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
268 check_overlap,actions=output:1,exit,output:2
269 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
270 actions=controller(max_len=123,reason=invalid_ttl,id=555)
271 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
272 ]])
273
274 AT_CHECK([ovs-ofctl parse-flows flows.txt
275 ], [0], [stdout])
276 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
277 [[usable protocols: OXM,NXM+table_id
278 chosen protocol: NXM+table_id
279 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
280 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
281 NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
282 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
283 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
284 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
285 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
286 NXT_FLOW_MOD: ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
287 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
288 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
289 NXT_FLOW_MOD: ADD table:255 actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multipath(symmetric_l4,1024,iter_hash,5000,5050,NXM_NX_REG0[0..12])
290 NXT_FLOW_MOD: ADD table:1 actions=drop
291 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
292 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
293 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
294 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
295 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
296 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
297 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
298 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
299 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
300 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
301 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
302 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
303 NXT_FLOW_MOD: ADD table:255 send_flow_rem actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
304 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
305 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
306 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
307 NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
308 ]])
309 AT_CLEANUP
310
311 AT_SETUP([ovs-ofctl -F nxm parse-flows])
312 AT_DATA([flows.txt], [
313 # comment
314 tcp,tp_src=123,actions=flood
315 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
316 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
317 ipv6,ipv6_label=0x12345 actions=2
318 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
319 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
320 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
321 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop 
322 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop 
323 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
324 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
325 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
326 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
327 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
328 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
329 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
330 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
331 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
332 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
333 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
334 tun_id=0x1234,cookie=0x5678,actions=flood
335 actions=drop
336 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
337 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
338 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
339 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
340 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
341 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
342 ])
343 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
344 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
345 usable protocols: NXM,OXM
346 chosen protocol: NXM-table_id
347 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
348 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
349 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
350 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
351 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
352 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
353 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
354 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
355 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
356 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
357 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
358 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
359 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
360 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
361 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
362 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
363 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
364 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
365 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
366 NXT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
367 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
368 NXT_FLOW_MOD: ADD actions=drop
369 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
370 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
371 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
372 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
373 NXT_FLOW_MOD: ADD actions=drop
374 NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
375 ])
376 AT_CLEANUP
377
378 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
379 AT_DATA([flows.txt], [[
380 # comment
381 tcp,tp_src=123,actions=flood
382 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
383 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
384 ipv6,ipv6_label=0x12345 actions=2
385 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
386 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
387 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
388 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
389 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
390 sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
391 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
392 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
393 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
394 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
395 sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
396 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
397 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
398 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
399 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
400 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
401 tun_id=0x1234,cookie=0x5678,actions=flood
402 actions=drop
403 reg0=123,actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:55->NXM_NX_REG2[0..31],move:NXM_NX_REG0[0..31]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
404 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
405 actions=push:NXM_NX_REG0[0..31],pop:NXM_NX_REG0[]
406 vlan_tci=0x1123/0x1fff,actions=drop
407 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
408 ]])
409 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
410 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
411 [[usable protocols: NXM,OXM
412 chosen protocol: NXM-table_id
413 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
414 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
415 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
416 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
417 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
418 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
419 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
420 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=drop
421 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=drop
422 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000005), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=drop
423 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(0003), NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(86) actions=drop
424 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_VLAN_TCI_W(f000/f000), NXM_OF_IP_PROTO(11) idle:5 actions=strip_vlan,output:0
425 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=set_queue:37,output:1
426 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=pop_queue,output:1
427 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=pop_queue,output:1
428 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571) actions=drop
429 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_SLL(000ae4256bb0) actions=drop
430 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571), NXM_NX_ND_TLL(000ae4256bb1) actions=drop
431 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
432 NXT_FLOW_MOD: ADD <any> actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
433 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
434 NXT_FLOW_MOD: ADD <any> actions=drop
435 NXT_FLOW_MOD: ADD NXM_NX_REG0(0000007b) actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:0x37->NXM_NX_REG2[],move:NXM_NX_REG0[]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
436 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
437 NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
438 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
439 NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
440 ]])
441 AT_CLEANUP
442
443 AT_SETUP([ovs-ofctl parse-nx-match])
444 AT_KEYWORDS([nx-match])
445 AT_DATA([nx-match.txt], [dnl
446 <any>
447
448 # in port
449 NXM_OF_IN_PORT(0000)
450 NXM_OF_IN_PORT(fffe)
451
452 # eth dst
453 NXM_OF_ETH_DST(0002e30f80a4)
454 NXM_OF_ETH_DST_W(010000000000/010000000000)
455 NXM_OF_ETH_DST_W(000000000000/010000000000)
456 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
457 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
458 NXM_OF_ETH_DST_W(60175619848f/000000000000)
459 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
460 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
461
462 # eth src
463 NXM_OF_ETH_SRC(020898456ddb)
464 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
465 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
466 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
467
468 # eth type
469 NXM_OF_ETH_TYPE(0800)
470 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
471
472 # vlan tci
473 NXM_OF_VLAN_TCI(f009)
474 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
475 NXM_OF_VLAN_TCI(0000)           # Packets without 802.1Q header.
476 NXM_OF_VLAN_TCI(3123)           # Packets with VID=123, PCP=1.
477 NXM_OF_VLAN_TCI(0123)           # Does not make sense (but supported anyway)
478 NXM_OF_VLAN_TCI_W(1123/1fff)    # Packets with VID=123, any PCP.
479 NXM_OF_VLAN_TCI_W(1123/ffff)    # Packets with VID=123, PCP=0
480 NXM_OF_VLAN_TCI_W(1123/0000)    # Packets with or without 802.1Q header
481 NXM_OF_VLAN_TCI_W(f000/f000)    # Packets with any VID, PCP=7.
482 NXM_OF_VLAN_TCI_W(0000/e000)    # No 802.1Q or with VID=0
483
484 # IP TOS
485 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
486 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
487 NXM_OF_IP_TOS(f0)
488
489 # IP ECN
490 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
491 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
492 NXM_NX_IP_ECN(03)
493
494 # IP protocol
495 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
496 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
497 NXM_OF_IP_PROTO(05)
498
499 # IP TTL
500 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
501 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
502 NXM_NX_IP_TTL(80)
503
504 # IP source
505 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
506 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
507 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
508 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
509 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
510 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
511 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
512
513 # IP destination
514 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
515 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
516 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
517 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
518 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
519 NXM_OF_IP_DST(ac100014)
520 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
521
522 # TCP source port
523 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
524 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
525 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
526 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
527 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
528
529 # TCP destination port
530 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
531 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
532 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
533 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
534 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
535
536 # UDP source port
537 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
538 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
539 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
540 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
541 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
542
543 # UDP destination port
544 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
545 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
546 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
547 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
548 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
549
550 # ICMP type
551 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
552 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
553
554 # ICMP code
555 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
556 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
557 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
558 NXM_OF_ICMP_CODE(00)
559
560 # ARP opcode
561 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
562 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
563 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
564 NXM_OF_ARP_OP(0001)
565 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
566
567 # ARP source protocol address
568 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
569 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
570 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
571 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
572 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
573 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
574 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
575
576 # ARP destination protocol address
577 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
578 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
579 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
580 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
581 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
582 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
583 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
584
585 # ARP source hardware address
586 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
587 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
588 NXM_NX_ARP_SHA(0002e30f80a4)
589
590 # ARP destination hardware address
591 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
592 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
593 NXM_NX_ARP_THA(0002e30f80a4)
594
595 # RARP opcode
596 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
597 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
598 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
599 NXM_OF_ARP_OP(0003)
600 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
601
602 # RARP source protocol address
603 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
604 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
605 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
606 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
607 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/00000000)
608 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
609 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
610
611 # RARP destination protocol address
612 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
613 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
614 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
615 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
616 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/00000000)
617 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
618 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
619
620 # RARP source hardware address
621 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
622 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
623 NXM_NX_ARP_SHA(0002e30f80a4)
624
625 # RARP destination hardware address
626 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
627 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
628 NXM_NX_ARP_THA(0002e30f80a4)
629
630 # IPv6 source
631 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
632 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
633 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
634 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
635 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
636 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
637 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
638
639 # IPv6 destination
640 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
641 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
642 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
643 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
644 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
645 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
646
647 # IPv6 Flow Label
648 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
649 NXM_NX_IPV6_LABEL(0000000f)
650 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
651
652 # ND target address
653 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
654 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
655 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
656 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
657 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
658 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
659
660 # ND source hardware address
661 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
662 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
663 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
664 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
665
666 # ND destination hardware address
667 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
668 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
669 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
670 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
671
672 # IPv4 fragments.
673 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
674 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
675 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
676 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
677 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
678 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
679 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
680 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
681 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
682 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
683 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
684 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
685 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
686
687 # IPv6 fragments.
688 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
689 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
690 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
691 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
692 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
693 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
694 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
695 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
696 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
697 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
698 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
699 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
700 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
701
702 # Flow cookie.
703 NXM_NX_COOKIE(00000000abcdef01)
704 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
705 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
706 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
707
708 # Tunnel ID.
709 NXM_NX_TUN_ID(00000000abcdef01)
710 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
711 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
712 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
713
714 # Register 0.
715 NXM_NX_REG0(acebdf56)
716 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
717 NXM_NX_REG0_W(a0e0d050/ffffffff)
718 NXM_NX_REG0_W(a0e0d050/00000000)
719
720 # Invalid field number.
721 01020304(1111/2222)
722
723 # Unimplemented registers.
724 #
725 # This test assumes that at least two registers, but fewer than 16,
726 # registers are implemented.
727 00010004(12345678)
728 00010108(12345678/12345678)
729 00011e04(12345678)
730 00011f08(12345678/12345678)
731 ])
732 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
733 <any>
734
735 # in port
736 NXM_OF_IN_PORT(0000)
737 NXM_OF_IN_PORT(fffe)
738
739 # eth dst
740 NXM_OF_ETH_DST(0002e30f80a4)
741 NXM_OF_ETH_DST_W(010000000000/010000000000)
742 NXM_OF_ETH_DST_W(000000000000/010000000000)
743 NXM_OF_ETH_DST_W(010000000000/010000000000)
744 NXM_OF_ETH_DST(0002e30f80a4)
745 <any>
746 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
747 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
748
749 # eth src
750 NXM_OF_ETH_SRC(020898456ddb)
751 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
752 NXM_OF_ETH_SRC(020898456ddb)
753 <any>
754
755 # eth type
756 NXM_OF_ETH_TYPE(0800)
757 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800) 
758
759 # vlan tci
760 NXM_OF_VLAN_TCI(f009)
761 nx_pull_match() returned error OFPBMC_DUP_FIELD
762 NXM_OF_VLAN_TCI(0000)
763 NXM_OF_VLAN_TCI(3123)
764 NXM_OF_VLAN_TCI(0123)
765 NXM_OF_VLAN_TCI_W(1123/1fff)
766 NXM_OF_VLAN_TCI(1123)
767 <any>
768 NXM_OF_VLAN_TCI_W(f000/f000)
769 NXM_OF_VLAN_TCI_W(0000/e000)
770
771 # IP TOS
772 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
773 nx_pull_match() returned error OFPBMC_BAD_VALUE
774 nx_pull_match() returned error OFPBMC_BAD_PREREQ
775
776 # IP ECN
777 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
778 nx_pull_match() returned error OFPBMC_BAD_VALUE
779 nx_pull_match() returned error OFPBMC_BAD_PREREQ
780
781 # IP protocol
782 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
783 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
784 nx_pull_match() returned error OFPBMC_BAD_PREREQ
785
786 # IP TTL
787 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
788 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
789 nx_pull_match() returned error OFPBMC_BAD_PREREQ
790
791 # IP source
792 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
793 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
794 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
795 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
796 NXM_OF_ETH_TYPE(0800)
797 nx_pull_match() returned error OFPBMC_BAD_PREREQ
798 nx_pull_match() returned error OFPBMC_BAD_PREREQ
799
800 # IP destination
801 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
802 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
803 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
804 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
805 NXM_OF_ETH_TYPE(0800)
806 nx_pull_match() returned error OFPBMC_BAD_PREREQ
807 nx_pull_match() returned error OFPBMC_BAD_PREREQ
808
809 # TCP source port
810 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
811 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
812 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
813 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
814 nx_pull_match() returned error OFPBMC_BAD_PREREQ
815
816 # TCP destination port
817 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
818 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
819 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
820 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
821 nx_pull_match() returned error OFPBMC_BAD_PREREQ
822
823 # UDP source port
824 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
825 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
826 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
827 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
828 nx_pull_match() returned error OFPBMC_BAD_PREREQ
829
830 # UDP destination port
831 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
832 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
833 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
834 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
835 nx_pull_match() returned error OFPBMC_BAD_PREREQ
836
837 # ICMP type
838 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
839 nx_pull_match() returned error OFPBMC_BAD_PREREQ
840
841 # ICMP code
842 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
843 nx_pull_match() returned error OFPBMC_BAD_PREREQ
844 nx_pull_match() returned error OFPBMC_BAD_PREREQ
845 nx_pull_match() returned error OFPBMC_BAD_PREREQ
846
847 # ARP opcode
848 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
849 nx_pull_match() returned error OFPBMC_BAD_VALUE
850 nx_pull_match() returned error OFPBMC_BAD_PREREQ
851 nx_pull_match() returned error OFPBMC_BAD_PREREQ
852 nx_pull_match() returned error OFPBMC_DUP_FIELD
853
854 # ARP source protocol address
855 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
856 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
857 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
858 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
859 NXM_OF_ETH_TYPE(0806)
860 nx_pull_match() returned error OFPBMC_BAD_PREREQ
861 nx_pull_match() returned error OFPBMC_BAD_PREREQ
862
863 # ARP destination protocol address
864 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
865 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
866 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
867 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
868 NXM_OF_ETH_TYPE(0806)
869 nx_pull_match() returned error OFPBMC_BAD_PREREQ
870 nx_pull_match() returned error OFPBMC_BAD_PREREQ
871
872 # ARP source hardware address
873 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
874 nx_pull_match() returned error OFPBMC_BAD_PREREQ
875 nx_pull_match() returned error OFPBMC_BAD_PREREQ
876
877 # ARP destination hardware address
878 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
879 nx_pull_match() returned error OFPBMC_BAD_PREREQ
880 nx_pull_match() returned error OFPBMC_BAD_PREREQ
881
882 # RARP opcode
883 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
884 nx_pull_match() returned error OFPBMC_BAD_VALUE
885 nx_pull_match() returned error OFPBMC_BAD_PREREQ
886 nx_pull_match() returned error OFPBMC_BAD_PREREQ
887 nx_pull_match() returned error OFPBMC_DUP_FIELD
888
889 # RARP source protocol address
890 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
891 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
892 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
893 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
894 NXM_OF_ETH_TYPE(8035)
895 nx_pull_match() returned error OFPBMC_BAD_PREREQ
896 nx_pull_match() returned error OFPBMC_BAD_PREREQ
897
898 # RARP destination protocol address
899 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
900 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
901 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(40201234/77777777)
902 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
903 NXM_OF_ETH_TYPE(8035)
904 nx_pull_match() returned error OFPBMC_BAD_PREREQ
905 nx_pull_match() returned error OFPBMC_BAD_PREREQ
906
907 # RARP source hardware address
908 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
909 nx_pull_match() returned error OFPBMC_BAD_PREREQ
910 nx_pull_match() returned error OFPBMC_BAD_PREREQ
911
912 # RARP destination hardware address
913 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
914 nx_pull_match() returned error OFPBMC_BAD_PREREQ
915 nx_pull_match() returned error OFPBMC_BAD_PREREQ
916
917 # IPv6 source
918 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
919 nx_pull_match() returned error OFPBMC_BAD_PREREQ
920 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
921 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
922 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
923 NXM_OF_ETH_TYPE(86dd)
924 nx_pull_match() returned error OFPBMC_BAD_PREREQ
925
926 # IPv6 destination
927 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
928 nx_pull_match() returned error OFPBMC_BAD_PREREQ
929 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
930 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
931 NXM_OF_ETH_TYPE(86dd)
932 nx_pull_match() returned error OFPBMC_BAD_PREREQ
933
934 # IPv6 Flow Label
935 nx_pull_match() returned error OFPBMC_BAD_VALUE
936 nx_pull_match() returned error OFPBMC_BAD_PREREQ
937 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
938
939 # ND target address
940 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
941 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
942 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
943 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
944 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
945 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
946
947 # ND source hardware address
948 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
949 nx_pull_match() returned error OFPBMC_BAD_PREREQ
950 nx_pull_match() returned error OFPBMC_BAD_PREREQ
951 nx_pull_match() returned error OFPBMC_BAD_PREREQ
952
953 # ND destination hardware address
954 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
955 nx_pull_match() returned error OFPBMC_BAD_PREREQ
956 nx_pull_match() returned error OFPBMC_BAD_PREREQ
957 nx_pull_match() returned error OFPBMC_BAD_PREREQ
958
959 # IPv4 fragments.
960 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
961 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
962 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
963 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
964 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
965 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
966 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
967 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
968 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
969 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
970 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
971 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
972 nx_pull_match() returned error OFPBMC_BAD_VALUE
973
974 # IPv6 fragments.
975 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
976 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
977 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
978 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
979 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
980 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
981 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
982 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
983 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
984 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
985 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
986 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
987 nx_pull_match() returned error OFPBMC_BAD_VALUE
988
989 # Flow cookie.
990 NXM_NX_COOKIE(00000000abcdef01)
991 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
992 NXM_NX_COOKIE(84200000abcdef01)
993 <any>
994
995 # Tunnel ID.
996 NXM_NX_TUN_ID(00000000abcdef01)
997 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
998 NXM_NX_TUN_ID(84200000abcdef01)
999 <any>
1000
1001 # Register 0.
1002 NXM_NX_REG0(acebdf56)
1003 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
1004 NXM_NX_REG0(a0e0d050)
1005 <any>
1006
1007 # Invalid field number.
1008 nx_pull_match() returned error OFPBMC_BAD_FIELD
1009
1010 # Unimplemented registers.
1011 #
1012 # This test assumes that at least two registers, but fewer than 16,
1013 # registers are implemented.
1014 NXM_NX_REG0(12345678)
1015 NXM_NX_REG0_W(12345678/12345678)
1016 nx_pull_match() returned error OFPBMC_BAD_FIELD
1017 nx_pull_match() returned error OFPBMC_BAD_FIELD
1018 ], [stderr])
1019
1020 # Check that at least the first warning made it.  (It's rate-limited
1021 # so a variable number could show up, especially under valgrind etc.)
1022 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
1023 nx_match|WARN|NXM/OXM entry NXM_OF_ETH_DST_W(ffffffffffff/010000000000) has 1-bits in value for bits wildcarded by the mask.  (Future versions of OVS may report this as an OpenFlow error.)
1024 ])
1025
1026 # Check that there wasn't any other stderr output.
1027 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
1028 AT_CLEANUP
1029
1030 AT_SETUP([ovs-ofctl parse-ofp10-match])
1031 AT_KEYWORDS([OF1.0])
1032 AT_DATA([test-data], [dnl
1033 # in_port=LOCAL
1034 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1035 xxxxxxxx xxxxxxxx xxxx xxxx
1036
1037 # dl_src=00:01:02:03:04:05
1038 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1039 xxxxxxxx xxxxxxxx xxxx xxxx
1040
1041 # dl_dst=10:20:30:40:50:60
1042 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1043 xxxxxxxx xxxxxxxx xxxx xxxx
1044
1045 # dl_vlan=291
1046 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1047 xxxxxxxx xxxxxxxx xxxx xxxx
1048
1049 # dl_vlan_pcp=5
1050 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1051 xxxxxxxx xxxxxxxx xxxx xxxx
1052
1053 # dl_vlan=291,dl_vlan_pcp=4
1054 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1055 xxxxxxxx xxxxxxxx xxxx xxxx
1056
1057 # vlan_tci=0x0000
1058 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1059 xxxxxxxx xxxxxxxx xxxx xxxx
1060
1061 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
1062 dnl OVS ignores it and drops it on output.
1063 # vlan_tci=0x0000
1064 #  1: 28 -> 38
1065 # 20: 05 -> 00
1066 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1067 xxxxxxxx xxxxxxxx xxxx xxxx
1068
1069 dnl Invalid VID and PCP discards out-of-range bits:
1070 # dl_vlan=256,dl_vlan_pcp=7
1071 # 18: f1 -> 01
1072 # 20: ff -> 07
1073 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1074 xxxxxxxx xxxxxxxx xxxx xxxx
1075
1076 # dl_type=0x1234
1077 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1078 xxxxxxxx xxxxxxxx xxxx xxxx
1079
1080 # ip,nw_proto=5
1081 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1082 xxxxxxxx xxxxxxxx xxxx xxxx
1083
1084 dnl Ignore nw_proto if not IP or ARP:
1085 # dl_type=0x1234,nw_proto=5
1086 # normal:  3: cf -> ef
1087 # normal: 25: 05 -> 00
1088 & ofp_util|INFO|normalization changed ofp_match, details:
1089 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1090 & ofp_util|INFO|post: dl_type=0x1234
1091 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1092 xxxxxxxx xxxxxxxx xxxx xxxx
1093
1094 # ip,nw_tos=252
1095 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1096 xxxxxxxx xxxxxxxx xxxx xxxx
1097
1098 dnl Ignore nw_tos if not IP:
1099 # arp,nw_tos=4
1100 # 24: 05 -> 04
1101 # normal:  1: 18 -> 38
1102 # normal: 24: 04 -> 00
1103 & ofp_util|INFO|normalization changed ofp_match, details:
1104 & ofp_util|INFO| pre: arp,nw_tos=4
1105 & ofp_util|INFO|post: arp
1106 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1107 xxxxxxxx xxxxxxxx xxxx xxxx
1108
1109 dnl Low 2 bits of invalid TOS are forced to 0:
1110 # ip,nw_tos=48
1111 # 24: 31 -> 30
1112 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1113 xxxxxxxx xxxxxxxx xxxx xxxx
1114
1115 # arp,arp_op=2
1116 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1117 xxxxxxxx xxxxxxxx xxxx xxxx
1118
1119 # ip,nw_src=192.168.128.85
1120 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1121 c0a88055 xxxxxxxx xxxx xxxx
1122
1123 # ip,nw_src=192.168.128.0/24
1124 # 31: 55 -> 00
1125 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1126 c0a88055 xxxxxxxx xxxx xxxx
1127
1128 # ip,nw_dst=192.168.128.85
1129 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1130 xxxxxxxx c0a88055 xxxx xxxx
1131
1132 # ip,nw_dst=192.168.128.0/24
1133 # 35: 55 -> 00
1134 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1135 xxxxxxxx c0a88055 xxxx xxxx
1136
1137 # arp,arp_spa=192.168.128.85
1138 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1139 c0a88055 xxxxxxxx xxxx xxxx
1140
1141 # arp,arp_spa=192.168.128.0/24
1142 # 31: 55 -> 00
1143 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1144 c0a88055 xxxxxxxx xxxx xxxx
1145
1146 # arp,arp_tpa=192.168.128.85
1147 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1148 xxxxxxxx c0a88055 xxxx xxxx
1149
1150 # arp,arp_tpa=192.168.128.0/24
1151 # 35: 55 -> 00
1152 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1153 xxxxxxxx c0a88055 xxxx xxxx
1154
1155 dnl Ignore nw_src if not IP or ARP:
1156 # dl_type=0x1234,nw_src=192.168.128.0/24
1157 # 31: 55 -> 00
1158 # normal:  2: 08 -> 20
1159 # normal: 28: c0 -> 00
1160 # normal: 29: a8 -> 00
1161 # normal: 30: 80 -> 00
1162 & ofp_util|INFO|normalization changed ofp_match, details:
1163 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1164 & ofp_util|INFO|post: dl_type=0x1234
1165 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1166 c0a88055 xxxxxxxx xxxx xxxx
1167
1168 dnl Ignore nw_dst if not IP or ARP:
1169 # dl_type=0x1234,nw_dst=192.168.128.0/24
1170 # 35: 55 -> 00
1171 # normal:  1: 32 -> 38
1172 # normal: 32: c0 -> 00
1173 # normal: 33: a8 -> 00
1174 # normal: 34: 80 -> 00
1175 & ofp_util|INFO|normalization changed ofp_match, details:
1176 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1177 & ofp_util|INFO|post: dl_type=0x1234
1178 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1179 xxxxxxxx c0a88055 xxxx xxxx
1180
1181 # tcp,tp_src=443
1182 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1183 xxxxxxxx xxxxxxxx 01bb xxxx
1184
1185 # tcp,tp_dst=443
1186 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1187 xxxxxxxx xxxxxxxx xxxx 01bb
1188
1189 # udp,tp_src=443
1190 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1191 xxxxxxxx xxxxxxxx 01bb xxxx
1192
1193 # udp,tp_dst=443
1194 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1195 xxxxxxxx xxxxxxxx xxxx 01bb
1196
1197 # sctp,tp_src=443
1198 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1199 xxxxxxxx xxxxxxxx 01bb xxxx
1200
1201 # sctp,tp_dst=443
1202 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1203 xxxxxxxx xxxxxxxx xxxx 01bb
1204
1205 # icmp,icmp_type=5
1206 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1207 xxxxxxxx xxxxxxxx 0005 xxxx
1208
1209 # icmp,icmp_code=8
1210 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1211 xxxxxxxx xxxxxxxx xxxx 0008
1212
1213 dnl Ignore tp_src if not TCP/UDP/SCTP:
1214 # ip,nw_proto=21,tp_src=443
1215 # normal:  3: 8f -> cf
1216 # normal: 36: 01 -> 00
1217 # normal: 37: bb -> 00
1218 & ofp_util|INFO|normalization changed ofp_match, details:
1219 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1220 & ofp_util|INFO|post: ip,nw_proto=21
1221 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1222 xxxxxxxx xxxxxxxx 01bb xxxx
1223
1224 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1225 # ip,nw_proto=21,tp_dst=443
1226 # normal:  3: 4f -> cf
1227 # normal: 38: 01 -> 00
1228 # normal: 39: bb -> 00
1229 dnl The normalization details are suppressed here due to rate-limiting.
1230 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1231 xxxxxxxx xxxxxxxx xxxx 01bb
1232
1233 ])
1234 sed '/^[[#&]]/d' < test-data > input.txt
1235 sed -n 's/^# //p; /^$/p' < test-data > expout
1236 sed -n 's/^& //p' < test-data > experr
1237 AT_CAPTURE_FILE([input.txt])
1238 AT_CAPTURE_FILE([expout])
1239 AT_CAPTURE_FILE([experr])
1240 AT_CHECK(
1241   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1242   [0], [expout], [experr])
1243 AT_CLEANUP
1244
1245 AT_SETUP([ovs-ofctl parse-ofp11-match])
1246 AT_KEYWORDS([OF1.1])
1247 AT_DATA([test-data], [dnl
1248 # in_port=LOCAL
1249 0000 0058 fffffffe 000003fe dnl
1250 000000000000ffffffffffff 000000000000ffffffffffff dnl
1251 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1252 00000000 00 000000 0000000000000000ffffffffffffffff
1253
1254 # bad ofp11_match: OFPBMC_BAD_VALUE
1255 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1256 0000 0058 12345678 000003fe dnl
1257 000000000000ffffffffffff 000000000000ffffffffffff dnl
1258 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1259 00000000 00 000000 0000000000000000ffffffffffffffff
1260
1261 # dl_src=00:01:02:03:04:05
1262 0000 0058 00000000 000003ff dnl
1263 000102030405000000000000 000000000000ffffffffffff dnl
1264 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1265 00000000 00 000000 0000000000000000ffffffffffffffff
1266
1267 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1268 0000 0058 00000000 000003ff dnl
1269 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1270 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1271 00000000 00 000000 0000000000000000ffffffffffffffff
1272
1273 # dl_dst=00:01:02:03:04:05
1274 0000 0058 00000000 000003ff dnl
1275 000000000000ffffffffffff 000102030405000000000000 dnl
1276 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1277 00000000 00 000000 0000000000000000ffffffffffffffff
1278
1279 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1280 0000 0058 00000000 000003ff dnl
1281 000000000000ffffffffffff 010000000000feffffffffff dnl
1282 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1283 00000000 00 000000 0000000000000000ffffffffffffffff
1284
1285 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1286 0000 0058 00000000 000003ff dnl
1287 000000000000ffffffffffff 000102030405010000000000 dnl
1288 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1289 00000000 00 000000 0000000000000000ffffffffffffffff
1290
1291 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1292 0000 0058 00000000 000003ff dnl
1293 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1294 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1295 00000000 00 000000 0000000000000000ffffffffffffffff
1296
1297 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1298 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1299 # in_port=1
1300 # 11: fa -> fe
1301 # 38: 03 -> 00
1302 0000 0058 00000001 000003fa dnl
1303 000000000000ffffffffffff 000000000000ffffffffffff dnl
1304 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1305 00000000 00 000000 0000000000000000ffffffffffffffff
1306
1307 # dl_vlan=291
1308 0000 0058 00000000 000003fd dnl
1309 000000000000ffffffffffff 000000000000ffffffffffff dnl
1310 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1311 00000000 00 000000 0000000000000000ffffffffffffffff
1312
1313 dnl OFPVID_NONE:
1314 # vlan_tci=0x0000
1315 0000 0058 00000000 000003fd dnl
1316 000000000000ffffffffffff 000000000000ffffffffffff dnl
1317 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1318 00000000 00 000000 0000000000000000ffffffffffffffff
1319
1320 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1321 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1322 # vlan_tci=0x0000
1323 # 11: f9 -> fd
1324 # 38: 05 -> 00
1325 0000 0058 00000000 000003f9 dnl
1326 000000000000ffffffffffff 000000000000ffffffffffff dnl
1327 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1328 00000000 00 000000 0000000000000000ffffffffffffffff
1329
1330 # vlan_tci=0x1000/0x1000
1331 0000 0058 00000000 000003fd dnl
1332 000000000000ffffffffffff 000000000000ffffffffffff dnl
1333 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1334 00000000 00 000000 0000000000000000ffffffffffffffff
1335
1336 dnl Try invalid VID:
1337 # bad ofp11_match: OFPBMC_BAD_VALUE
1338 0000 0058 00000000 000003fd dnl
1339 000000000000ffffffffffff 000000000000ffffffffffff dnl
1340 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1341 00000000 00 000000 0000000000000000ffffffffffffffff
1342
1343 # dl_vlan_pcp=4
1344 0000 0058 00000000 000003f9 dnl
1345 000000000000ffffffffffff 000000000000ffffffffffff dnl
1346 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1347 00000000 00 000000 0000000000000000ffffffffffffffff
1348
1349 # dl_vlan=10,dl_vlan_pcp=6
1350 0000 0058 00000000 000003f9 dnl
1351 000000000000ffffffffffff 000000000000ffffffffffff dnl
1352 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1353 00000000 00 000000 0000000000000000ffffffffffffffff
1354
1355 # dl_type=0x1234
1356 0000 0058 00000000 000003f7 dnl
1357 000000000000ffffffffffff 000000000000ffffffffffff dnl
1358 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1359 00000000 00 000000 0000000000000000ffffffffffffffff
1360
1361 # ip,nw_tos=252
1362 0000 0058 00000000 000003e7 dnl
1363 000000000000ffffffffffff 000000000000ffffffffffff dnl
1364 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1365 00000000 00 000000 0000000000000000ffffffffffffffff
1366
1367 dnl Try invalid TOS:
1368 # bad ofp11_match: OFPBMC_BAD_VALUE
1369 0000 0058 00000000 000003e7 dnl
1370 000000000000ffffffffffff 000000000000ffffffffffff dnl
1371 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1372 00000000 00 000000 0000000000000000ffffffffffffffff
1373
1374 # ip,nw_proto=5
1375 0000 0058 00000000 000003d7 dnl
1376 000000000000ffffffffffff 000000000000ffffffffffff dnl
1377 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1378 00000000 00 000000 0000000000000000ffffffffffffffff
1379
1380 # arp,arp_op=2
1381 0000 0058 00000000 000003d7 dnl
1382 000000000000ffffffffffff 000000000000ffffffffffff dnl
1383 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1384 00000000 00 000000 0000000000000000ffffffffffffffff
1385
1386 # ip,nw_src=192.168.128.0/24
1387 0000 0058 00000000 000003f7 dnl
1388 000000000000ffffffffffff 000000000000ffffffffffff dnl
1389 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1390 00000000 00 000000 0000000000000000ffffffffffffffff
1391
1392 # ip,nw_src=128.160.128.0/165.165.165.165
1393 # 44: c0 -> 80
1394 # 45: a8 -> a0
1395 0000 0058 00000000 000003f7 dnl
1396 000000000000ffffffffffff 000000000000ffffffffffff dnl
1397 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1398 00000000 00 000000 0000000000000000ffffffffffffffff
1399
1400 # ip,nw_dst=192.168.128.0/24
1401 0000 0058 00000000 000003f7 dnl
1402 000000000000ffffffffffff 000000000000ffffffffffff dnl
1403 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1404 00000000 00 000000 0000000000000000ffffffffffffffff
1405
1406 # ip,nw_dst=128.160.128.0/165.165.165.165
1407 # 52: c0 -> 80
1408 # 53: a8 -> a0
1409 0000 0058 00000000 000003f7 dnl
1410 000000000000ffffffffffff 000000000000ffffffffffff dnl
1411 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1412 00000000 00 000000 0000000000000000ffffffffffffffff
1413
1414 # arp,arp_spa=192.168.128.0/24
1415 0000 0058 00000000 000003f7 dnl
1416 000000000000ffffffffffff 000000000000ffffffffffff dnl
1417 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1418 00000000 00 000000 0000000000000000ffffffffffffffff
1419
1420 # arp,arp_tpa=192.168.128.0/24
1421 0000 0058 00000000 000003f7 dnl
1422 000000000000ffffffffffff 000000000000ffffffffffff dnl
1423 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1424 00000000 00 000000 0000000000000000ffffffffffffffff
1425
1426 # tcp,tp_src=443
1427 0000 0058 00000000 00000397 dnl
1428 000000000000ffffffffffff 000000000000ffffffffffff dnl
1429 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1430 00000000 00 000000 0000000000000000ffffffffffffffff
1431
1432 # tcp,tp_dst=443
1433 0000 0058 00000000 00000357 dnl
1434 000000000000ffffffffffff 000000000000ffffffffffff dnl
1435 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1436 00000000 00 000000 0000000000000000ffffffffffffffff
1437
1438 # udp,tp_src=443
1439 0000 0058 00000000 00000397 dnl
1440 000000000000ffffffffffff 000000000000ffffffffffff dnl
1441 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1442 00000000 00 000000 0000000000000000ffffffffffffffff
1443
1444 # icmp,icmp_type=5
1445 0000 0058 00000000 00000397 dnl
1446 000000000000ffffffffffff 000000000000ffffffffffff dnl
1447 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1448 00000000 00 000000 0000000000000000ffffffffffffffff
1449
1450 # icmp,icmp_code=8
1451 0000 0058 00000000 00000357 dnl
1452 000000000000ffffffffffff 000000000000ffffffffffff dnl
1453 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1454 00000000 00 000000 0000000000000000ffffffffffffffff
1455
1456 # udp,tp_src=443
1457 0000 0058 00000000 00000397 dnl
1458 000000000000ffffffffffff 000000000000ffffffffffff dnl
1459 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1460 00000000 00 000000 0000000000000000ffffffffffffffff
1461
1462 # udp,tp_dst=443
1463 0000 0058 00000000 00000357 dnl
1464 000000000000ffffffffffff 000000000000ffffffffffff dnl
1465 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1466 00000000 00 000000 0000000000000000ffffffffffffffff
1467
1468 # sctp
1469 0000 0058 00000000 000003d7 dnl
1470 000000000000ffffffffffff 000000000000ffffffffffff dnl
1471 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1472 00000000 00 000000 0000000000000000ffffffffffffffff
1473
1474 # sctp,tp_src=443
1475 0000 0058 00000000 00000397 dnl
1476 000000000000ffffffffffff 000000000000ffffffffffff dnl
1477 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1478 00000000 00 000000 0000000000000000ffffffffffffffff
1479
1480 # sctp,tp_dst=443
1481 0000 0058 00000000 00000357 dnl
1482 000000000000ffffffffffff 000000000000ffffffffffff dnl
1483 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1484 00000000 00 000000 0000000000000000ffffffffffffffff
1485
1486 dnl Ignore tp_src if not TCP/UDP/SCTP:
1487 # ip,nw_proto=21
1488 # 11: 97 -> d7
1489 # 60: 01 -> 00
1490 # 61: bb -> 00
1491 0000 0058 00000000 00000397 dnl
1492 000000000000ffffffffffff 000000000000ffffffffffff dnl
1493 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1494 00000000 00 000000 0000000000000000ffffffffffffffff
1495
1496 dnl Ignore tp_dst if not TCP/UDP/SCTP:
1497 # ip,nw_proto=22
1498 # 11: 57 -> d7
1499 # 62: 01 -> 00
1500 # 63: bb -> 00
1501 0000 0058 00000000 00000357 dnl
1502 000000000000ffffffffffff 000000000000ffffffffffff dnl
1503 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1504 00000000 00 000000 0000000000000000ffffffffffffffff
1505
1506 dnl mpls_label not yet supported:
1507 # bad ofp11_match: OFPBMC_BAD_TAG
1508 0000 0058 00000000 000002f7 dnl
1509 000000000000ffffffffffff 000000000000ffffffffffff dnl
1510 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1511 12345678 00 000000 0000000000000000ffffffffffffffff
1512
1513 dnl mpls_tc not yet supported:
1514 # bad ofp11_match: OFPBMC_BAD_TAG
1515 0000 0058 00000000 000001f7 dnl
1516 000000000000ffffffffffff 000000000000ffffffffffff dnl
1517 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1518 00000000 5a 000000 0000000000000000ffffffffffffffff
1519
1520 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1521 # dl_type=0x1234
1522 # 10: 00 -> 03
1523 # 64: 12 -> 00
1524 # 65: 34 -> 00
1525 # 66: 56 -> 00
1526 # 67: 78 -> 00
1527 # 68: 5a -> 00
1528 0000 0058 00000000 000000f7 dnl
1529 000000000000ffffffffffff 000000000000ffffffffffff dnl
1530 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1531 12345678 5a 000000 0000000000000000ffffffffffffffff
1532
1533 dnl metadata match:
1534 # metadata=0x1234567890abcdef
1535 0000 0058 00000000 000003ff dnl
1536 000000000000ffffffffffff 000000000000ffffffffffff dnl
1537 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1538 00000000 00 000000 1234567890abcdef0000000000000000
1539
1540 dnl metadata match:
1541 # metadata=0x5555555555555555/0x5555555555555555
1542 0000 0058 00000000 000003ff dnl
1543 000000000000ffffffffffff 000000000000ffffffffffff dnl
1544 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1545 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1546
1547 dnl metadata match:
1548 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1549 # 74: 56 -> 00
1550 # 75: 78 -> 00
1551 # 78: cd -> 00
1552 # 79: ef -> 00
1553 0000 0058 00000000 000003ff dnl
1554 000000000000ffffffffffff 000000000000ffffffffffff dnl
1555 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1556 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1557
1558 ])
1559 sed '/^[[#&]]/d' < test-data > input.txt
1560 sed -n 's/^# //p; /^$/p' < test-data > expout
1561 sed -n 's/^& //p' < test-data > experr
1562 AT_CAPTURE_FILE([input.txt])
1563 AT_CAPTURE_FILE([expout])
1564 AT_CAPTURE_FILE([experr])
1565 AT_CHECK(
1566   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1567   [0], [expout], [experr])
1568 AT_CLEANUP
1569
1570 AT_SETUP([ovs-ofctl parse-nx-match loose])
1571 AT_KEYWORDS([nx-match])
1572 AT_DATA([nx-match.txt], [dnl
1573 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1574 ])
1575
1576 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1577 nx_pull_match() returned error OFPBMC_BAD_FIELD
1578 ])
1579
1580 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1581 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1582 ])
1583 AT_CLEANUP
1584
1585 AT_SETUP([ovs-ofctl parse-oxm])
1586 AT_KEYWORDS([oxm])
1587 AT_DATA([oxm.txt], [dnl
1588 <any>
1589
1590 # in port
1591 OXM_OF_IN_PORT(00000000)
1592 OXM_OF_IN_PORT(fffffffe)
1593
1594 # metadata
1595 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1596 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1597 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1598 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1599 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1600
1601 # eth dst
1602 OXM_OF_ETH_DST(0002e30f80a4)
1603 OXM_OF_ETH_DST_W(010000000000/010000000000)
1604 OXM_OF_ETH_DST_W(000000000000/010000000000)
1605 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1606 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1607 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1608 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1609
1610 # eth src
1611 OXM_OF_ETH_SRC(020898456ddb)
1612
1613 # eth type
1614 OXM_OF_ETH_TYPE(0800)
1615 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1616
1617 # vlan
1618 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1619 OXM_OF_VLAN_VID(f009)           # Bad Value
1620 OXM_OF_VLAN_PCP(00)             # Bad Pre-Requisite
1621 OXM_OF_VLAN_VID(0000)           # Packets without 802.1Q header or with VID=0
1622 OXM_OF_VLAN_VID(1123)           # Packets with VID=123, any PCP
1623 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1624 OXM_OF_VLAN_VID(0123)           # Does not make sense (but supported anyway)
1625 OXM_OF_VLAN_VID_W(0123/0123)      # Does not make sense (but supported anyway)
1626 OXM_OF_VLAN_VID_W(1123/0123)      # Does not make sense (but supported anyway)
1627 OXM_OF_VLAN_VID_W(0123/1123)      # Does not make sense (but supported anyway)
1628 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01)  #Bad Pre-Requisite
1629 OXM_OF_VLAN_VID_W(1123/1fff)    # Packets with VID=123, any PCP.
1630 OXM_OF_VLAN_VID_W(1123/ffff)    # Packets with VID=123, any PCP.
1631 OXM_OF_VLAN_VID_W(1123/0000)    # Packets with or without 802.1Q header
1632 OXM_OF_VLAN_VID_W(1123/1f0f),   # Packets with # VID=123 (masked)
1633 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01)  # Packets with VID=123 (masked), any PCP.
1634 OXM_OF_VLAN_VID_W(1000/1000)    # Packets with any VID, any PCP
1635 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)  # Packets with any VID, PCP=1.
1636
1637 # IP TOS
1638 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1639 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1640 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1641 OXM_OF_IP_DSCP(f0)
1642
1643 # IP ECN
1644 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1645 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1646 OXM_OF_IP_ECN(03)
1647
1648 # IP protocol
1649 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1650 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1651 OXM_OF_IP_PROTO(05)
1652
1653 # IP source
1654 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1655 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1656 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1657 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1658 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1659 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1660
1661 # IP destination
1662 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1663 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1664 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1665 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1666 OXM_OF_IPV4_DST(ac100014)
1667 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1668
1669 # TCP source port
1670 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1671 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1672 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1673 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1674 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1675
1676 # TCP destination port
1677 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1678 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1679 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1680 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1681 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1682
1683 # UDP source port
1684 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1685 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1686 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1687 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1688 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1689
1690 # UDP destination port
1691 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1692 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1693 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1694 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1695 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1696
1697 # SCTP source port
1698 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1699 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1700 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1701 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/0000)
1702 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1703
1704 # SCTP destination port
1705 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1706 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1707 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1708 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/0000)
1709 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1710
1711 # ICMP type
1712 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1713 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1714
1715 # ICMP code
1716 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1717 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1718 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1719 OXM_OF_ICMPV4_CODE(00)
1720
1721 # ARP opcode
1722 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1723 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1724 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1725 OXM_OF_ARP_OP(0001)
1726 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1727
1728 # ARP source protocol address
1729 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1730 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1731 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1732 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1733 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1734 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1735
1736 # ARP destination protocol address
1737 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1738 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1739 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1740 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1741 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1742 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1743
1744 # ARP source hardware address
1745 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1746 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1747 OXM_OF_ARP_SHA(0002e30f80a4)
1748 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1749 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1750 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1751
1752 # ARP destination hardware address
1753 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1754 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1755 OXM_OF_ARP_THA(0002e30f80a4)
1756 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1757 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1758 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1759
1760 # IPv6 source
1761 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1762 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1763 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1764 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1765 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1766 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1767
1768 # IPv6 destination
1769 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1770 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1771 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1772 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1773 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1774 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1775
1776 # IPv6 Flow Label
1777 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1778 OXM_OF_IPV6_FLABEL(0000000f)
1779 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1780 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1781 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1782 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1783 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1784 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1785 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1786
1787 # ND source hardware address
1788 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1789 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1790 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1791 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1792
1793 # ND destination hardware address
1794 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1795 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1796 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1797 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1798
1799 # Invalid field number.
1800 01020304(1111/2222)
1801 ])
1802 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm < oxm.txt],
1803   [0], [dnl
1804 <any>
1805
1806 # in port
1807 OXM_OF_IN_PORT(00000000)
1808 OXM_OF_IN_PORT(fffffffe)
1809
1810 # metadata
1811 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1812 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1813 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1814 OXM_OF_METADATA(1234567890abcdef)
1815 <any>
1816
1817 # eth dst
1818 OXM_OF_ETH_DST(0002e30f80a4)
1819 OXM_OF_ETH_DST_W(010000000000/010000000000)
1820 OXM_OF_ETH_DST_W(000000000000/010000000000)
1821 OXM_OF_ETH_DST_W(010000000000/010000000000)
1822 OXM_OF_ETH_DST(0002e30f80a4)
1823 <any>
1824 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1825
1826 # eth src
1827 OXM_OF_ETH_SRC(020898456ddb)
1828
1829 # eth type
1830 OXM_OF_ETH_TYPE(0800)
1831 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1832
1833 # vlan
1834 nx_pull_match() returned error OFPBMC_DUP_FIELD
1835 nx_pull_match() returned error OFPBMC_BAD_VALUE
1836 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1837 OXM_OF_VLAN_VID(0000)
1838 OXM_OF_VLAN_VID(1123)
1839 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1840 OXM_OF_VLAN_VID(0123)
1841 OXM_OF_VLAN_VID_W(0123/0123)
1842 OXM_OF_VLAN_VID_W(0123/0123)
1843 OXM_OF_VLAN_VID_W(0123/1123)
1844 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1845 OXM_OF_VLAN_VID(1123)
1846 OXM_OF_VLAN_VID(1123)
1847 <any>
1848 OXM_OF_VLAN_VID_W(1103/1f0f)
1849 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1850 OXM_OF_VLAN_VID_W(1000/1000)
1851 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1852
1853 # IP TOS
1854 nx_pull_match() returned error OFPBMC_BAD_VALUE
1855 nx_pull_match() returned error OFPBMC_BAD_VALUE
1856 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
1857 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1858
1859 # IP ECN
1860 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1861 nx_pull_match() returned error OFPBMC_BAD_VALUE
1862 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1863
1864 # IP protocol
1865 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1866 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1867 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1868
1869 # IP source
1870 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1871 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1872 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1873 OXM_OF_ETH_TYPE(0800)
1874 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1875 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1876
1877 # IP destination
1878 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1879 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1880 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1881 OXM_OF_ETH_TYPE(0800)
1882 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1883 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1884
1885 # TCP source port
1886 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1887 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1888 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1889 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1890 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1891
1892 # TCP destination port
1893 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1894 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1895 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1896 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1897 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1898
1899 # UDP source port
1900 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1901 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1902 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1903 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1904 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1905
1906 # UDP destination port
1907 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1908 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1909 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1910 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1911 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1912
1913 # SCTP source port
1914 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
1915 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
1916 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
1917 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
1918 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1919
1920 # SCTP destination port
1921 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
1922 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
1923 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
1924 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
1925 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1926
1927 # ICMP type
1928 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1929 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1930
1931 # ICMP code
1932 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1933 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1934 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1935 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1936
1937 # ARP opcode
1938 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1939 nx_pull_match() returned error OFPBMC_BAD_VALUE
1940 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1941 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1942 nx_pull_match() returned error OFPBMC_DUP_FIELD
1943
1944 # ARP source protocol address
1945 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1946 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1947 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1948 OXM_OF_ETH_TYPE(0806)
1949 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1950 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1951
1952 # ARP destination protocol address
1953 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1954 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1955 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1956 OXM_OF_ETH_TYPE(0806)
1957 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1958 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1959
1960 # ARP source hardware address
1961 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1962 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1963 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1964 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1965 OXM_OF_ETH_TYPE(0806)
1966 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1967
1968 # ARP destination hardware address
1969 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1970 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1971 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1972 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1973 OXM_OF_ETH_TYPE(0806)
1974 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1975
1976 # IPv6 source
1977 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1978 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1979 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1980 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1981 OXM_OF_ETH_TYPE(86dd)
1982 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1983
1984 # IPv6 destination
1985 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1986 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1987 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1988 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1989 OXM_OF_ETH_TYPE(86dd)
1990 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1991
1992 # IPv6 Flow Label
1993 nx_pull_match() returned error OFPBMC_BAD_VALUE
1994 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1995 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1996 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1997 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1998 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1999 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2000 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2001 OXM_OF_ETH_TYPE(86dd)
2002
2003 # ND source hardware address
2004 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(87), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_SLL(0002e30f80a4)
2005 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2006 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2007 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2008
2009 # ND destination hardware address
2010 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(88), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_TLL(0002e30f80a4)
2011 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2012 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2013 nx_pull_match() returned error OFPBMC_BAD_PREREQ
2014
2015 # Invalid field number.
2016 nx_pull_match() returned error OFPBMC_BAD_FIELD
2017 ], [stderr])
2018
2019 # Check that at least the first warning made it.  (It's rate-limited
2020 # so a variable number could show up, especially under valgrind etc.)
2021 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
2022 nx_match|WARN|NXM/OXM entry OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000) has 1-bits in value for bits wildcarded by the mask.  (Future versions of OVS may report this as an OpenFlow error.)
2023 ])
2024
2025 # Check that there wasn't any other stderr output.
2026 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
2027 AT_CLEANUP
2028
2029 AT_SETUP([ovs-ofctl parse-oxm loose])
2030 AT_KEYWORDS([oxm])
2031 AT_DATA([oxm.txt], [dnl
2032 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
2033 ])
2034
2035 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
2036 nx_pull_match() returned error OFPBMC_BAD_FIELD
2037 ])
2038
2039 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
2040 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2041 ])
2042 AT_CLEANUP
2043
2044 dnl Check all of the patterns mentioned in the "VLAN Matching" section
2045 dnl in the DESIGN file at top level.
2046 AT_SETUP([ovs-ofctl check-vlan])
2047 AT_KEYWORDS([VLAN])
2048
2049 dnl [1]
2050 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2051  -> 0000/0000
2052 NXM: <any> -> 0000/0000
2053 OXM: <any> -> 0000/0000,--
2054 OF1.0: 0000/1,00/1 -> 0000/0000
2055 OF1.1: 0000/1,00/1 -> 0000/0000
2056 ])
2057
2058 dnl [2]
2059 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2060 vlan_tci=0x0000 -> 0000/ffff
2061 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
2062 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
2063 OF1.0: ffff/0,00/1 -> 0000/ffff
2064 OF1.1: ffff/0,00/1 -> 0000/ffff
2065 ])
2066
2067 dnl [3]
2068 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2069 dl_vlan=2748 -> 1abc/1fff
2070 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
2071 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
2072 OF1.0: 0abc/0,00/1 -> 1abc/1fff
2073 OF1.1: 0abc/0,00/1 -> 1abc/1fff
2074 ])
2075
2076 dnl [4]
2077 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2078 dl_vlan_pcp=5 -> b000/f000
2079 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
2080 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
2081 OF1.0: 0000/1,05/0 -> b000/f000
2082 OF1.1: fffe/0,05/0 -> b000/f000
2083 ])
2084
2085 dnl [5]
2086 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2087 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2088 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
2089 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
2090 OF1.0: 0abc/0,05/0 -> babc/ffff
2091 OF1.1: 0abc/0,05/0 -> babc/ffff
2092 ])
2093
2094 dnl [6]
2095 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2096 vlan_tci=0x0000/0x0fff -> 0000/0fff
2097 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
2098 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2099 OF1.0: 0000/0,00/1 -> 1000/1fff
2100 OF1.1: 0000/0,00/1 -> 1000/1fff
2101 ])
2102
2103 dnl [7]
2104 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2105 vlan_tci=0x0000/0xf000 -> 0000/f000
2106 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
2107 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
2108 OF1.0: ffff/0,00/1 -> 0000/ffff
2109 OF1.1: ffff/0,00/1 -> 0000/ffff
2110 ])
2111
2112 dnl [8]
2113 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2114 vlan_tci=0x0000/0xefff -> 0000/efff
2115 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
2116 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
2117 OF1.0: 0000/0,00/0 -> 1000/ffff
2118 OF1.1: 0000/0,00/0 -> 1000/ffff
2119 ])
2120
2121 dnl [9]
2122 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2123 vlan_tci=0x1001/0x1001 -> 1001/1001
2124 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
2125 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
2126 OF1.0: 0001/0,00/1 -> 1001/1fff
2127 OF1.1: 0001/0,00/1 -> 1001/1fff
2128 ])
2129
2130 dnl [10]
2131 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2132 vlan_tci=0x3000/0x3000 -> 3000/3000
2133 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
2134 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
2135 OF1.0: 0000/1,01/0 -> 3000/f000
2136 OF1.1: fffe/0,01/0 -> 3000/f000
2137 ])
2138 AT_CHECK
2139 AT_CLEANUP
2140
2141 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2142 dnl such as tunnels and metadata.
2143 AT_SETUP([ovs-ofctl -F option and NXM features])
2144 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
2145   [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2146 ])
2147 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
2148   [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
2149 ])
2150 AT_CLEANUP
2151
2152 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2153 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2154 dnl additionally show up as the top 32 bits of the cookie.)  This checks
2155 dnl for regression against bug #4566.
2156 AT_SETUP([ovs-ofctl -F option with flow_mods])
2157 OVS_VSWITCHD_START
2158 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
2159 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
2160 NXST_FLOW reply:
2161  tun_id=0x12345678 actions=drop
2162 ])
2163 OVS_VSWITCHD_STOP
2164 AT_CLEANUP
2165
2166 dnl Check that "-F openflow10" is really honored on dump-flows.
2167 dnl (If it isn't, then dump-flows will show the register match.)
2168 AT_SETUP([ovs-ofctl dump-flows honors -F option])
2169 OVS_VSWITCHD_START
2170 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
2171 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
2172 OFPST_FLOW reply:
2173  actions=drop
2174 ])
2175 OVS_VSWITCHD_STOP
2176 AT_CLEANUP
2177
2178 dnl Check that "-F openflow10" fails on dump-flows if the requested match
2179 dnl can't be represented in OpenFlow 1.0.
2180 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
2181 OVS_VSWITCHD_START
2182 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
2183   [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
2184 ])
2185 OVS_VSWITCHD_STOP
2186 AT_CLEANUP
2187
2188 dnl Check that add-flow reports non-normalized flows (feature #5029).
2189 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
2190 OVS_VSWITCHD_START
2191 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2192   [0], [], [dnl
2193 ofp_util|INFO|normalization changed ofp_match, details:
2194 ofp_util|INFO| pre: nw_src=1.2.3.4
2195 ofp_util|INFO|post: @&t@
2196 ])
2197 OVS_VSWITCHD_STOP
2198 AT_CLEANUP
2199
2200 dnl Check that --sort and --rsort works with dump-flows
2201 dnl Default field is 'priority'. Flow entries are displayed based
2202 dnl on field to sort.
2203 AT_SETUP([ovs-ofctl dump-flows with sorting])
2204 OVS_VSWITCHD_START
2205 AT_KEYWORDS([sort])
2206 AT_DATA([allflows.txt], [[
2207 priority=4,in_port=23213 actions=output:42
2208 priority=5,in_port=1029 actions=output:43
2209 priority=7,in_port=1029 actions=output:43
2210 priority=3,in_port=1028 actions=output:44
2211 priority=1,in_port=1026 actions=output:45
2212 priority=6,in_port=1027 actions=output:64
2213 priority=2,in_port=1025 actions=output:47
2214 priority=8,tcp,tp_src=5 actions=drop
2215 priority=9,tcp,tp_src=6 actions=drop
2216 ]])
2217
2218 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2219 ], [0], [ignore])
2220 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2221  priority=1,in_port=1026 actions=output:45
2222  priority=2,in_port=1025 actions=output:47
2223  priority=3,in_port=1028 actions=output:44
2224  priority=4,in_port=23213 actions=output:42
2225  priority=5,in_port=1029 actions=output:43
2226  priority=6,in_port=1027 actions=output:64
2227  priority=7,in_port=1029 actions=output:43
2228  priority=8,tcp,tp_src=5 actions=drop
2229  priority=9,tcp,tp_src=6 actions=drop
2230 ])
2231 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2232  priority=9,tcp,tp_src=6 actions=drop
2233  priority=8,tcp,tp_src=5 actions=drop
2234  priority=7,in_port=1029 actions=output:43
2235  priority=6,in_port=1027 actions=output:64
2236  priority=5,in_port=1029 actions=output:43
2237  priority=4,in_port=23213 actions=output:42
2238  priority=3,in_port=1028 actions=output:44
2239  priority=2,in_port=1025 actions=output:47
2240  priority=1,in_port=1026 actions=output:45
2241 ])
2242 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2243  priority=2,in_port=1025 actions=output:47
2244  priority=1,in_port=1026 actions=output:45
2245  priority=6,in_port=1027 actions=output:64
2246  priority=3,in_port=1028 actions=output:44
2247  priority=7,in_port=1029 actions=output:43
2248  priority=5,in_port=1029 actions=output:43
2249  priority=4,in_port=23213 actions=output:42
2250  priority=9,tcp,tp_src=6 actions=drop
2251  priority=8,tcp,tp_src=5 actions=drop
2252 ])
2253 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2254  priority=4,in_port=23213 actions=output:42
2255  priority=7,in_port=1029 actions=output:43
2256  priority=5,in_port=1029 actions=output:43
2257  priority=3,in_port=1028 actions=output:44
2258  priority=6,in_port=1027 actions=output:64
2259  priority=1,in_port=1026 actions=output:45
2260  priority=2,in_port=1025 actions=output:47
2261  priority=9,tcp,tp_src=6 actions=drop
2262  priority=8,tcp,tp_src=5 actions=drop
2263 ])
2264 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2265  priority=8,tcp,tp_src=5 actions=drop
2266  priority=9,tcp,tp_src=6 actions=drop
2267  priority=7,in_port=1029 actions=output:43
2268  priority=6,in_port=1027 actions=output:64
2269  priority=5,in_port=1029 actions=output:43
2270  priority=4,in_port=23213 actions=output:42
2271  priority=3,in_port=1028 actions=output:44
2272  priority=2,in_port=1025 actions=output:47
2273  priority=1,in_port=1026 actions=output:45
2274 ])
2275 AT_CHECK(
2276   [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2277   [ priority=2,in_port=1025 actions=output:47
2278  priority=1,in_port=1026 actions=output:45
2279  priority=6,in_port=1027 actions=output:64
2280  priority=3,in_port=1028 actions=output:44
2281  priority=7,in_port=1029 actions=output:43
2282  priority=5,in_port=1029 actions=output:43
2283  priority=4,in_port=23213 actions=output:42
2284  priority=8,tcp,tp_src=5 actions=drop
2285  priority=9,tcp,tp_src=6 actions=drop
2286 ])
2287 OVS_VSWITCHD_STOP
2288 AT_CLEANUP
2289
2290 AT_SETUP([ovs-ofctl diff-flows])
2291 OVS_VSWITCHD_START
2292
2293 # Add tons of flows to br0.
2294 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2295 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2296
2297 # Dump them and compare against what we expect by hand, then with diff-flows.
2298 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2299 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2300   [0], [expout])
2301 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2302
2303 # Remove even-numbered flows, compare again.
2304 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2305 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2306 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2307 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2308 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2309 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2310
2311 OVS_VSWITCHD_STOP
2312 AT_CLEANUP
2313
2314 dnl ofpacts that differ bytewise don't necessarily differ when
2315 dnl converted to another representation, such as OpenFlow 1.0
2316 dnl or to a string.  "resubmit(,1)" is an example of an action
2317 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2318 dnl values even though this doesn't affect the string format.
2319 dnl
2320 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2321 dnl false ofpacts differences.
2322 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2323 OVS_VSWITCHD_START
2324 AT_DATA([flows.txt], [actions=resubmit(,1)
2325 ])
2326 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2327 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2328 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2329 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2330 -dl_vlan=9 idle_timeout=60 actions=output:1
2331 ])
2332 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2333 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2334 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2335 ])
2336 OVS_VSWITCHD_STOP
2337 AT_CLEANUP
2338
2339 AT_SETUP([ovs-ofctl -F and -O interaction])
2340 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2341   [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10) supports any of the enabled flow formats (OXM).  (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2342 ])
2343 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2344   [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow11) supports any of the enabled flow formats (OXM).  (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2345 ])
2346 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2347   [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10, OpenFlow11) supports any of the enabled flow formats (OXM).  (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2348 ])
2349 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2350  [ovs-ofctl: missing command name; use --help for help
2351 ])
2352 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2353   [ovs-ofctl: missing command name; use --help for help
2354 ])
2355 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2356   [ovs-ofctl: missing command name; use --help for help
2357 ])
2358 AT_CLEANUP
2359
2360 AT_SETUP([ovs-ofctl ofp-parse])
2361 # Test the echo request/reply messages (0 payload).
2362 AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2363 AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2364 OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2365 OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2366 ])
2367
2368 # Test the hello (xid:1 3-byte payload).
2369 AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2370 AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2371 OFPT_HELLO (xid=0x1):
2372  version bitmap: 0x01
2373  unknown data in hello:
2374 00000000  01 00 00 0b 00 00 00 01-41 42 43                |........ABC     |
2375 ])
2376 AT_CLEANUP