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