3 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
4 AT_DATA([flows.txt], [[
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
17 AT_CHECK([ovs-ofctl parse-flows flows.txt
19 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
20 [[usable protocols: any
21 chosen protocol: OpenFlow10-table_id
22 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
23 OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
24 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
25 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
26 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
27 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
28 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
29 OFPT_FLOW_MOD: ADD actions=load:0xa6badbfffefe59fa->NXM_NX_IPV6_SRC[0..63],load:0xfe8001234567890a->NXM_NX_IPV6_SRC[64..127]
30 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
34 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
35 AT_DATA([flows.txt], [[
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
48 AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
50 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
51 [[usable protocols: any
52 chosen protocol: OXM-OpenFlow12
53 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,tp_src=123 actions=FLOOD
54 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
55 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
56 OFPT_FLOW_MOD (OF1.2): ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
57 OFPT_FLOW_MOD (OF1.2): ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
58 OFPT_FLOW_MOD (OF1.2): ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
59 OFPT_FLOW_MOD (OF1.2): ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
60 OFPT_FLOW_MOD (OF1.2): ADD table:255 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
61 OFPT_FLOW_MOD (OF1.2): ADD table:255 in_port=0 actions=resubmit:0
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
70 AT_CHECK([ovs-ofctl parse-flows flows.txt
71 ], [1], [usable protocols: none
77 AT_SETUP([ovs-ofctl parse-flows (skb_mark and skb_priority)])
78 AT_DATA([flows.txt], [[
79 skb_mark=0x12345678,skb_priority=0x12341234,tcp,tp_src=123,actions=flood
82 AT_CHECK([ovs-ofctl parse-flows flows.txt
83 ], [1], [usable protocols: none
89 AT_SETUP([ovs-ofctl parse-flows (NXM)])
90 AT_DATA([flows.txt], [[
92 tcp,tp_src=123,actions=flood
93 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
94 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
95 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
96 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
97 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
98 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
99 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
100 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
101 actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, NXM_NX_REG0[0..12])
103 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
104 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
105 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
106 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
107 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
108 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
109 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
110 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
111 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
112 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
113 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
114 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
115 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
116 check_overlap,actions=output:1,exit,output:2
117 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
118 actions=controller(max_len=123,reason=invalid_ttl,id=555)
121 AT_CHECK([ovs-ofctl parse-flows flows.txt
123 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
124 [[usable protocols: OXM,NXM+table_id
125 chosen protocol: NXM+table_id
126 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
127 NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
128 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
129 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
130 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
131 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
132 NXT_FLOW_MOD: ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
133 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
134 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
135 NXT_FLOW_MOD: ADD table:255 actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multipath(symmetric_l4,1024,iter_hash,5000,5050,NXM_NX_REG0[0..12])
136 NXT_FLOW_MOD: ADD table:1 actions=drop
137 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
138 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
139 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
140 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
141 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
142 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
143 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
144 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
145 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
146 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
147 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
148 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
149 NXT_FLOW_MOD: ADD table:255 send_flow_rem actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
150 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
151 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
152 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
156 AT_SETUP([ovs-ofctl -F nxm parse-flows])
157 AT_DATA([flows.txt], [
159 tcp,tp_src=123,actions=flood
160 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
161 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
162 ipv6,ipv6_label=0x12345 actions=2
163 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
164 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
165 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
166 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
167 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
168 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
169 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
170 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
171 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
172 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
173 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
174 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
175 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
176 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
177 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
178 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
179 tun_id=0x1234,cookie=0x5678,actions=flood
181 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
182 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
183 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
184 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
185 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
187 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
188 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
189 usable protocols: NXM,OXM
190 chosen protocol: NXM-table_id
191 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
192 NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
193 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
194 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
195 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
196 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
197 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
198 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
199 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
200 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
201 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
202 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
203 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
204 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
205 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
206 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
207 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
208 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
209 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
210 NXT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
211 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
212 NXT_FLOW_MOD: ADD actions=drop
213 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
214 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
215 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
216 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
217 NXT_FLOW_MOD: ADD actions=drop
221 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
222 AT_DATA([flows.txt], [[
224 tcp,tp_src=123,actions=flood
225 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
226 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
227 ipv6,ipv6_label=0x12345 actions=2
228 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
229 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
230 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
231 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
232 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
233 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
234 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
235 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
236 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
237 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
238 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
239 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
240 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
241 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
242 tun_id=0x1234,cookie=0x5678,actions=flood
244 reg0=123,actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:55->NXM_NX_REG2[0..31],move:NXM_NX_REG0[0..31]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
245 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
246 actions=autopath(5,NXM_NX_REG0[])
247 vlan_tci=0x1123/0x1fff,actions=drop
249 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
250 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
251 [[usable protocols: NXM,OXM
252 chosen protocol: NXM-table_id
253 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
254 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
255 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
256 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
257 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
258 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
259 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
260 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=drop
261 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=drop
262 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(0003), NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(86) actions=drop
263 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_VLAN_TCI_W(f000/f000), NXM_OF_IP_PROTO(11) idle:5 actions=strip_vlan,output:0
264 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=set_queue:37,output:1
265 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=pop_queue,output:1
266 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571) actions=drop
267 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_SLL(000ae4256bb0) actions=drop
268 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571), NXM_NX_ND_TLL(000ae4256bb1) actions=drop
269 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
270 NXT_FLOW_MOD: ADD <any> actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
271 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
272 NXT_FLOW_MOD: ADD <any> actions=drop
273 NXT_FLOW_MOD: ADD NXM_NX_REG0(0000007b) actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:0x37->NXM_NX_REG2[],move:NXM_NX_REG0[]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
274 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
275 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
276 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
278 AT_CHECK([[sed 's/^[^|]*|[^|]*|//' stderr]], [0], [dnl
279 autopath|WARN|The autopath action is deprecated and may be removed in February 2013. Please email dev@openvswitch.org with concerns.
283 AT_SETUP([ovs-ofctl parse-nx-match])
284 AT_KEYWORDS([nx-match])
285 AT_DATA([nx-match.txt], [dnl
293 NXM_OF_ETH_DST(0002e30f80a4)
294 NXM_OF_ETH_DST_W(010000000000/010000000000)
295 NXM_OF_ETH_DST_W(000000000000/010000000000)
296 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
297 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
298 NXM_OF_ETH_DST_W(60175619848f/000000000000)
299 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
300 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
303 NXM_OF_ETH_SRC(020898456ddb)
304 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
305 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
306 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
309 NXM_OF_ETH_TYPE(0800)
310 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
313 NXM_OF_VLAN_TCI(f009)
314 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
315 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
316 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
317 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
318 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
319 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
320 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
321 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
322 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
325 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
326 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
330 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
331 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
335 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
336 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
340 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
341 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
345 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
346 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
347 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
348 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
349 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
350 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
351 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
354 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
355 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
356 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
357 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
358 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
359 NXM_OF_IP_DST(ac100014)
360 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
363 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
364 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
365 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
366 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
367 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
369 # TCP destination port
370 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
371 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
372 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
373 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
374 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
377 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
378 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
379 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
380 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
381 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
383 # UDP destination port
384 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
385 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
386 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
387 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
388 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
391 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
392 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
395 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
396 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
397 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
401 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
402 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
403 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
405 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
407 # ARP source protocol address
408 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
409 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
410 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
411 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
412 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
413 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
414 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
416 # ARP destination protocol address
417 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
418 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
419 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
420 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
421 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
422 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
423 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
425 # ARP source hardware address
426 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
427 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
428 NXM_NX_ARP_SHA(0002e30f80a4)
430 # ARP destination hardware address
431 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
432 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
433 NXM_NX_ARP_THA(0002e30f80a4)
436 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
437 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
438 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
440 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
442 # RARP source protocol address
443 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
444 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
445 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
446 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
447 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/00000000)
448 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
449 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
451 # RARP destination protocol address
452 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
453 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
454 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
455 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
456 NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/00000000)
457 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
458 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
460 # RARP source hardware address
461 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
462 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
463 NXM_NX_ARP_SHA(0002e30f80a4)
465 # RARP destination hardware address
466 NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
467 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
468 NXM_NX_ARP_THA(0002e30f80a4)
471 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
472 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
473 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
474 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
475 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
476 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
477 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
480 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
481 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
482 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
483 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
484 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
485 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
488 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
489 NXM_NX_IPV6_LABEL(0000000f)
490 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
493 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
494 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
495 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
496 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
497 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
498 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
500 # ND source hardware address
501 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
502 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
503 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
504 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
506 # ND destination hardware address
507 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
508 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
509 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
510 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
513 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
514 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
515 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
516 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
517 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
518 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
519 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
520 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
521 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
522 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
523 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
524 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
525 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
528 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
529 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
530 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
531 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
532 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
533 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
534 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
535 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
536 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
537 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
538 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
539 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
540 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
543 NXM_NX_COOKIE(00000000abcdef01)
544 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
545 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
546 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
549 NXM_NX_TUN_ID(00000000abcdef01)
550 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
551 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
552 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
555 NXM_NX_REG0(acebdf56)
556 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
557 NXM_NX_REG0_W(a0e0d050/ffffffff)
558 NXM_NX_REG0_W(a0e0d050/00000000)
560 # Invalid field number.
563 # Unimplemented registers.
565 # This test assumes that at least two registers, but fewer than 16,
566 # registers are implemented.
568 00010108(12345678/12345678)
570 00011f08(12345678/12345678)
572 AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
580 NXM_OF_ETH_DST(0002e30f80a4)
581 NXM_OF_ETH_DST_W(010000000000/010000000000)
582 NXM_OF_ETH_DST_W(000000000000/010000000000)
583 NXM_OF_ETH_DST_W(010000000000/010000000000)
584 NXM_OF_ETH_DST(0002e30f80a4)
586 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
587 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
590 NXM_OF_ETH_SRC(020898456ddb)
591 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
592 NXM_OF_ETH_SRC(020898456ddb)
596 NXM_OF_ETH_TYPE(0800)
597 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
600 NXM_OF_VLAN_TCI(f009)
601 nx_pull_match() returned error OFPBMC_DUP_FIELD
602 NXM_OF_VLAN_TCI(0000)
603 NXM_OF_VLAN_TCI(3123)
604 NXM_OF_VLAN_TCI(0123)
605 NXM_OF_VLAN_TCI_W(1123/1fff)
606 NXM_OF_VLAN_TCI(1123)
608 NXM_OF_VLAN_TCI_W(f000/f000)
609 NXM_OF_VLAN_TCI_W(0000/e000)
612 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
613 nx_pull_match() returned error OFPBMC_BAD_VALUE
614 nx_pull_match() returned error OFPBMC_BAD_PREREQ
617 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
618 nx_pull_match() returned error OFPBMC_BAD_VALUE
619 nx_pull_match() returned error OFPBMC_BAD_PREREQ
622 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
623 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
624 nx_pull_match() returned error OFPBMC_BAD_PREREQ
627 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
628 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
629 nx_pull_match() returned error OFPBMC_BAD_PREREQ
632 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
633 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
634 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
635 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
636 NXM_OF_ETH_TYPE(0800)
637 nx_pull_match() returned error OFPBMC_BAD_PREREQ
638 nx_pull_match() returned error OFPBMC_BAD_PREREQ
641 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
642 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
643 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
644 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
645 NXM_OF_ETH_TYPE(0800)
646 nx_pull_match() returned error OFPBMC_BAD_PREREQ
647 nx_pull_match() returned error OFPBMC_BAD_PREREQ
650 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
651 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
652 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
653 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
654 nx_pull_match() returned error OFPBMC_BAD_PREREQ
656 # TCP destination port
657 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
658 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
659 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
660 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
661 nx_pull_match() returned error OFPBMC_BAD_PREREQ
664 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
665 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
666 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
667 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
668 nx_pull_match() returned error OFPBMC_BAD_PREREQ
670 # UDP destination port
671 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
672 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
673 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
674 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
675 nx_pull_match() returned error OFPBMC_BAD_PREREQ
678 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
679 nx_pull_match() returned error OFPBMC_BAD_PREREQ
682 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
683 nx_pull_match() returned error OFPBMC_BAD_PREREQ
684 nx_pull_match() returned error OFPBMC_BAD_PREREQ
685 nx_pull_match() returned error OFPBMC_BAD_PREREQ
688 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
689 nx_pull_match() returned error OFPBMC_BAD_VALUE
690 nx_pull_match() returned error OFPBMC_BAD_PREREQ
691 nx_pull_match() returned error OFPBMC_BAD_PREREQ
692 nx_pull_match() returned error OFPBMC_DUP_FIELD
694 # ARP source protocol address
695 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
696 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
697 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
698 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
699 NXM_OF_ETH_TYPE(0806)
700 nx_pull_match() returned error OFPBMC_BAD_PREREQ
701 nx_pull_match() returned error OFPBMC_BAD_PREREQ
703 # ARP destination protocol address
704 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
705 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
706 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
707 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
708 NXM_OF_ETH_TYPE(0806)
709 nx_pull_match() returned error OFPBMC_BAD_PREREQ
710 nx_pull_match() returned error OFPBMC_BAD_PREREQ
712 # ARP source hardware address
713 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
714 nx_pull_match() returned error OFPBMC_BAD_PREREQ
715 nx_pull_match() returned error OFPBMC_BAD_PREREQ
717 # ARP destination hardware address
718 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
719 nx_pull_match() returned error OFPBMC_BAD_PREREQ
720 nx_pull_match() returned error OFPBMC_BAD_PREREQ
723 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
724 nx_pull_match() returned error OFPBMC_BAD_VALUE
725 nx_pull_match() returned error OFPBMC_BAD_PREREQ
726 nx_pull_match() returned error OFPBMC_BAD_PREREQ
727 nx_pull_match() returned error OFPBMC_DUP_FIELD
729 # RARP source protocol address
730 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
731 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
732 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
733 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
734 NXM_OF_ETH_TYPE(8035)
735 nx_pull_match() returned error OFPBMC_BAD_PREREQ
736 nx_pull_match() returned error OFPBMC_BAD_PREREQ
738 # RARP destination protocol address
739 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
740 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
741 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(40201234/77777777)
742 NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
743 NXM_OF_ETH_TYPE(8035)
744 nx_pull_match() returned error OFPBMC_BAD_PREREQ
745 nx_pull_match() returned error OFPBMC_BAD_PREREQ
747 # RARP source hardware address
748 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
749 nx_pull_match() returned error OFPBMC_BAD_PREREQ
750 nx_pull_match() returned error OFPBMC_BAD_PREREQ
752 # RARP destination hardware address
753 NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
754 nx_pull_match() returned error OFPBMC_BAD_PREREQ
755 nx_pull_match() returned error OFPBMC_BAD_PREREQ
758 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
759 nx_pull_match() returned error OFPBMC_BAD_PREREQ
760 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
761 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
762 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
763 NXM_OF_ETH_TYPE(86dd)
764 nx_pull_match() returned error OFPBMC_BAD_PREREQ
767 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
768 nx_pull_match() returned error OFPBMC_BAD_PREREQ
769 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
770 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
771 NXM_OF_ETH_TYPE(86dd)
772 nx_pull_match() returned error OFPBMC_BAD_PREREQ
775 nx_pull_match() returned error OFPBMC_BAD_VALUE
776 nx_pull_match() returned error OFPBMC_BAD_PREREQ
777 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
780 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
781 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
782 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
783 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
784 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
785 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
787 # ND source hardware address
788 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
789 nx_pull_match() returned error OFPBMC_BAD_PREREQ
790 nx_pull_match() returned error OFPBMC_BAD_PREREQ
791 nx_pull_match() returned error OFPBMC_BAD_PREREQ
793 # ND destination hardware address
794 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
795 nx_pull_match() returned error OFPBMC_BAD_PREREQ
796 nx_pull_match() returned error OFPBMC_BAD_PREREQ
797 nx_pull_match() returned error OFPBMC_BAD_PREREQ
800 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
801 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
802 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
803 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
804 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
805 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
806 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
807 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
808 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
809 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
810 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
811 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
812 nx_pull_match() returned error OFPBMC_BAD_VALUE
815 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
816 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
817 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
818 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
819 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
820 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
821 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
822 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
823 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
824 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
825 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
826 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
827 nx_pull_match() returned error OFPBMC_BAD_VALUE
830 NXM_NX_COOKIE(00000000abcdef01)
831 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
832 NXM_NX_COOKIE(84200000abcdef01)
836 NXM_NX_TUN_ID(00000000abcdef01)
837 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
838 NXM_NX_TUN_ID(84200000abcdef01)
842 NXM_NX_REG0(acebdf56)
843 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
844 NXM_NX_REG0(a0e0d050)
847 # Invalid field number.
848 nx_pull_match() returned error OFPBMC_BAD_FIELD
850 # Unimplemented registers.
852 # This test assumes that at least two registers, but fewer than 16,
853 # registers are implemented.
854 NXM_NX_REG0(12345678)
855 NXM_NX_REG0_W(12345678/12345678)
856 nx_pull_match() returned error OFPBMC_BAD_FIELD
857 nx_pull_match() returned error OFPBMC_BAD_FIELD
860 # Check that at least the first warning made it. (It's rate-limited
861 # so a variable number could show up, especially under valgrind etc.)
862 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
863 nx_match|WARN|NXM/OXM entry NXM_OF_ETH_DST_W(ffffffffffff/010000000000) has 1-bits in value for bits wildcarded by the mask. (Future versions of OVS may report this as an OpenFlow error.)
866 # Check that there wasn't any other stderr output.
867 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
870 AT_SETUP([ovs-ofctl parse-ofp10-match])
872 AT_DATA([test-data], [dnl
874 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
875 xxxxxxxx xxxxxxxx xxxx xxxx
877 # dl_src=00:01:02:03:04:05
878 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
879 xxxxxxxx xxxxxxxx xxxx xxxx
881 # dl_dst=10:20:30:40:50:60
882 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
883 xxxxxxxx xxxxxxxx xxxx xxxx
886 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
887 xxxxxxxx xxxxxxxx xxxx xxxx
890 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
891 xxxxxxxx xxxxxxxx xxxx xxxx
893 # dl_vlan=291,dl_vlan_pcp=4
894 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
895 xxxxxxxx xxxxxxxx xxxx xxxx
898 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
899 xxxxxxxx xxxxxxxx xxxx xxxx
901 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
902 dnl OVS ignores it and drops it on output.
906 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
907 xxxxxxxx xxxxxxxx xxxx xxxx
909 dnl Invalid VID and PCP discards out-of-range bits:
910 # dl_vlan=256,dl_vlan_pcp=7
913 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
914 xxxxxxxx xxxxxxxx xxxx xxxx
917 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
918 xxxxxxxx xxxxxxxx xxxx xxxx
921 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
922 xxxxxxxx xxxxxxxx xxxx xxxx
924 dnl Ignore nw_proto if not IP or ARP:
925 # dl_type=0x1234,nw_proto=5
926 # normal: 3: cf -> ef
927 # normal: 25: 05 -> 00
928 & ofp_util|INFO|normalization changed ofp_match, details:
929 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
930 & ofp_util|INFO|post: dl_type=0x1234
931 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
932 xxxxxxxx xxxxxxxx xxxx xxxx
935 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
936 xxxxxxxx xxxxxxxx xxxx xxxx
938 dnl Ignore nw_tos if not IP:
941 # normal: 1: 18 -> 38
942 # normal: 24: 04 -> 00
943 & ofp_util|INFO|normalization changed ofp_match, details:
944 & ofp_util|INFO| pre: arp,nw_tos=4
945 & ofp_util|INFO|post: arp
946 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
947 xxxxxxxx xxxxxxxx xxxx xxxx
949 dnl Low 2 bits of invalid TOS are forced to 0:
952 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
953 xxxxxxxx xxxxxxxx xxxx xxxx
956 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
957 xxxxxxxx xxxxxxxx xxxx xxxx
959 # ip,nw_src=192.168.128.85
960 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
961 c0a88055 xxxxxxxx xxxx xxxx
963 # ip,nw_src=192.168.128.0/24
965 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
966 c0a88055 xxxxxxxx xxxx xxxx
968 # ip,nw_dst=192.168.128.85
969 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
970 xxxxxxxx c0a88055 xxxx xxxx
972 # ip,nw_dst=192.168.128.0/24
974 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
975 xxxxxxxx c0a88055 xxxx xxxx
977 # arp,arp_spa=192.168.128.85
978 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
979 c0a88055 xxxxxxxx xxxx xxxx
981 # arp,arp_spa=192.168.128.0/24
983 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
984 c0a88055 xxxxxxxx xxxx xxxx
986 # arp,arp_tpa=192.168.128.85
987 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
988 xxxxxxxx c0a88055 xxxx xxxx
990 # arp,arp_tpa=192.168.128.0/24
992 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
993 xxxxxxxx c0a88055 xxxx xxxx
995 dnl Ignore nw_src if not IP or ARP:
996 # dl_type=0x1234,nw_src=192.168.128.0/24
998 # normal: 2: 08 -> 20
999 # normal: 28: c0 -> 00
1000 # normal: 29: a8 -> 00
1001 # normal: 30: 80 -> 00
1002 & ofp_util|INFO|normalization changed ofp_match, details:
1003 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1004 & ofp_util|INFO|post: dl_type=0x1234
1005 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1006 c0a88055 xxxxxxxx xxxx xxxx
1008 dnl Ignore nw_dst if not IP or ARP:
1009 # dl_type=0x1234,nw_dst=192.168.128.0/24
1011 # normal: 1: 32 -> 38
1012 # normal: 32: c0 -> 00
1013 # normal: 33: a8 -> 00
1014 # normal: 34: 80 -> 00
1015 & ofp_util|INFO|normalization changed ofp_match, details:
1016 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1017 & ofp_util|INFO|post: dl_type=0x1234
1018 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1019 xxxxxxxx c0a88055 xxxx xxxx
1022 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1023 xxxxxxxx xxxxxxxx 01bb xxxx
1026 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1027 xxxxxxxx xxxxxxxx xxxx 01bb
1030 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1031 xxxxxxxx xxxxxxxx 01bb xxxx
1034 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1035 xxxxxxxx xxxxxxxx xxxx 01bb
1038 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1039 xxxxxxxx xxxxxxxx 0005 xxxx
1042 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1043 xxxxxxxx xxxxxxxx xxxx 0008
1045 dnl Ignore tp_src if not TCP or UDP:
1046 # ip,nw_proto=21,tp_src=443
1047 # normal: 3: 8f -> cf
1048 # normal: 36: 01 -> 00
1049 # normal: 37: bb -> 00
1050 & ofp_util|INFO|normalization changed ofp_match, details:
1051 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1052 & ofp_util|INFO|post: ip,nw_proto=21
1053 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1054 xxxxxxxx xxxxxxxx 01bb xxxx
1056 dnl Ignore tp_dst if not TCP or UDP:
1057 # ip,nw_proto=21,tp_dst=443
1058 # normal: 3: 4f -> cf
1059 # normal: 38: 01 -> 00
1060 # normal: 39: bb -> 00
1061 dnl The normalization details are suppressed here due to rate-limiting.
1062 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1063 xxxxxxxx xxxxxxxx xxxx 01bb
1066 sed '/^[[#&]]/d' < test-data > input.txt
1067 sed -n 's/^# //p; /^$/p' < test-data > expout
1068 sed -n 's/^& //p' < test-data > experr
1069 AT_CAPTURE_FILE([input.txt])
1070 AT_CAPTURE_FILE([expout])
1071 AT_CAPTURE_FILE([experr])
1073 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1074 [0], [expout], [experr])
1077 AT_SETUP([ovs-ofctl parse-ofp11-match])
1078 AT_KEYWORDS([OF1.1])
1079 AT_DATA([test-data], [dnl
1081 0000 0058 fffffffe 000003fe dnl
1082 000000000000ffffffffffff 000000000000ffffffffffff dnl
1083 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1084 00000000 00 000000 0000000000000000ffffffffffffffff
1086 # bad ofp11_match: OFPBMC_BAD_VALUE
1087 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1088 0000 0058 12345678 000003fe dnl
1089 000000000000ffffffffffff 000000000000ffffffffffff dnl
1090 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1091 00000000 00 000000 0000000000000000ffffffffffffffff
1093 # dl_src=00:01:02:03:04:05
1094 0000 0058 00000000 000003ff dnl
1095 000102030405000000000000 000000000000ffffffffffff dnl
1096 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1097 00000000 00 000000 0000000000000000ffffffffffffffff
1099 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1100 0000 0058 00000000 000003ff dnl
1101 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1102 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1103 00000000 00 000000 0000000000000000ffffffffffffffff
1105 # dl_dst=00:01:02:03:04:05
1106 0000 0058 00000000 000003ff dnl
1107 000000000000ffffffffffff 000102030405000000000000 dnl
1108 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1109 00000000 00 000000 0000000000000000ffffffffffffffff
1111 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1112 0000 0058 00000000 000003ff dnl
1113 000000000000ffffffffffff 010000000000feffffffffff dnl
1114 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1115 00000000 00 000000 0000000000000000ffffffffffffffff
1117 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1118 0000 0058 00000000 000003ff dnl
1119 000000000000ffffffffffff 000102030405010000000000 dnl
1120 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1121 00000000 00 000000 0000000000000000ffffffffffffffff
1123 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1124 0000 0058 00000000 000003ff dnl
1125 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1126 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1127 00000000 00 000000 0000000000000000ffffffffffffffff
1129 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1130 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1134 0000 0058 00000001 000003fa dnl
1135 000000000000ffffffffffff 000000000000ffffffffffff dnl
1136 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1137 00000000 00 000000 0000000000000000ffffffffffffffff
1140 0000 0058 00000000 000003fd dnl
1141 000000000000ffffffffffff 000000000000ffffffffffff dnl
1142 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1143 00000000 00 000000 0000000000000000ffffffffffffffff
1147 0000 0058 00000000 000003fd dnl
1148 000000000000ffffffffffff 000000000000ffffffffffff dnl
1149 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1150 00000000 00 000000 0000000000000000ffffffffffffffff
1152 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1153 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1157 0000 0058 00000000 000003f9 dnl
1158 000000000000ffffffffffff 000000000000ffffffffffff dnl
1159 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1160 00000000 00 000000 0000000000000000ffffffffffffffff
1162 # vlan_tci=0x1000/0x1000
1163 0000 0058 00000000 000003fd dnl
1164 000000000000ffffffffffff 000000000000ffffffffffff dnl
1165 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1166 00000000 00 000000 0000000000000000ffffffffffffffff
1168 dnl Try invalid VID:
1169 # bad ofp11_match: OFPBMC_BAD_VALUE
1170 0000 0058 00000000 000003fd dnl
1171 000000000000ffffffffffff 000000000000ffffffffffff dnl
1172 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1173 00000000 00 000000 0000000000000000ffffffffffffffff
1176 0000 0058 00000000 000003f9 dnl
1177 000000000000ffffffffffff 000000000000ffffffffffff dnl
1178 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1179 00000000 00 000000 0000000000000000ffffffffffffffff
1181 # dl_vlan=10,dl_vlan_pcp=6
1182 0000 0058 00000000 000003f9 dnl
1183 000000000000ffffffffffff 000000000000ffffffffffff dnl
1184 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1185 00000000 00 000000 0000000000000000ffffffffffffffff
1188 0000 0058 00000000 000003f7 dnl
1189 000000000000ffffffffffff 000000000000ffffffffffff dnl
1190 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1191 00000000 00 000000 0000000000000000ffffffffffffffff
1194 0000 0058 00000000 000003e7 dnl
1195 000000000000ffffffffffff 000000000000ffffffffffff dnl
1196 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1197 00000000 00 000000 0000000000000000ffffffffffffffff
1199 dnl Try invalid TOS:
1200 # bad ofp11_match: OFPBMC_BAD_VALUE
1201 0000 0058 00000000 000003e7 dnl
1202 000000000000ffffffffffff 000000000000ffffffffffff dnl
1203 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1204 00000000 00 000000 0000000000000000ffffffffffffffff
1207 0000 0058 00000000 000003d7 dnl
1208 000000000000ffffffffffff 000000000000ffffffffffff dnl
1209 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1210 00000000 00 000000 0000000000000000ffffffffffffffff
1213 0000 0058 00000000 000003d7 dnl
1214 000000000000ffffffffffff 000000000000ffffffffffff dnl
1215 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1216 00000000 00 000000 0000000000000000ffffffffffffffff
1218 # ip,nw_src=192.168.128.0/24
1219 0000 0058 00000000 000003f7 dnl
1220 000000000000ffffffffffff 000000000000ffffffffffff dnl
1221 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1222 00000000 00 000000 0000000000000000ffffffffffffffff
1224 # ip,nw_src=128.160.128.0/165.165.165.165
1227 0000 0058 00000000 000003f7 dnl
1228 000000000000ffffffffffff 000000000000ffffffffffff dnl
1229 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1230 00000000 00 000000 0000000000000000ffffffffffffffff
1232 # ip,nw_dst=192.168.128.0/24
1233 0000 0058 00000000 000003f7 dnl
1234 000000000000ffffffffffff 000000000000ffffffffffff dnl
1235 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1236 00000000 00 000000 0000000000000000ffffffffffffffff
1238 # ip,nw_dst=128.160.128.0/165.165.165.165
1241 0000 0058 00000000 000003f7 dnl
1242 000000000000ffffffffffff 000000000000ffffffffffff dnl
1243 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1244 00000000 00 000000 0000000000000000ffffffffffffffff
1246 # arp,arp_spa=192.168.128.0/24
1247 0000 0058 00000000 000003f7 dnl
1248 000000000000ffffffffffff 000000000000ffffffffffff dnl
1249 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1250 00000000 00 000000 0000000000000000ffffffffffffffff
1252 # arp,arp_tpa=192.168.128.0/24
1253 0000 0058 00000000 000003f7 dnl
1254 000000000000ffffffffffff 000000000000ffffffffffff dnl
1255 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1256 00000000 00 000000 0000000000000000ffffffffffffffff
1259 0000 0058 00000000 00000397 dnl
1260 000000000000ffffffffffff 000000000000ffffffffffff dnl
1261 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1262 00000000 00 000000 0000000000000000ffffffffffffffff
1265 0000 0058 00000000 00000357 dnl
1266 000000000000ffffffffffff 000000000000ffffffffffff dnl
1267 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1268 00000000 00 000000 0000000000000000ffffffffffffffff
1271 0000 0058 00000000 00000397 dnl
1272 000000000000ffffffffffff 000000000000ffffffffffff dnl
1273 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1274 00000000 00 000000 0000000000000000ffffffffffffffff
1277 0000 0058 00000000 00000397 dnl
1278 000000000000ffffffffffff 000000000000ffffffffffff dnl
1279 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1280 00000000 00 000000 0000000000000000ffffffffffffffff
1283 0000 0058 00000000 00000357 dnl
1284 000000000000ffffffffffff 000000000000ffffffffffff dnl
1285 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1286 00000000 00 000000 0000000000000000ffffffffffffffff
1289 0000 0058 00000000 00000397 dnl
1290 000000000000ffffffffffff 000000000000ffffffffffff dnl
1291 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1292 00000000 00 000000 0000000000000000ffffffffffffffff
1295 0000 0058 00000000 00000357 dnl
1296 000000000000ffffffffffff 000000000000ffffffffffff dnl
1297 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1298 00000000 00 000000 0000000000000000ffffffffffffffff
1302 0000 0058 00000000 000003d7 dnl
1303 000000000000ffffffffffff 000000000000ffffffffffff dnl
1304 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1305 00000000 00 000000 0000000000000000ffffffffffffffff
1307 dnl SCTP tp_src matching not supported:
1308 # bad ofp11_match: OFPBMC_BAD_FIELD
1309 0000 0058 00000000 00000397 dnl
1310 000000000000ffffffffffff 000000000000ffffffffffff dnl
1311 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1312 00000000 00 000000 0000000000000000ffffffffffffffff
1314 dnl SCTP tp_dst matching not supported:
1315 # bad ofp11_match: OFPBMC_BAD_FIELD
1316 0000 0058 00000000 00000357 dnl
1317 000000000000ffffffffffff 000000000000ffffffffffff dnl
1318 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1319 00000000 00 000000 0000000000000000ffffffffffffffff
1321 dnl Ignore tp_src if not TCP or UDP or SCTP:
1326 0000 0058 00000000 00000397 dnl
1327 000000000000ffffffffffff 000000000000ffffffffffff dnl
1328 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1329 00000000 00 000000 0000000000000000ffffffffffffffff
1331 dnl Ignore tp_dst if not TCP or UDP or SCTP:
1336 0000 0058 00000000 00000357 dnl
1337 000000000000ffffffffffff 000000000000ffffffffffff dnl
1338 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1339 00000000 00 000000 0000000000000000ffffffffffffffff
1341 dnl mpls_label not yet supported:
1342 # bad ofp11_match: OFPBMC_BAD_TAG
1343 0000 0058 00000000 000002f7 dnl
1344 000000000000ffffffffffff 000000000000ffffffffffff dnl
1345 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1346 12345678 00 000000 0000000000000000ffffffffffffffff
1348 dnl mpls_tc not yet supported:
1349 # bad ofp11_match: OFPBMC_BAD_TAG
1350 0000 0058 00000000 000001f7 dnl
1351 000000000000ffffffffffff 000000000000ffffffffffff dnl
1352 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1353 00000000 5a 000000 0000000000000000ffffffffffffffff
1355 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1363 0000 0058 00000000 000000f7 dnl
1364 000000000000ffffffffffff 000000000000ffffffffffff dnl
1365 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1366 12345678 5a 000000 0000000000000000ffffffffffffffff
1369 # metadata=0x1234567890abcdef
1370 0000 0058 00000000 000003ff dnl
1371 000000000000ffffffffffff 000000000000ffffffffffff dnl
1372 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1373 00000000 00 000000 1234567890abcdef0000000000000000
1376 # metadata=0x5555555555555555/0x5555555555555555
1377 0000 0058 00000000 000003ff dnl
1378 000000000000ffffffffffff 000000000000ffffffffffff dnl
1379 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1380 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1383 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1388 0000 0058 00000000 000003ff dnl
1389 000000000000ffffffffffff 000000000000ffffffffffff dnl
1390 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1391 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1394 sed '/^[[#&]]/d' < test-data > input.txt
1395 sed -n 's/^# //p; /^$/p' < test-data > expout
1396 sed -n 's/^& //p' < test-data > experr
1397 AT_CAPTURE_FILE([input.txt])
1398 AT_CAPTURE_FILE([expout])
1399 AT_CAPTURE_FILE([experr])
1401 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1402 [0], [expout], [experr])
1405 AT_SETUP([ovs-ofctl parse-nx-match loose])
1406 AT_KEYWORDS([nx-match])
1407 AT_DATA([nx-match.txt], [dnl
1408 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1411 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1412 nx_pull_match() returned error OFPBMC_BAD_FIELD
1415 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1416 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1420 AT_SETUP([ovs-ofctl parse-oxm])
1422 AT_DATA([oxm.txt], [dnl
1426 OXM_OF_IN_PORT(00000000)
1427 OXM_OF_IN_PORT(fffffffe)
1430 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1431 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1432 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1433 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1434 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1437 OXM_OF_ETH_DST(0002e30f80a4)
1438 OXM_OF_ETH_DST_W(010000000000/010000000000)
1439 OXM_OF_ETH_DST_W(000000000000/010000000000)
1440 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1441 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1442 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1443 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1446 OXM_OF_ETH_SRC(020898456ddb)
1449 OXM_OF_ETH_TYPE(0800)
1450 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1453 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1454 OXM_OF_VLAN_VID(f009) # Bad Value
1455 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1456 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1457 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1458 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1459 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1460 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1461 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1462 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1463 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1464 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1465 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1466 OXM_OF_VLAN_VID_W(1123/0000) # Packets with or without 802.1Q header
1467 OXM_OF_VLAN_VID_W(1123/1f0f), # Packets with # VID=123 (masked)
1468 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1469 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1470 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1473 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1474 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1478 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1479 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1483 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1484 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1485 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1486 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1487 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1488 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1491 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1492 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1493 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1494 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1495 OXM_OF_IPV4_DST(ac100014)
1496 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1499 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1500 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1501 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1502 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1503 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1505 # TCP destination port
1506 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1507 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1508 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1509 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1510 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1513 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1514 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1515 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1516 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1517 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1519 # UDP destination port
1520 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1521 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1522 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1523 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1524 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1527 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1528 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1531 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1532 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1533 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1534 OXM_OF_ICMPV4_CODE(00)
1537 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1538 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1539 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1541 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1543 # ARP source protocol address
1544 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1545 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1546 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1547 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1548 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1549 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1551 # ARP destination protocol address
1552 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1553 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1554 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1555 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1556 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1557 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1559 # ARP source hardware address
1560 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1561 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1562 OXM_OF_ARP_SHA(0002e30f80a4)
1563 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1564 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1565 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1567 # ARP destination hardware address
1568 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1569 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1570 OXM_OF_ARP_THA(0002e30f80a4)
1571 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1572 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1573 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1576 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1577 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1578 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1579 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1580 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1581 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1584 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1585 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1586 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1587 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1588 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1589 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1592 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1593 OXM_OF_IPV6_FLABEL(0000000f)
1594 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1595 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1596 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1597 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1598 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1599 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1600 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1602 # ND source hardware address
1603 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1604 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1605 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1606 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1608 # ND destination hardware address
1609 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1610 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1611 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1612 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1614 # Invalid field number.
1617 AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm < oxm.txt],
1622 OXM_OF_IN_PORT(00000000)
1623 OXM_OF_IN_PORT(fffffffe)
1626 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1627 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1628 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1629 OXM_OF_METADATA(1234567890abcdef)
1633 OXM_OF_ETH_DST(0002e30f80a4)
1634 OXM_OF_ETH_DST_W(010000000000/010000000000)
1635 OXM_OF_ETH_DST_W(000000000000/010000000000)
1636 OXM_OF_ETH_DST_W(010000000000/010000000000)
1637 OXM_OF_ETH_DST(0002e30f80a4)
1639 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1642 OXM_OF_ETH_SRC(020898456ddb)
1645 OXM_OF_ETH_TYPE(0800)
1646 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1649 nx_pull_match() returned error OFPBMC_DUP_FIELD
1650 nx_pull_match() returned error OFPBMC_BAD_VALUE
1651 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1652 OXM_OF_VLAN_VID(0000)
1653 OXM_OF_VLAN_VID(1123)
1654 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1655 OXM_OF_VLAN_VID(0123)
1656 OXM_OF_VLAN_VID_W(0123/0123)
1657 OXM_OF_VLAN_VID_W(0123/0123)
1658 OXM_OF_VLAN_VID_W(0123/1123)
1659 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1660 OXM_OF_VLAN_VID(1123)
1661 OXM_OF_VLAN_VID(1123)
1663 OXM_OF_VLAN_VID_W(1103/1f0f)
1664 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1665 OXM_OF_VLAN_VID_W(1000/1000)
1666 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1669 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1670 nx_pull_match() returned error OFPBMC_BAD_VALUE
1671 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1674 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1675 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1676 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1679 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1680 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1681 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1682 OXM_OF_ETH_TYPE(0800)
1683 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1684 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1687 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1688 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1689 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1690 OXM_OF_ETH_TYPE(0800)
1691 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1692 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1695 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1696 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1697 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1698 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1699 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1701 # TCP destination port
1702 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1703 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1704 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1705 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1706 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1709 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1710 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1711 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1712 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1713 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1715 # UDP destination port
1716 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1717 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1718 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1719 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1720 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1723 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1724 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1727 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1728 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1729 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1730 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1733 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1734 nx_pull_match() returned error OFPBMC_BAD_VALUE
1735 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1736 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1737 nx_pull_match() returned error OFPBMC_DUP_FIELD
1739 # ARP source protocol address
1740 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1741 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1742 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1743 OXM_OF_ETH_TYPE(0806)
1744 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1745 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1747 # ARP destination protocol address
1748 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1749 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1750 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1751 OXM_OF_ETH_TYPE(0806)
1752 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1753 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1755 # ARP source hardware address
1756 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1757 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1758 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1759 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1760 OXM_OF_ETH_TYPE(0806)
1761 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1763 # ARP destination hardware address
1764 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1765 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1766 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1767 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1768 OXM_OF_ETH_TYPE(0806)
1769 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1772 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1773 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1774 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1775 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1776 OXM_OF_ETH_TYPE(86dd)
1777 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1780 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1781 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1782 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1783 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1784 OXM_OF_ETH_TYPE(86dd)
1785 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1788 nx_pull_match() returned error OFPBMC_BAD_VALUE
1789 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1790 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1791 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1792 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1793 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1794 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1795 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1796 OXM_OF_ETH_TYPE(86dd)
1798 # ND source hardware address
1799 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(87), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1800 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1801 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1802 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1804 # ND destination hardware address
1805 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(88), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1806 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1807 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1808 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1810 # Invalid field number.
1811 nx_pull_match() returned error OFPBMC_BAD_FIELD
1814 # Check that at least the first warning made it. (It's rate-limited
1815 # so a variable number could show up, especially under valgrind etc.)
1816 AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
1817 nx_match|WARN|NXM/OXM entry OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000) has 1-bits in value for bits wildcarded by the mask. (Future versions of OVS may report this as an OpenFlow error.)
1820 # Check that there wasn't any other stderr output.
1821 AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
1824 AT_SETUP([ovs-ofctl parse-oxm loose])
1826 AT_DATA([oxm.txt], [dnl
1827 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1830 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1831 nx_pull_match() returned error OFPBMC_BAD_FIELD
1834 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1835 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1839 dnl Check all of the patterns mentioned in the "VLAN Matching" section
1840 dnl in the DESIGN file at top level.
1841 AT_SETUP([ovs-ofctl check-vlan])
1845 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
1847 NXM: <any> -> 0000/0000
1848 OXM: <any> -> 0000/0000,--
1849 OF1.0: 0000/1,00/1 -> 0000/0000
1850 OF1.1: 0000/1,00/1 -> 0000/0000
1854 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
1855 vlan_tci=0x0000 -> 0000/ffff
1856 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
1857 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
1858 OF1.0: ffff/0,00/1 -> 0000/ffff
1859 OF1.1: ffff/0,00/1 -> 0000/ffff
1863 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
1864 dl_vlan=2748 -> 1abc/1fff
1865 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
1866 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
1867 OF1.0: 0abc/0,00/1 -> 1abc/1fff
1868 OF1.1: 0abc/0,00/1 -> 1abc/1fff
1872 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
1873 dl_vlan_pcp=5 -> b000/f000
1874 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
1875 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
1876 OF1.0: 0000/1,05/0 -> b000/f000
1877 OF1.1: fffe/0,05/0 -> b000/f000
1881 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
1882 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
1883 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
1884 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
1885 OF1.0: 0abc/0,05/0 -> babc/ffff
1886 OF1.1: 0abc/0,05/0 -> babc/ffff
1890 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
1891 vlan_tci=0x0000/0x0fff -> 0000/0fff
1892 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
1893 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1894 OF1.0: 0000/0,00/1 -> 1000/1fff
1895 OF1.1: 0000/0,00/1 -> 1000/1fff
1899 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
1900 vlan_tci=0x0000/0xf000 -> 0000/f000
1901 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
1902 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
1903 OF1.0: ffff/0,00/1 -> 0000/ffff
1904 OF1.1: ffff/0,00/1 -> 0000/ffff
1908 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
1909 vlan_tci=0x0000/0xefff -> 0000/efff
1910 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
1911 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1912 OF1.0: 0000/0,00/0 -> 1000/ffff
1913 OF1.1: 0000/0,00/0 -> 1000/ffff
1917 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
1918 vlan_tci=0x1001/0x1001 -> 1001/1001
1919 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
1920 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
1921 OF1.0: 0001/0,00/1 -> 1001/1fff
1922 OF1.1: 0001/0,00/1 -> 1001/1fff
1926 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
1927 vlan_tci=0x3000/0x3000 -> 3000/3000
1928 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
1929 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
1930 OF1.0: 0000/1,01/0 -> 3000/f000
1931 OF1.1: fffe/0,01/0 -> 3000/f000
1936 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
1937 dnl such as tunnels and metadata.
1938 AT_SETUP([ovs-ofctl -F option and NXM features])
1939 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
1940 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
1942 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
1943 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
1947 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1948 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1949 dnl additionally show up as the top 32 bits of the cookie.) This checks
1950 dnl for regression against bug #4566.
1951 AT_SETUP([ovs-ofctl -F option with flow_mods])
1953 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
1954 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
1956 tun_id=0x12345678 actions=drop
1961 dnl Check that "-F openflow10" is really honored on dump-flows.
1962 dnl (If it isn't, then dump-flows will show the register match.)
1963 AT_SETUP([ovs-ofctl dump-flows honors -F option])
1965 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
1966 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
1973 dnl Check that "-F openflow10" fails on dump-flows if the requested match
1974 dnl can't be represented in OpenFlow 1.0.
1975 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
1977 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
1978 [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
1983 dnl Check that add-flow reports non-normalized flows (feature #5029).
1984 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
1986 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1988 ofp_util|INFO|normalization changed ofp_match, details:
1989 ofp_util|INFO| pre: nw_src=1.2.3.4
1990 ofp_util|INFO|post: @&t@
1995 dnl Check that --sort and --rsort works with dump-flows
1996 dnl Default field is 'priority'. Flow entries are displayed based
1997 dnl on field to sort.
1998 AT_SETUP([ovs-ofctl dump-flows with sorting])
2001 AT_DATA([allflows.txt], [[
2002 priority=4,in_port=23213 actions=output:42
2003 priority=5,in_port=1029 actions=output:43
2004 priority=7,in_port=1029 actions=output:43
2005 priority=3,in_port=1028 actions=output:44
2006 priority=1,in_port=1026 actions=output:45
2007 priority=6,in_port=1027 actions=output:64
2008 priority=2,in_port=1025 actions=output:47
2009 priority=8,tcp,tp_src=5 actions=drop
2010 priority=9,tcp,tp_src=6 actions=drop
2013 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2015 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2016 priority=1,in_port=1026 actions=output:45
2017 priority=2,in_port=1025 actions=output:47
2018 priority=3,in_port=1028 actions=output:44
2019 priority=4,in_port=23213 actions=output:42
2020 priority=5,in_port=1029 actions=output:43
2021 priority=6,in_port=1027 actions=output:64
2022 priority=7,in_port=1029 actions=output:43
2023 priority=8,tcp,tp_src=5 actions=drop
2024 priority=9,tcp,tp_src=6 actions=drop
2026 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2027 priority=9,tcp,tp_src=6 actions=drop
2028 priority=8,tcp,tp_src=5 actions=drop
2029 priority=7,in_port=1029 actions=output:43
2030 priority=6,in_port=1027 actions=output:64
2031 priority=5,in_port=1029 actions=output:43
2032 priority=4,in_port=23213 actions=output:42
2033 priority=3,in_port=1028 actions=output:44
2034 priority=2,in_port=1025 actions=output:47
2035 priority=1,in_port=1026 actions=output:45
2037 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2038 priority=2,in_port=1025 actions=output:47
2039 priority=1,in_port=1026 actions=output:45
2040 priority=6,in_port=1027 actions=output:64
2041 priority=3,in_port=1028 actions=output:44
2042 priority=7,in_port=1029 actions=output:43
2043 priority=5,in_port=1029 actions=output:43
2044 priority=4,in_port=23213 actions=output:42
2045 priority=9,tcp,tp_src=6 actions=drop
2046 priority=8,tcp,tp_src=5 actions=drop
2048 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2049 priority=4,in_port=23213 actions=output:42
2050 priority=7,in_port=1029 actions=output:43
2051 priority=5,in_port=1029 actions=output:43
2052 priority=3,in_port=1028 actions=output:44
2053 priority=6,in_port=1027 actions=output:64
2054 priority=1,in_port=1026 actions=output:45
2055 priority=2,in_port=1025 actions=output:47
2056 priority=9,tcp,tp_src=6 actions=drop
2057 priority=8,tcp,tp_src=5 actions=drop
2059 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2060 priority=8,tcp,tp_src=5 actions=drop
2061 priority=9,tcp,tp_src=6 actions=drop
2062 priority=7,in_port=1029 actions=output:43
2063 priority=6,in_port=1027 actions=output:64
2064 priority=5,in_port=1029 actions=output:43
2065 priority=4,in_port=23213 actions=output:42
2066 priority=3,in_port=1028 actions=output:44
2067 priority=2,in_port=1025 actions=output:47
2068 priority=1,in_port=1026 actions=output:45
2071 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2072 [ priority=2,in_port=1025 actions=output:47
2073 priority=1,in_port=1026 actions=output:45
2074 priority=6,in_port=1027 actions=output:64
2075 priority=3,in_port=1028 actions=output:44
2076 priority=7,in_port=1029 actions=output:43
2077 priority=5,in_port=1029 actions=output:43
2078 priority=4,in_port=23213 actions=output:42
2079 priority=8,tcp,tp_src=5 actions=drop
2080 priority=9,tcp,tp_src=6 actions=drop
2085 AT_SETUP([ovs-ofctl diff-flows])
2088 # Add tons of flows to br0.
2089 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2090 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2092 # Dump them and compare against what we expect by hand, then with diff-flows.
2093 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2094 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2096 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2098 # Remove even-numbered flows, compare again.
2099 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2100 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2101 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2102 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2103 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2104 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2109 dnl ofpacts that differ bytewise don't necessarily differ when
2110 dnl converted to another representation, such as OpenFlow 1.0
2111 dnl or to a string. "resubmit(,1)" is an example of an action
2112 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2113 dnl values even though this doesn't affect the string format.
2115 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2116 dnl false ofpacts differences.
2117 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2119 AT_DATA([flows.txt], [actions=resubmit(,1)
2121 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2122 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2123 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2124 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2125 -dl_vlan=9 idle_timeout=60 actions=output:1
2127 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2128 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2129 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2134 AT_SETUP([ovs-ofctl -F and -O interaction])
2135 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2136 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2138 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2139 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow11) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2141 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2142 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10, OpenFlow11) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2144 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2145 [ovs-ofctl: missing command name; use --help for help
2147 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2148 [ovs-ofctl: missing command name; use --help for help
2150 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2151 [ovs-ofctl: missing command name; use --help for help