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