4fa3529ecfe56a96fcddb5a0ac06f16dc0fdc2f5
[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 --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 ])
847 AT_CLEANUP
848
849 AT_SETUP([ovs-ofctl parse-ofp10-match])
850 AT_KEYWORDS([OF1.0])
851 AT_DATA([test-data], [dnl
852 # in_port=65534
853 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
854 xxxxxxxx xxxxxxxx xxxx xxxx
855
856 # dl_src=00:01:02:03:04:05
857 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
858 xxxxxxxx xxxxxxxx xxxx xxxx
859
860 # dl_dst=10:20:30:40:50:60
861 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
862 xxxxxxxx xxxxxxxx xxxx xxxx
863
864 # dl_vlan=291
865 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
866 xxxxxxxx xxxxxxxx xxxx xxxx
867
868 # dl_vlan_pcp=5
869 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
870 xxxxxxxx xxxxxxxx xxxx xxxx
871
872 # dl_vlan=291,dl_vlan_pcp=4
873 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
874 xxxxxxxx xxxxxxxx xxxx xxxx
875
876 # vlan_tci=0x0000
877 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
878 xxxxxxxx xxxxxxxx xxxx xxxx
879
880 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
881 dnl OVS ignores it and drops it on output.
882 # vlan_tci=0x0000
883 #  1: 28 -> 38
884 # 20: 05 -> 00
885 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
886 xxxxxxxx xxxxxxxx xxxx xxxx
887
888 dnl Invalid VID and PCP discards out-of-range bits:
889 # dl_vlan=256,dl_vlan_pcp=7
890 # 18: f1 -> 01
891 # 20: ff -> 07
892 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
893 xxxxxxxx xxxxxxxx xxxx xxxx
894
895 # dl_type=0x1234
896 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
897 xxxxxxxx xxxxxxxx xxxx xxxx
898
899 # ip,nw_proto=5
900 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
901 xxxxxxxx xxxxxxxx xxxx xxxx
902
903 dnl Ignore nw_proto if not IP or ARP:
904 # dl_type=0x1234,nw_proto=5
905 # normal:  3: cf -> ef
906 # normal: 25: 05 -> 00
907 & ofp_util|INFO|normalization changed ofp_match, details:
908 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
909 & ofp_util|INFO|post: dl_type=0x1234
910 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
911 xxxxxxxx xxxxxxxx xxxx xxxx
912
913 # ip,nw_tos=252
914 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
915 xxxxxxxx xxxxxxxx xxxx xxxx
916
917 dnl Ignore nw_tos if not IP:
918 # arp,nw_tos=4
919 # 24: 05 -> 04
920 # normal:  1: 18 -> 38
921 # normal: 24: 04 -> 00
922 & ofp_util|INFO|normalization changed ofp_match, details:
923 & ofp_util|INFO| pre: arp,nw_tos=4
924 & ofp_util|INFO|post: arp
925 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
926 xxxxxxxx xxxxxxxx xxxx xxxx
927
928 dnl Low 2 bits of invalid TOS are forced to 0:
929 # ip,nw_tos=48
930 # 24: 31 -> 30
931 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
932 xxxxxxxx xxxxxxxx xxxx xxxx
933
934 # arp,arp_op=2
935 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
936 xxxxxxxx xxxxxxxx xxxx xxxx
937
938 # ip,nw_src=192.168.128.85
939 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
940 c0a88055 xxxxxxxx xxxx xxxx
941
942 # ip,nw_src=192.168.128.0/24
943 # 31: 55 -> 00
944 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
945 c0a88055 xxxxxxxx xxxx xxxx
946
947 # ip,nw_dst=192.168.128.85
948 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
949 xxxxxxxx c0a88055 xxxx xxxx
950
951 # ip,nw_dst=192.168.128.0/24
952 # 35: 55 -> 00
953 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
954 xxxxxxxx c0a88055 xxxx xxxx
955
956 # arp,arp_spa=192.168.128.85
957 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
958 c0a88055 xxxxxxxx xxxx xxxx
959
960 # arp,arp_spa=192.168.128.0/24
961 # 31: 55 -> 00
962 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
963 c0a88055 xxxxxxxx xxxx xxxx
964
965 # arp,arp_tpa=192.168.128.85
966 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
967 xxxxxxxx c0a88055 xxxx xxxx
968
969 # arp,arp_tpa=192.168.128.0/24
970 # 35: 55 -> 00
971 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
972 xxxxxxxx c0a88055 xxxx xxxx
973
974 dnl Ignore nw_src if not IP or ARP:
975 # dl_type=0x1234,nw_src=192.168.128.0/24
976 # 31: 55 -> 00
977 # normal:  2: 08 -> 20
978 # normal: 28: c0 -> 00
979 # normal: 29: a8 -> 00
980 # normal: 30: 80 -> 00
981 & ofp_util|INFO|normalization changed ofp_match, details:
982 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
983 & ofp_util|INFO|post: dl_type=0x1234
984 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
985 c0a88055 xxxxxxxx xxxx xxxx
986
987 dnl Ignore nw_dst if not IP or ARP:
988 # dl_type=0x1234,nw_dst=192.168.128.0/24
989 # 35: 55 -> 00
990 # normal:  1: 32 -> 38
991 # normal: 32: c0 -> 00
992 # normal: 33: a8 -> 00
993 # normal: 34: 80 -> 00
994 & ofp_util|INFO|normalization changed ofp_match, details:
995 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
996 & ofp_util|INFO|post: dl_type=0x1234
997 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
998 xxxxxxxx c0a88055 xxxx xxxx
999
1000 # tcp,tp_src=443
1001 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1002 xxxxxxxx xxxxxxxx 01bb xxxx
1003
1004 # tcp,tp_dst=443
1005 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1006 xxxxxxxx xxxxxxxx xxxx 01bb
1007
1008 # udp,tp_src=443
1009 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1010 xxxxxxxx xxxxxxxx 01bb xxxx
1011
1012 # udp,tp_dst=443
1013 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1014 xxxxxxxx xxxxxxxx xxxx 01bb
1015
1016 # icmp,icmp_type=5
1017 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1018 xxxxxxxx xxxxxxxx 0005 xxxx
1019
1020 # icmp,icmp_code=8
1021 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1022 xxxxxxxx xxxxxxxx xxxx 0008
1023
1024 dnl Ignore tp_src if not TCP or UDP:
1025 # ip,nw_proto=21,tp_src=443
1026 # normal:  3: 8f -> cf
1027 # normal: 36: 01 -> 00
1028 # normal: 37: bb -> 00
1029 & ofp_util|INFO|normalization changed ofp_match, details:
1030 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1031 & ofp_util|INFO|post: ip,nw_proto=21
1032 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1033 xxxxxxxx xxxxxxxx 01bb xxxx
1034
1035 dnl Ignore tp_dst if not TCP or UDP:
1036 # ip,nw_proto=21,tp_dst=443
1037 # normal:  3: 4f -> cf
1038 # normal: 38: 01 -> 00
1039 # normal: 39: bb -> 00
1040 dnl The normalization details are suppressed here due to rate-limiting.
1041 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1042 xxxxxxxx xxxxxxxx xxxx 01bb
1043
1044 ])
1045 sed '/^[[#&]]/d' < test-data > input.txt
1046 sed -n 's/^# //p; /^$/p' < test-data > expout
1047 sed -n 's/^& //p' < test-data > experr
1048 AT_CAPTURE_FILE([input.txt])
1049 AT_CAPTURE_FILE([expout])
1050 AT_CAPTURE_FILE([experr])
1051 AT_CHECK(
1052   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1053   [0], [expout], [experr])
1054 AT_CLEANUP
1055
1056 AT_SETUP([ovs-ofctl parse-ofp11-match])
1057 AT_KEYWORDS([OF1.1])
1058 AT_DATA([test-data], [dnl
1059 # in_port=65534
1060 0000 0058 fffffffe 000003fe dnl
1061 000000000000ffffffffffff 000000000000ffffffffffff dnl
1062 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1063 00000000 00 000000 0000000000000000ffffffffffffffff
1064
1065 # bad ofp11_match: OFPBMC_BAD_VALUE
1066 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
1067 0000 0058 12345678 000003fe dnl
1068 000000000000ffffffffffff 000000000000ffffffffffff dnl
1069 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1070 00000000 00 000000 0000000000000000ffffffffffffffff
1071
1072 # dl_src=00:01:02:03:04:05
1073 0000 0058 00000000 000003ff dnl
1074 000102030405000000000000 000000000000ffffffffffff dnl
1075 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1076 00000000 00 000000 0000000000000000ffffffffffffffff
1077
1078 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
1079 0000 0058 00000000 000003ff dnl
1080 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
1081 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1082 00000000 00 000000 0000000000000000ffffffffffffffff
1083
1084 # dl_dst=00:01:02:03:04:05
1085 0000 0058 00000000 000003ff dnl
1086 000000000000ffffffffffff 000102030405000000000000 dnl
1087 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1088 00000000 00 000000 0000000000000000ffffffffffffffff
1089
1090 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
1091 0000 0058 00000000 000003ff dnl
1092 000000000000ffffffffffff 010000000000feffffffffff dnl
1093 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1094 00000000 00 000000 0000000000000000ffffffffffffffff
1095
1096 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
1097 0000 0058 00000000 000003ff dnl
1098 000000000000ffffffffffff 000102030405010000000000 dnl
1099 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1100 00000000 00 000000 0000000000000000ffffffffffffffff
1101
1102 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
1103 0000 0058 00000000 000003ff dnl
1104 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
1105 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1106 00000000 00 000000 0000000000000000ffffffffffffffff
1107
1108 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1109 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1110 # in_port=1
1111 # 11: fa -> fe
1112 # 38: 03 -> 00
1113 0000 0058 00000001 000003fa dnl
1114 000000000000ffffffffffff 000000000000ffffffffffff dnl
1115 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1116 00000000 00 000000 0000000000000000ffffffffffffffff
1117
1118 # dl_vlan=291
1119 0000 0058 00000000 000003fd dnl
1120 000000000000ffffffffffff 000000000000ffffffffffff dnl
1121 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1122 00000000 00 000000 0000000000000000ffffffffffffffff
1123
1124 dnl OFPVID_NONE:
1125 # vlan_tci=0x0000
1126 0000 0058 00000000 000003fd dnl
1127 000000000000ffffffffffff 000000000000ffffffffffff dnl
1128 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1129 00000000 00 000000 0000000000000000ffffffffffffffff
1130
1131 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1132 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1133 # vlan_tci=0x0000
1134 # 11: f9 -> fd
1135 # 38: 05 -> 00
1136 0000 0058 00000000 000003f9 dnl
1137 000000000000ffffffffffff 000000000000ffffffffffff dnl
1138 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1139 00000000 00 000000 0000000000000000ffffffffffffffff
1140
1141 # vlan_tci=0x1000/0x1000
1142 0000 0058 00000000 000003fd dnl
1143 000000000000ffffffffffff 000000000000ffffffffffff dnl
1144 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1145 00000000 00 000000 0000000000000000ffffffffffffffff
1146
1147 dnl Try invalid VID:
1148 # bad ofp11_match: OFPBMC_BAD_VALUE
1149 0000 0058 00000000 000003fd dnl
1150 000000000000ffffffffffff 000000000000ffffffffffff dnl
1151 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1152 00000000 00 000000 0000000000000000ffffffffffffffff
1153
1154 # dl_vlan_pcp=4
1155 0000 0058 00000000 000003f9 dnl
1156 000000000000ffffffffffff 000000000000ffffffffffff dnl
1157 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1158 00000000 00 000000 0000000000000000ffffffffffffffff
1159
1160 # dl_vlan=10,dl_vlan_pcp=6
1161 0000 0058 00000000 000003f9 dnl
1162 000000000000ffffffffffff 000000000000ffffffffffff dnl
1163 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1164 00000000 00 000000 0000000000000000ffffffffffffffff
1165
1166 # dl_type=0x1234
1167 0000 0058 00000000 000003f7 dnl
1168 000000000000ffffffffffff 000000000000ffffffffffff dnl
1169 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1170 00000000 00 000000 0000000000000000ffffffffffffffff
1171
1172 # ip,nw_tos=252
1173 0000 0058 00000000 000003e7 dnl
1174 000000000000ffffffffffff 000000000000ffffffffffff dnl
1175 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1176 00000000 00 000000 0000000000000000ffffffffffffffff
1177
1178 dnl Try invalid TOS:
1179 # bad ofp11_match: OFPBMC_BAD_VALUE
1180 0000 0058 00000000 000003e7 dnl
1181 000000000000ffffffffffff 000000000000ffffffffffff dnl
1182 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1183 00000000 00 000000 0000000000000000ffffffffffffffff
1184
1185 # ip,nw_proto=5
1186 0000 0058 00000000 000003d7 dnl
1187 000000000000ffffffffffff 000000000000ffffffffffff dnl
1188 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1189 00000000 00 000000 0000000000000000ffffffffffffffff
1190
1191 # arp,arp_op=2
1192 0000 0058 00000000 000003d7 dnl
1193 000000000000ffffffffffff 000000000000ffffffffffff dnl
1194 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1195 00000000 00 000000 0000000000000000ffffffffffffffff
1196
1197 # ip,nw_src=192.168.128.0/24
1198 0000 0058 00000000 000003f7 dnl
1199 000000000000ffffffffffff 000000000000ffffffffffff dnl
1200 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1201 00000000 00 000000 0000000000000000ffffffffffffffff
1202
1203 # ip,nw_src=128.160.128.0/165.165.165.165
1204 # 44: c0 -> 80
1205 # 45: a8 -> a0
1206 0000 0058 00000000 000003f7 dnl
1207 000000000000ffffffffffff 000000000000ffffffffffff dnl
1208 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1209 00000000 00 000000 0000000000000000ffffffffffffffff
1210
1211 # ip,nw_dst=192.168.128.0/24
1212 0000 0058 00000000 000003f7 dnl
1213 000000000000ffffffffffff 000000000000ffffffffffff dnl
1214 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1215 00000000 00 000000 0000000000000000ffffffffffffffff
1216
1217 # ip,nw_dst=128.160.128.0/165.165.165.165
1218 # 52: c0 -> 80
1219 # 53: a8 -> a0
1220 0000 0058 00000000 000003f7 dnl
1221 000000000000ffffffffffff 000000000000ffffffffffff dnl
1222 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1223 00000000 00 000000 0000000000000000ffffffffffffffff
1224
1225 # arp,arp_spa=192.168.128.0/24
1226 0000 0058 00000000 000003f7 dnl
1227 000000000000ffffffffffff 000000000000ffffffffffff dnl
1228 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1229 00000000 00 000000 0000000000000000ffffffffffffffff
1230
1231 # arp,arp_tpa=192.168.128.0/24
1232 0000 0058 00000000 000003f7 dnl
1233 000000000000ffffffffffff 000000000000ffffffffffff dnl
1234 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1235 00000000 00 000000 0000000000000000ffffffffffffffff
1236
1237 # tcp,tp_src=443
1238 0000 0058 00000000 00000397 dnl
1239 000000000000ffffffffffff 000000000000ffffffffffff dnl
1240 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1241 00000000 00 000000 0000000000000000ffffffffffffffff
1242
1243 # tcp,tp_dst=443
1244 0000 0058 00000000 00000357 dnl
1245 000000000000ffffffffffff 000000000000ffffffffffff dnl
1246 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1247 00000000 00 000000 0000000000000000ffffffffffffffff
1248
1249 # udp,tp_src=443
1250 0000 0058 00000000 00000397 dnl
1251 000000000000ffffffffffff 000000000000ffffffffffff dnl
1252 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1253 00000000 00 000000 0000000000000000ffffffffffffffff
1254
1255 # icmp,icmp_type=5
1256 0000 0058 00000000 00000397 dnl
1257 000000000000ffffffffffff 000000000000ffffffffffff dnl
1258 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1259 00000000 00 000000 0000000000000000ffffffffffffffff
1260
1261 # icmp,icmp_code=8
1262 0000 0058 00000000 00000357 dnl
1263 000000000000ffffffffffff 000000000000ffffffffffff dnl
1264 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1265 00000000 00 000000 0000000000000000ffffffffffffffff
1266
1267 # udp,tp_src=443
1268 0000 0058 00000000 00000397 dnl
1269 000000000000ffffffffffff 000000000000ffffffffffff dnl
1270 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1271 00000000 00 000000 0000000000000000ffffffffffffffff
1272
1273 # udp,tp_dst=443
1274 0000 0058 00000000 00000357 dnl
1275 000000000000ffffffffffff 000000000000ffffffffffff dnl
1276 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1277 00000000 00 000000 0000000000000000ffffffffffffffff
1278
1279 dnl SCTP, no ports.
1280 # ip,nw_proto=132
1281 0000 0058 00000000 000003d7 dnl
1282 000000000000ffffffffffff 000000000000ffffffffffff dnl
1283 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1284 00000000 00 000000 0000000000000000ffffffffffffffff
1285
1286 dnl SCTP tp_src matching not supported:
1287 # bad ofp11_match: OFPBMC_BAD_FIELD
1288 0000 0058 00000000 00000397 dnl
1289 000000000000ffffffffffff 000000000000ffffffffffff dnl
1290 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1291 00000000 00 000000 0000000000000000ffffffffffffffff
1292
1293 dnl SCTP tp_dst matching not supported:
1294 # bad ofp11_match: OFPBMC_BAD_FIELD
1295 0000 0058 00000000 00000357 dnl
1296 000000000000ffffffffffff 000000000000ffffffffffff dnl
1297 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1298 00000000 00 000000 0000000000000000ffffffffffffffff
1299
1300 dnl Ignore tp_src if not TCP or UDP or SCTP:
1301 # ip,nw_proto=21
1302 # 11: 97 -> d7
1303 # 60: 01 -> 00
1304 # 61: bb -> 00
1305 0000 0058 00000000 00000397 dnl
1306 000000000000ffffffffffff 000000000000ffffffffffff dnl
1307 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1308 00000000 00 000000 0000000000000000ffffffffffffffff
1309
1310 dnl Ignore tp_dst if not TCP or UDP or SCTP:
1311 # ip,nw_proto=22
1312 # 11: 57 -> d7
1313 # 62: 01 -> 00
1314 # 63: bb -> 00
1315 0000 0058 00000000 00000357 dnl
1316 000000000000ffffffffffff 000000000000ffffffffffff dnl
1317 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1318 00000000 00 000000 0000000000000000ffffffffffffffff
1319
1320 dnl mpls_label not yet supported:
1321 # bad ofp11_match: OFPBMC_BAD_TAG
1322 0000 0058 00000000 000002f7 dnl
1323 000000000000ffffffffffff 000000000000ffffffffffff dnl
1324 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1325 12345678 00 000000 0000000000000000ffffffffffffffff
1326
1327 dnl mpls_tc not yet supported:
1328 # bad ofp11_match: OFPBMC_BAD_TAG
1329 0000 0058 00000000 000001f7 dnl
1330 000000000000ffffffffffff 000000000000ffffffffffff dnl
1331 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1332 00000000 5a 000000 0000000000000000ffffffffffffffff
1333
1334 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1335 # dl_type=0x1234
1336 # 10: 00 -> 03
1337 # 64: 12 -> 00
1338 # 65: 34 -> 00
1339 # 66: 56 -> 00
1340 # 67: 78 -> 00
1341 # 68: 5a -> 00
1342 0000 0058 00000000 000000f7 dnl
1343 000000000000ffffffffffff 000000000000ffffffffffff dnl
1344 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1345 12345678 5a 000000 0000000000000000ffffffffffffffff
1346
1347 dnl metadata match:
1348 # metadata=0x1234567890abcdef
1349 0000 0058 00000000 000003ff dnl
1350 000000000000ffffffffffff 000000000000ffffffffffff dnl
1351 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1352 00000000 00 000000 1234567890abcdef0000000000000000
1353
1354 dnl metadata match:
1355 # metadata=0x5555555555555555/0x5555555555555555
1356 0000 0058 00000000 000003ff dnl
1357 000000000000ffffffffffff 000000000000ffffffffffff dnl
1358 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1359 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1360
1361 dnl metadata match:
1362 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1363 # 74: 56 -> 00
1364 # 75: 78 -> 00
1365 # 78: cd -> 00
1366 # 79: ef -> 00
1367 0000 0058 00000000 000003ff dnl
1368 000000000000ffffffffffff 000000000000ffffffffffff dnl
1369 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1370 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1371
1372 ])
1373 sed '/^[[#&]]/d' < test-data > input.txt
1374 sed -n 's/^# //p; /^$/p' < test-data > expout
1375 sed -n 's/^& //p' < test-data > experr
1376 AT_CAPTURE_FILE([input.txt])
1377 AT_CAPTURE_FILE([expout])
1378 AT_CAPTURE_FILE([experr])
1379 AT_CHECK(
1380   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1381   [0], [expout], [experr])
1382 AT_CLEANUP
1383
1384 AT_SETUP([ovs-ofctl parse-nx-match loose])
1385 AT_KEYWORDS([nx-match])
1386 AT_DATA([nx-match.txt], [dnl
1387 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1388 ])
1389
1390 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1391 nx_pull_match() returned error OFPBMC_BAD_FIELD
1392 ])
1393
1394 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1395 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1396 ])
1397 AT_CLEANUP
1398
1399 AT_SETUP([ovs-ofctl parse-oxm])
1400 AT_KEYWORDS([oxm])
1401 AT_DATA([oxm.txt], [dnl
1402 <any>
1403
1404 # in port
1405 OXM_OF_IN_PORT(00000000)
1406 OXM_OF_IN_PORT(fffffffe)
1407
1408 # metadata
1409 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1410 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1411 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1412 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1413 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1414
1415 # eth dst
1416 OXM_OF_ETH_DST(0002e30f80a4)
1417 OXM_OF_ETH_DST_W(010000000000/010000000000)
1418 OXM_OF_ETH_DST_W(000000000000/010000000000)
1419 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1420 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1421 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1422 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1423
1424 # eth src
1425 OXM_OF_ETH_SRC(020898456ddb)
1426
1427 # eth type
1428 OXM_OF_ETH_TYPE(0800)
1429 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1430
1431 # vlan
1432 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1433 OXM_OF_VLAN_VID(f009)           # Bad Value
1434 OXM_OF_VLAN_PCP(00)             # Bad Pre-Requisite
1435 OXM_OF_VLAN_VID(0000)           # Packets without 802.1Q header or with VID=0
1436 OXM_OF_VLAN_VID(1123)           # Packets with VID=123, any PCP
1437 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1438 OXM_OF_VLAN_VID(0123)           # Does not make sense (but supported anyway)
1439 OXM_OF_VLAN_VID_W(0123/0123)      # Does not make sense (but supported anyway)
1440 OXM_OF_VLAN_VID_W(1123/0123)      # Does not make sense (but supported anyway)
1441 OXM_OF_VLAN_VID_W(0123/1123)      # Does not make sense (but supported anyway)
1442 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01)  #Bad Pre-Requisite
1443 OXM_OF_VLAN_VID_W(1123/1fff)    # Packets with VID=123, any PCP.
1444 OXM_OF_VLAN_VID_W(1123/ffff)    # Packets with VID=123, any PCP.
1445 OXM_OF_VLAN_VID_W(1123/0000)    # Packets with or without 802.1Q header
1446 OXM_OF_VLAN_VID_W(1123/1f0f),   # Packets with # VID=123 (masked)
1447 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01)  # Packets with VID=123 (masked), any PCP.
1448 OXM_OF_VLAN_VID_W(1000/1000)    # Packets with any VID, any PCP
1449 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)  # Packets with any VID, PCP=1.
1450
1451 # IP ECN
1452 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1453 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1454 OXM_OF_IP_ECN(03)
1455
1456 # IP protocol
1457 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1458 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1459 OXM_OF_IP_PROTO(05)
1460
1461 # IP source
1462 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1463 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1464 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1465 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1466 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1467 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1468
1469 # IP destination
1470 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1471 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1472 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1473 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1474 OXM_OF_IPV4_DST(ac100014)
1475 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1476
1477 # TCP source port
1478 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1479 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1480 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1481 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1482 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1483
1484 # TCP destination port
1485 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1486 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1487 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1488 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1489 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1490
1491 # UDP source port
1492 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1493 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1494 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1495 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1496 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1497
1498 # UDP destination port
1499 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1500 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1501 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1502 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1503 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1504
1505 # ICMP type
1506 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1507 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1508
1509 # ICMP code
1510 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1511 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1512 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1513 OXM_OF_ICMPV4_CODE(00)
1514
1515 # ARP opcode
1516 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1517 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1518 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1519 OXM_OF_ARP_OP(0001)
1520 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1521
1522 # ARP source protocol address
1523 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1524 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1525 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1526 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1527 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1528 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1529
1530 # ARP destination protocol address
1531 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1532 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1533 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1534 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1535 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1536 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1537
1538 # ARP source hardware address
1539 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1540 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1541 OXM_OF_ARP_SHA(0002e30f80a4)
1542 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1543 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1544 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1545
1546 # ARP destination hardware address
1547 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1548 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1549 OXM_OF_ARP_THA(0002e30f80a4)
1550 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1551 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1552 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1553
1554 # IPv6 source
1555 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1556 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1557 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1558 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1559 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1560 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1561
1562 # IPv6 destination
1563 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1564 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1565 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1566 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1567 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1568 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1569
1570 # IPv6 Flow Label
1571 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1572 OXM_OF_IPV6_FLABEL(0000000f)
1573 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1574 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1575 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1576 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1577 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1578 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1579 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1580
1581 # ND source hardware address
1582 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)
1583 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)
1584 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)
1585 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)
1586
1587 # ND destination hardware address
1588 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)
1589 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)
1590 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)
1591 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)
1592
1593 # Invalid field number.
1594 01020304(1111/2222)
1595 ])
1596 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1597 <any>
1598
1599 # in port
1600 OXM_OF_IN_PORT(00000000)
1601 OXM_OF_IN_PORT(fffffffe)
1602
1603 # metadata
1604 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1605 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1606 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1607 OXM_OF_METADATA(1234567890abcdef)
1608 <any>
1609
1610 # eth dst
1611 OXM_OF_ETH_DST(0002e30f80a4)
1612 OXM_OF_ETH_DST_W(010000000000/010000000000)
1613 OXM_OF_ETH_DST_W(000000000000/010000000000)
1614 OXM_OF_ETH_DST_W(010000000000/010000000000)
1615 OXM_OF_ETH_DST(0002e30f80a4)
1616 <any>
1617 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1618
1619 # eth src
1620 OXM_OF_ETH_SRC(020898456ddb)
1621
1622 # eth type
1623 OXM_OF_ETH_TYPE(0800)
1624 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1625
1626 # vlan
1627 nx_pull_match() returned error OFPBMC_DUP_FIELD
1628 nx_pull_match() returned error OFPBMC_BAD_VALUE
1629 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1630 OXM_OF_VLAN_VID(0000)
1631 OXM_OF_VLAN_VID(1123)
1632 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1633 OXM_OF_VLAN_VID(0123)
1634 OXM_OF_VLAN_VID_W(0123/0123)
1635 OXM_OF_VLAN_VID_W(0123/0123)
1636 OXM_OF_VLAN_VID_W(0123/1123)
1637 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1638 OXM_OF_VLAN_VID(1123)
1639 OXM_OF_VLAN_VID(1123)
1640 <any>
1641 OXM_OF_VLAN_VID_W(1103/1f0f)
1642 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1643 OXM_OF_VLAN_VID_W(1000/1000)
1644 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1645
1646 # IP ECN
1647 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1648 nx_pull_match() returned error OFPBMC_BAD_VALUE
1649 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1650
1651 # IP protocol
1652 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1653 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1654 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1655
1656 # IP source
1657 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1658 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1659 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1660 OXM_OF_ETH_TYPE(0800)
1661 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1662 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1663
1664 # IP destination
1665 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1666 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1667 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1668 OXM_OF_ETH_TYPE(0800)
1669 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1670 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1671
1672 # TCP source port
1673 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1674 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1675 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1676 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1677 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1678
1679 # TCP destination port
1680 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1681 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1682 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1683 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1684 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1685
1686 # UDP source port
1687 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1688 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1689 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1690 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1691 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1692
1693 # UDP destination port
1694 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1695 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1696 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1697 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1698 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1699
1700 # ICMP type
1701 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1702 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1703
1704 # ICMP code
1705 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1706 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1707 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1708 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1709
1710 # ARP opcode
1711 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1712 nx_pull_match() returned error OFPBMC_BAD_VALUE
1713 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1714 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1715 nx_pull_match() returned error OFPBMC_DUP_FIELD
1716
1717 # ARP source protocol address
1718 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1719 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1720 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1721 OXM_OF_ETH_TYPE(0806)
1722 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1723 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1724
1725 # ARP destination protocol address
1726 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1727 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1728 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1729 OXM_OF_ETH_TYPE(0806)
1730 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1731 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1732
1733 # ARP source hardware address
1734 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1735 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1736 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1737 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1738 OXM_OF_ETH_TYPE(0806)
1739 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1740
1741 # ARP destination hardware address
1742 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1743 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1744 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1745 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1746 OXM_OF_ETH_TYPE(0806)
1747 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1748
1749 # IPv6 source
1750 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1751 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1752 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1753 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1754 OXM_OF_ETH_TYPE(86dd)
1755 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1756
1757 # IPv6 destination
1758 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1759 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1760 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1761 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1762 OXM_OF_ETH_TYPE(86dd)
1763 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1764
1765 # IPv6 Flow Label
1766 nx_pull_match() returned error OFPBMC_BAD_VALUE
1767 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1768 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1769 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1770 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1771 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1772 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1773 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1774 OXM_OF_ETH_TYPE(86dd)
1775
1776 # ND source hardware address
1777 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)
1778 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1779 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1780 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1781
1782 # ND destination hardware address
1783 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)
1784 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1785 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1786 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1787
1788 # Invalid field number.
1789 nx_pull_match() returned error OFPBMC_BAD_FIELD
1790 ])
1791 AT_CLEANUP
1792
1793 AT_SETUP([ovs-ofctl parse-oxm loose])
1794 AT_KEYWORDS([oxm])
1795 AT_DATA([oxm.txt], [dnl
1796 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1797 ])
1798
1799 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1800 nx_pull_match() returned error OFPBMC_BAD_FIELD
1801 ])
1802
1803 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1804 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1805 ])
1806 AT_CLEANUP
1807
1808 dnl Check all of the patterns mentioned in the "VLAN Matching" section
1809 dnl in the DESIGN file at top level.
1810 AT_SETUP([ovs-ofctl check-vlan])
1811 AT_KEYWORDS([VLAN])
1812
1813 dnl [1]
1814 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
1815  -> 0000/0000
1816 NXM: <any> -> 0000/0000
1817 OXM: <any> -> 0000/0000,--
1818 OF1.0: 0000/1,00/1 -> 0000/0000
1819 OF1.1: 0000/1,00/1 -> 0000/0000
1820 ])
1821
1822 dnl [2]
1823 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
1824 vlan_tci=0x0000 -> 0000/ffff
1825 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
1826 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
1827 OF1.0: ffff/0,00/1 -> 0000/ffff
1828 OF1.1: ffff/0,00/1 -> 0000/ffff
1829 ])
1830
1831 dnl [3]
1832 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
1833 dl_vlan=2748 -> 1abc/1fff
1834 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
1835 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
1836 OF1.0: 0abc/0,00/1 -> 1abc/1fff
1837 OF1.1: 0abc/0,00/1 -> 1abc/1fff
1838 ])
1839
1840 dnl [4]
1841 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
1842 dl_vlan_pcp=5 -> b000/f000
1843 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
1844 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
1845 OF1.0: 0000/1,05/0 -> b000/f000
1846 OF1.1: fffe/0,05/0 -> b000/f000
1847 ])
1848
1849 dnl [5]
1850 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
1851 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
1852 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
1853 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
1854 OF1.0: 0abc/0,05/0 -> babc/ffff
1855 OF1.1: 0abc/0,05/0 -> babc/ffff
1856 ])
1857
1858 dnl [6]
1859 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
1860 vlan_tci=0x0000/0x0fff -> 0000/0fff
1861 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
1862 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1863 OF1.0: 0000/0,00/1 -> 1000/1fff
1864 OF1.1: 0000/0,00/1 -> 1000/1fff
1865 ])
1866
1867 dnl [7]
1868 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
1869 vlan_tci=0x0000/0xf000 -> 0000/f000
1870 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
1871 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
1872 OF1.0: ffff/0,00/1 -> 0000/ffff
1873 OF1.1: ffff/0,00/1 -> 0000/ffff
1874 ])
1875
1876 dnl [8]
1877 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
1878 vlan_tci=0x0000/0xefff -> 0000/efff
1879 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
1880 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1881 OF1.0: 0000/0,00/0 -> 1000/ffff
1882 OF1.1: 0000/0,00/0 -> 1000/ffff
1883 ])
1884
1885 dnl [9]
1886 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
1887 vlan_tci=0x1001/0x1001 -> 1001/1001
1888 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
1889 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
1890 OF1.0: 0001/0,00/1 -> 1001/1fff
1891 OF1.1: 0001/0,00/1 -> 1001/1fff
1892 ])
1893
1894 dnl [10]
1895 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
1896 vlan_tci=0x3000/0x3000 -> 3000/3000
1897 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
1898 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
1899 OF1.0: 0000/1,01/0 -> 3000/f000
1900 OF1.1: fffe/0,01/0 -> 3000/f000
1901 ])
1902 AT_CHECK
1903 AT_CLEANUP
1904
1905 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
1906 dnl such as tunnels and metadata.
1907 AT_SETUP([ovs-ofctl -F option and NXM features])
1908 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
1909   [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
1910 ])
1911 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
1912   [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
1913 ])
1914 AT_CLEANUP
1915
1916 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1917 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1918 dnl additionally show up as the top 32 bits of the cookie.)  This checks
1919 dnl for regression against bug #4566.
1920 AT_SETUP([ovs-ofctl -F option with flow_mods])
1921 OVS_VSWITCHD_START
1922 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
1923 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
1924 NXST_FLOW reply:
1925  tun_id=0x12345678 actions=drop
1926 ])
1927 OVS_VSWITCHD_STOP
1928 AT_CLEANUP
1929
1930 dnl Check that "-F openflow10" is really honored on dump-flows.
1931 dnl (If it isn't, then dump-flows will show the register match.)
1932 AT_SETUP([ovs-ofctl dump-flows honors -F option])
1933 OVS_VSWITCHD_START
1934 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
1935 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
1936 OFPST_FLOW reply:
1937  actions=drop
1938 ])
1939 OVS_VSWITCHD_STOP
1940 AT_CLEANUP
1941
1942 dnl Check that "-F openflow10" fails on dump-flows if the requested match
1943 dnl can't be represented in OpenFlow 1.0.
1944 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
1945 OVS_VSWITCHD_START
1946 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
1947   [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
1948 ])
1949 OVS_VSWITCHD_STOP
1950 AT_CLEANUP
1951
1952 dnl Check that add-flow reports non-normalized flows (feature #5029).
1953 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
1954 OVS_VSWITCHD_START
1955 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1956   [0], [], [dnl
1957 ofp_util|INFO|normalization changed ofp_match, details:
1958 ofp_util|INFO| pre: nw_src=1.2.3.4
1959 ofp_util|INFO|post: @&t@
1960 ])
1961 OVS_VSWITCHD_STOP
1962 AT_CLEANUP
1963
1964 dnl Check that --sort and --rsort works with dump-flows
1965 dnl Default field is 'priority'. Flow entries are displayed based
1966 dnl on field to sort.
1967 AT_SETUP([ovs-ofctl dump-flows with sorting])
1968 OVS_VSWITCHD_START
1969 AT_KEYWORDS([sort])
1970 AT_DATA([allflows.txt], [[
1971 priority=4,in_port=23213 actions=output:42
1972 priority=5,in_port=1029 actions=output:43
1973 priority=7,in_port=1029 actions=output:43
1974 priority=3,in_port=1028 actions=output:44
1975 priority=1,in_port=1026 actions=output:45
1976 priority=6,in_port=1027 actions=output:64
1977 priority=2,in_port=1025 actions=output:47
1978 priority=8,tcp,tp_src=5 actions=drop
1979 priority=9,tcp,tp_src=6 actions=drop
1980 ]])
1981
1982 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
1983 ], [0], [ignore])
1984 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
1985  priority=1,in_port=1026 actions=output:45
1986  priority=2,in_port=1025 actions=output:47
1987  priority=3,in_port=1028 actions=output:44
1988  priority=4,in_port=23213 actions=output:42
1989  priority=5,in_port=1029 actions=output:43
1990  priority=6,in_port=1027 actions=output:64
1991  priority=7,in_port=1029 actions=output:43
1992  priority=8,tcp,tp_src=5 actions=drop
1993  priority=9,tcp,tp_src=6 actions=drop
1994 ])
1995 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
1996  priority=9,tcp,tp_src=6 actions=drop
1997  priority=8,tcp,tp_src=5 actions=drop
1998  priority=7,in_port=1029 actions=output:43
1999  priority=6,in_port=1027 actions=output:64
2000  priority=5,in_port=1029 actions=output:43
2001  priority=4,in_port=23213 actions=output:42
2002  priority=3,in_port=1028 actions=output:44
2003  priority=2,in_port=1025 actions=output:47
2004  priority=1,in_port=1026 actions=output:45
2005 ])
2006 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2007  priority=2,in_port=1025 actions=output:47
2008  priority=1,in_port=1026 actions=output:45
2009  priority=6,in_port=1027 actions=output:64
2010  priority=3,in_port=1028 actions=output:44
2011  priority=7,in_port=1029 actions=output:43
2012  priority=5,in_port=1029 actions=output:43
2013  priority=4,in_port=23213 actions=output:42
2014  priority=9,tcp,tp_src=6 actions=drop
2015  priority=8,tcp,tp_src=5 actions=drop
2016 ])
2017 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2018  priority=4,in_port=23213 actions=output:42
2019  priority=7,in_port=1029 actions=output:43
2020  priority=5,in_port=1029 actions=output:43
2021  priority=3,in_port=1028 actions=output:44
2022  priority=6,in_port=1027 actions=output:64
2023  priority=1,in_port=1026 actions=output:45
2024  priority=2,in_port=1025 actions=output:47
2025  priority=9,tcp,tp_src=6 actions=drop
2026  priority=8,tcp,tp_src=5 actions=drop
2027 ])
2028 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2029  priority=8,tcp,tp_src=5 actions=drop
2030  priority=9,tcp,tp_src=6 actions=drop
2031  priority=7,in_port=1029 actions=output:43
2032  priority=6,in_port=1027 actions=output:64
2033  priority=5,in_port=1029 actions=output:43
2034  priority=4,in_port=23213 actions=output:42
2035  priority=3,in_port=1028 actions=output:44
2036  priority=2,in_port=1025 actions=output:47
2037  priority=1,in_port=1026 actions=output:45
2038 ])
2039 AT_CHECK(
2040   [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2041   [ priority=2,in_port=1025 actions=output:47
2042  priority=1,in_port=1026 actions=output:45
2043  priority=6,in_port=1027 actions=output:64
2044  priority=3,in_port=1028 actions=output:44
2045  priority=7,in_port=1029 actions=output:43
2046  priority=5,in_port=1029 actions=output:43
2047  priority=4,in_port=23213 actions=output:42
2048  priority=8,tcp,tp_src=5 actions=drop
2049  priority=9,tcp,tp_src=6 actions=drop
2050 ])
2051 OVS_VSWITCHD_STOP
2052 AT_CLEANUP
2053
2054 AT_SETUP([ovs-ofctl diff-flows])
2055 OVS_VSWITCHD_START
2056
2057 # Add tons of flows to br0.
2058 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2059 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2060
2061 # Dump them and compare against what we expect by hand, then with diff-flows.
2062 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2063 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2064   [0], [expout])
2065 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2066
2067 # Remove even-numbered flows, compare again.
2068 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2069 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2070 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2071 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2072 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2073 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2074
2075 OVS_VSWITCHD_STOP
2076 AT_CLEANUP
2077
2078 dnl ofpacts that differ bytewise don't necessarily differ when
2079 dnl converted to another representation, such as OpenFlow 1.0
2080 dnl or to a string.  "resubmit(,1)" is an example of an action
2081 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2082 dnl values even though this doesn't affect the string format.
2083 dnl
2084 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2085 dnl false ofpacts differences.
2086 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2087 OVS_VSWITCHD_START
2088 AT_DATA([flows.txt], [actions=resubmit(,1)
2089 ])
2090 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2091 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2092 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2093 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2094 -dl_vlan=9 idle_timeout=60 actions=output:1
2095 ])
2096 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2097 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2098 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2099 ])
2100 OVS_VSWITCHD_STOP
2101 AT_CLEANUP
2102
2103 AT_SETUP([ovs-ofctl -F and -O interaction])
2104 AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2105   [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.)
2106 ])
2107 AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2108   [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.)
2109 ])
2110 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2111   [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.)
2112 ])
2113 AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2114  [ovs-ofctl: missing command name; use --help for help
2115 ])
2116 AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2117   [ovs-ofctl: missing command name; use --help for help
2118 ])
2119 AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2120   [ovs-ofctl: missing command name; use --help for help
2121 ])
2122 AT_CLEANUP