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