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