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