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