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