FAQ: Add FAQ entries from website.
[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 ]])
14
15 AT_CHECK([ovs-ofctl parse-flows flows.txt
16 ], [0], [stdout])
17 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
18 [[usable protocols: any
19 chosen protocol: OpenFlow10-table_id
20 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
21 OFPT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
22 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
23 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
24 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
25 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
26 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
27 ]])
28 AT_CLEANUP
29
30 AT_SETUP([ovs-ofctl parse-flows (NXM)])
31 AT_DATA([flows.txt], [[
32 # comment
33 tcp,tp_src=123,actions=flood
34 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
35 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
36 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
37 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
38 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
39 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
40 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
41 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
42 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])
43 table=1,actions=drop
44 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
45 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
46 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
47 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
48 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
49 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
50 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
51 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
52 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
53 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
54 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
55 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
56 check_overlap,actions=output:1,exit,output:2
57 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
58 actions=controller(max_len=123,reason=invalid_ttl,id=555)
59 ]])
60
61 AT_CHECK([ovs-ofctl parse-flows flows.txt
62 ], [0], [stdout])
63 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
64 [[usable protocols: NXM+table_id
65 chosen protocol: NXM+table_id
66 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
67 NXT_FLOW_MOD: ADD table:255 in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
68 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
69 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
70 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
71 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
72 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
73 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
74 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
75 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])
76 NXT_FLOW_MOD: ADD table:1 actions=drop
77 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
78 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
79 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
80 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
81 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
82 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
83 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
84 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
85 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
86 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
87 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
88 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
89 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
90 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
91 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
92 ]])
93 AT_CLEANUP
94
95 AT_SETUP([ovs-ofctl -F nxm parse-flows])
96 AT_DATA([flows.txt], [
97 # comment
98 tcp,tp_src=123,actions=flood
99 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
100 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
101 ipv6,ipv6_label=0x12345 actions=2
102 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
103 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
104 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
105 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop 
106 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop 
107 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
108 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
109 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
110 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
111 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
112 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
113 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
114 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
115 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
116 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
117 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
118 tun_id=0x1234,cookie=0x5678,actions=flood
119 actions=drop
120 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
121 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
122 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
123 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
124 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
125 ])
126 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
127 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
128 usable protocols: NXM
129 chosen protocol: NXM-table_id
130 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
131 NXT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
132 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
133 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
134 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
135 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
136 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
137 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
138 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
139 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
140 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
141 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
142 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
143 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
144 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
145 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
146 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
147 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
148 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
149 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
150 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
151 NXT_FLOW_MOD: ADD actions=drop
152 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
153 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
154 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
155 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
156 NXT_FLOW_MOD: ADD actions=drop
157 ])
158 AT_CLEANUP
159
160 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
161 AT_DATA([flows.txt], [[
162 # comment
163 tcp,tp_src=123,actions=flood
164 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
165 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
166 ipv6,ipv6_label=0x12345 actions=2
167 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
168 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
169 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
170 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop 
171 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop 
172 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
173 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
174 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
175 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
176 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
177 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
178 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
179 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
180 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
181 tun_id=0x1234,cookie=0x5678,actions=flood
182 actions=drop
183 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[]
184 actions=autopath(5,NXM_NX_REG0[])
185 vlan_tci=0x1123/0x1fff,actions=drop
186 ]])
187 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout])
188 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
189 [[usable protocols: NXM
190 chosen protocol: NXM-table_id
191 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
192 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
193 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
194 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
195 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
196 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
197 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
208 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
209 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
210 NXT_FLOW_MOD: ADD <any> actions=drop
211 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[]
212 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
213 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
214 ]])
215 AT_CLEANUP
216
217 AT_SETUP([ovs-ofctl parse-nx-match])
218 AT_KEYWORDS([nx-match])
219 AT_DATA([nx-match.txt], [dnl
220 <any>
221
222 # in port
223 NXM_OF_IN_PORT(0000)
224 NXM_OF_IN_PORT(fffe)
225
226 # eth dst
227 NXM_OF_ETH_DST(0002e30f80a4)
228 NXM_OF_ETH_DST_W(010000000000/010000000000)
229 NXM_OF_ETH_DST_W(000000000000/010000000000)
230 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
231 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
232 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
233 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
234
235 # eth src
236 NXM_OF_ETH_SRC(020898456ddb)
237 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
238 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
239
240 # eth type
241 NXM_OF_ETH_TYPE(0800)
242 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
243
244 # vlan tci
245 NXM_OF_VLAN_TCI(f009)
246 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
247 NXM_OF_VLAN_TCI(0000)           # Packets without 802.1Q header.
248 NXM_OF_VLAN_TCI(3123)           # Packets with VID=123, PCP=1.
249 NXM_OF_VLAN_TCI(0123)           # Does not make sense (but supported anyway)
250 NXM_OF_VLAN_TCI_W(1123/1fff)    # Packets with VID=123, any PCP.
251 NXM_OF_VLAN_TCI_W(f000/f000)    # Packets with any VID, PCP=7.
252 NXM_OF_VLAN_TCI_W(0000/e000)    # No 802.1Q or with VID=0
253
254 # IP TOS
255 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
256 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
257 NXM_OF_IP_TOS(f0)
258
259 # IP ECN
260 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
261 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
262 NXM_NX_IP_ECN(03)
263
264 # IP protocol
265 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
266 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
267 NXM_OF_IP_PROTO(05)
268
269 # IP TTL
270 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
271 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
272 NXM_NX_IP_TTL(80)
273
274 # IP source
275 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
276 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
277 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
278 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
279 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
280
281 # IP destination
282 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
283 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
284 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
285 NXM_OF_IP_DST(ac100014)
286 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
287
288 # TCP source port
289 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
290 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
291 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
292
293 # TCP destination port
294 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
295 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
296 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
297
298 # UDP source port
299 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
300 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
301 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
302
303 # UDP destination port
304 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
305 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
306 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
307
308 # ICMP type
309 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
310 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
311
312 # ICMP code
313 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
314 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
315 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
316 NXM_OF_ICMP_CODE(00)
317
318 # ARP opcode
319 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
320 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
321 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
322 NXM_OF_ARP_OP(0001)
323 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
324
325 # ARP source protocol address
326 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
327 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
328 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
329 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
330 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
331
332 # ARP destination protocol address
333 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
334 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
335 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
336 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
337 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
338
339 # ARP source hardware address
340 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
341 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
342 NXM_NX_ARP_SHA(0002e30f80a4)
343
344 # ARP destination hardware address
345 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
346 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
347 NXM_NX_ARP_THA(0002e30f80a4)
348
349 # IPv6 source
350 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
351 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
352 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
353 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
354 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
355
356 # IPv6 destination
357 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
358 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
359 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
360 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
361
362 # ND target address
363 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
364 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
365 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
366 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
367
368 # ND source hardware address
369 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)
370 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)
371 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)
372 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)
373
374 # ND destination hardware address
375 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)
376 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)
377 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)
378 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)
379
380 # IPv4 fragments.
381 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
382 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
383 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
384 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
385 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
386 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
387 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
388 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
389 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
390 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
391 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
392
393 # IPv6 fragments.
394 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
395 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
396 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
397 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
398 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
399 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
400 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
401 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
402 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
403 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
404 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
405
406 # Flow cookie.
407 NXM_NX_COOKIE(00000000abcdef01)
408 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
409
410 # Tunnel ID.
411 NXM_NX_TUN_ID(00000000abcdef01)
412 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
413
414 # Register 0.
415 NXM_NX_REG0(acebdf56)
416 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
417
418 # Invalid field number.
419 01020304(1111/2222)
420
421 # Unimplemented registers.
422 #
423 # This test assumes that at least two registers, but fewer than 16,
424 # registers are implemented.
425 00010004(12345678)
426 00010108(12345678/12345678)
427 00011e04(12345678)
428 00011f08(12345678/12345678)
429 ])
430 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
431 <any>
432
433 # in port
434 NXM_OF_IN_PORT(0000)
435 NXM_OF_IN_PORT(fffe)
436
437 # eth dst
438 NXM_OF_ETH_DST(0002e30f80a4)
439 NXM_OF_ETH_DST_W(010000000000/010000000000)
440 NXM_OF_ETH_DST_W(000000000000/010000000000)
441 NXM_OF_ETH_DST_W(010000000000/010000000000)
442 NXM_OF_ETH_DST(0002e30f80a4)
443 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
444 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
445
446 # eth src
447 NXM_OF_ETH_SRC(020898456ddb)
448 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
449 NXM_OF_ETH_SRC(020898456ddb)
450
451 # eth type
452 NXM_OF_ETH_TYPE(0800)
453 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800) 
454
455 # vlan tci
456 NXM_OF_VLAN_TCI(f009)
457 nx_pull_match() returned error OFPBMC_DUP_FIELD
458 NXM_OF_VLAN_TCI(0000)
459 NXM_OF_VLAN_TCI(3123)
460 NXM_OF_VLAN_TCI(0123)
461 NXM_OF_VLAN_TCI_W(1123/1fff)
462 NXM_OF_VLAN_TCI_W(f000/f000)
463 NXM_OF_VLAN_TCI_W(0000/e000)
464
465 # IP TOS
466 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
467 nx_pull_match() returned error OFPBMC_BAD_VALUE
468 nx_pull_match() returned error OFPBMC_BAD_PREREQ
469
470 # IP ECN
471 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
472 nx_pull_match() returned error OFPBMC_BAD_VALUE
473 nx_pull_match() returned error OFPBMC_BAD_PREREQ
474
475 # IP protocol
476 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
477 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
478 nx_pull_match() returned error OFPBMC_BAD_PREREQ
479
480 # IP TTL
481 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
482 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
483 nx_pull_match() returned error OFPBMC_BAD_PREREQ
484
485 # IP source
486 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
487 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
488 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
489 nx_pull_match() returned error OFPBMC_BAD_PREREQ
490 nx_pull_match() returned error OFPBMC_BAD_PREREQ
491
492 # IP destination
493 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
494 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
495 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
496 nx_pull_match() returned error OFPBMC_BAD_PREREQ
497 nx_pull_match() returned error OFPBMC_BAD_PREREQ
498
499 # TCP source port
500 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
501 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
502 nx_pull_match() returned error OFPBMC_BAD_PREREQ
503
504 # TCP destination port
505 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
506 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
507 nx_pull_match() returned error OFPBMC_BAD_PREREQ
508
509 # UDP source port
510 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
511 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
512 nx_pull_match() returned error OFPBMC_BAD_PREREQ
513
514 # UDP destination port
515 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
516 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
517 nx_pull_match() returned error OFPBMC_BAD_PREREQ
518
519 # ICMP type
520 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
521 nx_pull_match() returned error OFPBMC_BAD_PREREQ
522
523 # ICMP code
524 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
525 nx_pull_match() returned error OFPBMC_BAD_PREREQ
526 nx_pull_match() returned error OFPBMC_BAD_PREREQ
527 nx_pull_match() returned error OFPBMC_BAD_PREREQ
528
529 # ARP opcode
530 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
531 nx_pull_match() returned error OFPBMC_BAD_VALUE
532 nx_pull_match() returned error OFPBMC_BAD_PREREQ
533 nx_pull_match() returned error OFPBMC_BAD_PREREQ
534 nx_pull_match() returned error OFPBMC_DUP_FIELD
535
536 # ARP source protocol address
537 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
538 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
539 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
540 nx_pull_match() returned error OFPBMC_BAD_PREREQ
541 nx_pull_match() returned error OFPBMC_BAD_PREREQ
542
543 # ARP destination protocol address
544 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
545 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
546 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
547 nx_pull_match() returned error OFPBMC_BAD_PREREQ
548 nx_pull_match() returned error OFPBMC_BAD_PREREQ
549
550 # ARP source hardware address
551 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
552 nx_pull_match() returned error OFPBMC_BAD_PREREQ
553 nx_pull_match() returned error OFPBMC_BAD_PREREQ
554
555 # ARP destination hardware address
556 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
557 nx_pull_match() returned error OFPBMC_BAD_PREREQ
558 nx_pull_match() returned error OFPBMC_BAD_PREREQ
559
560 # IPv6 source
561 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
562 nx_pull_match() returned error OFPBMC_BAD_PREREQ
563 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
564 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
565 nx_pull_match() returned error OFPBMC_BAD_PREREQ
566
567 # IPv6 destination
568 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
569 nx_pull_match() returned error OFPBMC_BAD_PREREQ
570 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
571 nx_pull_match() returned error OFPBMC_BAD_PREREQ
572
573 # ND target address
574 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
575 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
576 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
577 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
578
579 # ND source hardware address
580 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)
581 nx_pull_match() returned error OFPBMC_BAD_PREREQ
582 nx_pull_match() returned error OFPBMC_BAD_PREREQ
583 nx_pull_match() returned error OFPBMC_BAD_PREREQ
584
585 # ND destination hardware address
586 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)
587 nx_pull_match() returned error OFPBMC_BAD_PREREQ
588 nx_pull_match() returned error OFPBMC_BAD_PREREQ
589 nx_pull_match() returned error OFPBMC_BAD_PREREQ
590
591 # IPv4 fragments.
592 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
593 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
594 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
595 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
596 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
597 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
598 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
599 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
600 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
601 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
602 nx_pull_match() returned error OFPBMC_BAD_VALUE
603
604 # IPv6 fragments.
605 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
606 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
607 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
608 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
609 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
610 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
611 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
612 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
613 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
614 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
615 nx_pull_match() returned error OFPBMC_BAD_VALUE
616
617 # Flow cookie.
618 NXM_NX_COOKIE(00000000abcdef01)
619 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
620
621 # Tunnel ID.
622 NXM_NX_TUN_ID(00000000abcdef01)
623 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
624
625 # Register 0.
626 NXM_NX_REG0(acebdf56)
627 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
628
629 # Invalid field number.
630 nx_pull_match() returned error OFPBMC_BAD_FIELD
631
632 # Unimplemented registers.
633 #
634 # This test assumes that at least two registers, but fewer than 16,
635 # registers are implemented.
636 NXM_NX_REG0(12345678)
637 NXM_NX_REG0_W(12345678/12345678)
638 nx_pull_match() returned error OFPBMC_BAD_FIELD
639 nx_pull_match() returned error OFPBMC_BAD_FIELD
640 ])
641 AT_CLEANUP
642
643 AT_SETUP([ovs-ofctl parse-ofp11-match])
644 AT_KEYWORDS([OF1.1])
645 AT_DATA([test-data], [dnl
646 # in_port=65534
647 0000 0058 fffffffe 000003fe dnl
648 000000000000ffffffffffff 000000000000ffffffffffff dnl
649 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
650 00000000 00 000000 0000000000000000ffffffffffffffff
651
652 # bad ofp11_match: OFPBMC_BAD_VALUE
653 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
654 0000 0058 12345678 000003fe dnl
655 000000000000ffffffffffff 000000000000ffffffffffff dnl
656 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
657 00000000 00 000000 0000000000000000ffffffffffffffff
658
659 # dl_src=00:01:02:03:04:05
660 0000 0058 00000000 000003ff dnl
661 000102030405000000000000 000000000000ffffffffffff dnl
662 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
663 00000000 00 000000 0000000000000000ffffffffffffffff
664
665 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
666 0000 0058 00000000 000003ff dnl
667 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
668 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
669 00000000 00 000000 0000000000000000ffffffffffffffff
670
671 # dl_dst=00:01:02:03:04:05
672 0000 0058 00000000 000003ff dnl
673 000000000000ffffffffffff 000102030405000000000000 dnl
674 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
675 00000000 00 000000 0000000000000000ffffffffffffffff
676
677 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
678 0000 0058 00000000 000003ff dnl
679 000000000000ffffffffffff 010000000000feffffffffff dnl
680 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
681 00000000 00 000000 0000000000000000ffffffffffffffff
682
683 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
684 0000 0058 00000000 000003ff dnl
685 000000000000ffffffffffff 000102030405010000000000 dnl
686 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
687 00000000 00 000000 0000000000000000ffffffffffffffff
688
689 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
690 0000 0058 00000000 000003ff dnl
691 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
692 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
693 00000000 00 000000 0000000000000000ffffffffffffffff
694
695 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
696 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
697 # in_port=1
698 # 11: fa -> fe
699 # 38: 03 -> 00
700 0000 0058 00000001 000003fa dnl
701 000000000000ffffffffffff 000000000000ffffffffffff dnl
702 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
703 00000000 00 000000 0000000000000000ffffffffffffffff
704
705 # dl_vlan=291
706 0000 0058 00000000 000003fd dnl
707 000000000000ffffffffffff 000000000000ffffffffffff dnl
708 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
709 00000000 00 000000 0000000000000000ffffffffffffffff
710
711 dnl OFPVID_NONE:
712 # vlan_tci=0x0000
713 0000 0058 00000000 000003fd dnl
714 000000000000ffffffffffff 000000000000ffffffffffff dnl
715 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
716 00000000 00 000000 0000000000000000ffffffffffffffff
717
718 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
719 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
720 # vlan_tci=0x0000
721 # 11: f9 -> fd
722 # 38: 05 -> 00
723 0000 0058 00000000 000003f9 dnl
724 000000000000ffffffffffff 000000000000ffffffffffff dnl
725 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
726 00000000 00 000000 0000000000000000ffffffffffffffff
727
728 # vlan_tci=0x1000/0x1000
729 0000 0058 00000000 000003fd dnl
730 000000000000ffffffffffff 000000000000ffffffffffff dnl
731 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
732 00000000 00 000000 0000000000000000ffffffffffffffff
733
734 dnl Try invalid VID:
735 # bad ofp11_match: OFPBMC_BAD_VALUE
736 0000 0058 00000000 000003fd dnl
737 000000000000ffffffffffff 000000000000ffffffffffff dnl
738 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
739 00000000 00 000000 0000000000000000ffffffffffffffff
740
741 # dl_vlan_pcp=4
742 0000 0058 00000000 000003f9 dnl
743 000000000000ffffffffffff 000000000000ffffffffffff dnl
744 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
745 00000000 00 000000 0000000000000000ffffffffffffffff
746
747 # dl_vlan=10,dl_vlan_pcp=6
748 0000 0058 00000000 000003f9 dnl
749 000000000000ffffffffffff 000000000000ffffffffffff dnl
750 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
751 00000000 00 000000 0000000000000000ffffffffffffffff
752
753 # dl_type=0x1234
754 0000 0058 00000000 000003f7 dnl
755 000000000000ffffffffffff 000000000000ffffffffffff dnl
756 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
757 00000000 00 000000 0000000000000000ffffffffffffffff
758
759 # ip,nw_tos=252
760 0000 0058 00000000 000003e7 dnl
761 000000000000ffffffffffff 000000000000ffffffffffff dnl
762 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
763 00000000 00 000000 0000000000000000ffffffffffffffff
764
765 dnl Try invalid TOS:
766 # bad ofp11_match: OFPBMC_BAD_VALUE
767 0000 0058 00000000 000003e7 dnl
768 000000000000ffffffffffff 000000000000ffffffffffff dnl
769 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
770 00000000 00 000000 0000000000000000ffffffffffffffff
771
772 # ip,nw_proto=5
773 0000 0058 00000000 000003d7 dnl
774 000000000000ffffffffffff 000000000000ffffffffffff dnl
775 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
776 00000000 00 000000 0000000000000000ffffffffffffffff
777
778 # arp,arp_op=2
779 0000 0058 00000000 000003d7 dnl
780 000000000000ffffffffffff 000000000000ffffffffffff dnl
781 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
782 00000000 00 000000 0000000000000000ffffffffffffffff
783
784 # ip,nw_src=192.168.128.0/24
785 0000 0058 00000000 000003f7 dnl
786 000000000000ffffffffffff 000000000000ffffffffffff dnl
787 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
788 00000000 00 000000 0000000000000000ffffffffffffffff
789
790 # ip,nw_src=128.160.128.0/165.165.165.165
791 # 44: c0 -> 80
792 # 45: a8 -> a0
793 0000 0058 00000000 000003f7 dnl
794 000000000000ffffffffffff 000000000000ffffffffffff dnl
795 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
796 00000000 00 000000 0000000000000000ffffffffffffffff
797
798 # ip,nw_dst=192.168.128.0/24
799 0000 0058 00000000 000003f7 dnl
800 000000000000ffffffffffff 000000000000ffffffffffff dnl
801 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
802 00000000 00 000000 0000000000000000ffffffffffffffff
803
804 # ip,nw_dst=128.160.128.0/165.165.165.165
805 # 52: c0 -> 80
806 # 53: a8 -> a0
807 0000 0058 00000000 000003f7 dnl
808 000000000000ffffffffffff 000000000000ffffffffffff dnl
809 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
810 00000000 00 000000 0000000000000000ffffffffffffffff
811
812 # arp,nw_src=192.168.128.0/24
813 0000 0058 00000000 000003f7 dnl
814 000000000000ffffffffffff 000000000000ffffffffffff dnl
815 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
816 00000000 00 000000 0000000000000000ffffffffffffffff
817
818 # arp,nw_dst=192.168.128.0/24
819 0000 0058 00000000 000003f7 dnl
820 000000000000ffffffffffff 000000000000ffffffffffff dnl
821 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
822 00000000 00 000000 0000000000000000ffffffffffffffff
823
824 # tcp,tp_src=443
825 0000 0058 00000000 00000397 dnl
826 000000000000ffffffffffff 000000000000ffffffffffff dnl
827 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
828 00000000 00 000000 0000000000000000ffffffffffffffff
829
830 # tcp,tp_dst=443
831 0000 0058 00000000 00000357 dnl
832 000000000000ffffffffffff 000000000000ffffffffffff dnl
833 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
834 00000000 00 000000 0000000000000000ffffffffffffffff
835
836 # udp,tp_src=443
837 0000 0058 00000000 00000397 dnl
838 000000000000ffffffffffff 000000000000ffffffffffff dnl
839 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
840 00000000 00 000000 0000000000000000ffffffffffffffff
841
842 # icmp,icmp_type=5
843 0000 0058 00000000 00000397 dnl
844 000000000000ffffffffffff 000000000000ffffffffffff dnl
845 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
846 00000000 00 000000 0000000000000000ffffffffffffffff
847
848 # icmp,icmp_code=8
849 0000 0058 00000000 00000357 dnl
850 000000000000ffffffffffff 000000000000ffffffffffff dnl
851 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
852 00000000 00 000000 0000000000000000ffffffffffffffff
853
854 # udp,tp_src=443
855 0000 0058 00000000 00000397 dnl
856 000000000000ffffffffffff 000000000000ffffffffffff dnl
857 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
858 00000000 00 000000 0000000000000000ffffffffffffffff
859
860 # udp,tp_dst=443
861 0000 0058 00000000 00000357 dnl
862 000000000000ffffffffffff 000000000000ffffffffffff dnl
863 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
864 00000000 00 000000 0000000000000000ffffffffffffffff
865
866 dnl SCTP, no ports.
867 # ip,nw_proto=132
868 0000 0058 00000000 000003d7 dnl
869 000000000000ffffffffffff 000000000000ffffffffffff dnl
870 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
871 00000000 00 000000 0000000000000000ffffffffffffffff
872
873 dnl SCTP tp_src matching not supported:
874 # bad ofp11_match: OFPBMC_BAD_FIELD
875 0000 0058 00000000 00000397 dnl
876 000000000000ffffffffffff 000000000000ffffffffffff dnl
877 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
878 00000000 00 000000 0000000000000000ffffffffffffffff
879
880 dnl SCTP tp_dst matching not supported:
881 # bad ofp11_match: OFPBMC_BAD_FIELD
882 0000 0058 00000000 00000357 dnl
883 000000000000ffffffffffff 000000000000ffffffffffff dnl
884 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
885 00000000 00 000000 0000000000000000ffffffffffffffff
886
887 dnl Ignore tp_src if not TCP or UDP or SCTP:
888 # ip,nw_proto=21
889 # 11: 97 -> d7
890 # 60: 01 -> 00
891 # 61: bb -> 00
892 0000 0058 00000000 00000397 dnl
893 000000000000ffffffffffff 000000000000ffffffffffff dnl
894 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
895 00000000 00 000000 0000000000000000ffffffffffffffff
896
897 dnl Ignore tp_dst if not TCP or UDP or SCTP:
898 # ip,nw_proto=22
899 # 11: 57 -> d7
900 # 62: 01 -> 00
901 # 63: bb -> 00
902 0000 0058 00000000 00000357 dnl
903 000000000000ffffffffffff 000000000000ffffffffffff dnl
904 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
905 00000000 00 000000 0000000000000000ffffffffffffffff
906
907 dnl mpls_label not yet supported:
908 # bad ofp11_match: OFPBMC_BAD_TAG
909 0000 0058 00000000 000002f7 dnl
910 000000000000ffffffffffff 000000000000ffffffffffff dnl
911 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
912 12345678 00 000000 0000000000000000ffffffffffffffff
913
914 dnl mpls_tc not yet supported:
915 # bad ofp11_match: OFPBMC_BAD_TAG
916 0000 0058 00000000 000001f7 dnl
917 000000000000ffffffffffff 000000000000ffffffffffff dnl
918 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
919 00000000 5a 000000 0000000000000000ffffffffffffffff
920
921 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
922 # dl_type=0x1234
923 # 10: 00 -> 03
924 # 64: 12 -> 00
925 # 65: 34 -> 00
926 # 66: 56 -> 00
927 # 67: 78 -> 00
928 # 68: 5a -> 00
929 0000 0058 00000000 000000f7 dnl
930 000000000000ffffffffffff 000000000000ffffffffffff dnl
931 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
932 12345678 5a 000000 0000000000000000ffffffffffffffff
933
934 dnl metadata match not yet supported:
935 # bad ofp11_match: OFPBMC_BAD_FIELD
936 0000 0058 00000000 000003ff dnl
937 000000000000ffffffffffff 000000000000ffffffffffff dnl
938 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
939 00000000 00 000000 0000000000000001fffffffffffffffe
940
941 ])
942 sed '/^[[#&]]/d' < test-data > input.txt
943 sed -n 's/^# //p; /^$/p' < test-data > expout
944 sed -n 's/^& //p' < test-data > experr
945 AT_CAPTURE_FILE([input.txt])
946 AT_CAPTURE_FILE([expout])
947 AT_CAPTURE_FILE([experr])
948 AT_CHECK(
949   [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
950   [0], [expout], [experr])
951 AT_CLEANUP
952
953 AT_SETUP([ovs-ofctl parse-nx-match loose])
954 AT_KEYWORDS([nx-match])
955 AT_DATA([nx-match.txt], [dnl
956 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
957 ])
958
959 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
960 nx_pull_match() returned error OFPBMC_BAD_FIELD
961 ])
962
963 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
964 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
965 ])
966 AT_CLEANUP
967
968 AT_SETUP([ovs-ofctl parse-oxm])
969 AT_KEYWORDS([oxm])
970 AT_DATA([oxm.txt], [dnl
971 <any>
972
973 # in port
974 OXM_OF_IN_PORT(00000000)
975 OXM_OF_IN_PORT(fffffffe)
976
977 # eth dst
978 OXM_OF_ETH_DST(0002e30f80a4)
979 OXM_OF_ETH_DST_W(010000000000/010000000000)
980 OXM_OF_ETH_DST_W(000000000000/010000000000)
981 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
982 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
983 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
984
985 # eth src
986 OXM_OF_ETH_SRC(020898456ddb)
987
988 # eth type
989 OXM_OF_ETH_TYPE(0800)
990 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
991
992 # IP ECN
993 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
994 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
995 OXM_OF_IP_ECN(03)
996
997 # IP protocol
998 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
999 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1000 OXM_OF_IP_PROTO(05)
1001
1002 # IP source
1003 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1004 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1005 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1006 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1007
1008 # IP destination
1009 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1010 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1011 OXM_OF_IPV4_DST(ac100014)
1012 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1013
1014 # TCP source port
1015 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1016 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1017 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1018
1019 # TCP destination port
1020 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1021 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1022 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1023
1024 # UDP source port
1025 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1026 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1027 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1028
1029 # UDP destination port
1030 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1031 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1032 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1033
1034 # ICMP type
1035 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1036 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1037
1038 # ICMP code
1039 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1040 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1041 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1042 OXM_OF_ICMPV4_CODE(00)
1043
1044 # ARP opcode
1045 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1046 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1047 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1048 OXM_OF_ARP_OP(0001)
1049 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1050
1051 # ARP source protocol address
1052 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1053 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1054 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1055 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1056
1057 # ARP destination protocol address
1058 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1059 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1060 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1061 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1062
1063 # ARP source hardware address
1064 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1065 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1066 OXM_OF_ARP_SHA(0002e30f80a4)
1067
1068 # ARP destination hardware address
1069 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1070 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1071 OXM_OF_ARP_THA(0002e30f80a4)
1072
1073 # IPv6 source
1074 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1075 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1076 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1077 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1078
1079 # IPv6 destination
1080 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1081 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1082 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1083 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1084
1085 # ND source hardware address
1086 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)
1087 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)
1088 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)
1089 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)
1090
1091 # ND destination hardware address
1092 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)
1093 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)
1094 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)
1095 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)
1096
1097 # Invalid field number.
1098 01020304(1111/2222)
1099 ])
1100 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1101 <any>
1102
1103 # in port
1104 OXM_OF_IN_PORT(00000000)
1105 OXM_OF_IN_PORT(fffffffe)
1106
1107 # eth dst
1108 OXM_OF_ETH_DST(0002e30f80a4)
1109 OXM_OF_ETH_DST_W(010000000000/010000000000)
1110 OXM_OF_ETH_DST_W(000000000000/010000000000)
1111 OXM_OF_ETH_DST_W(010000000000/010000000000)
1112 OXM_OF_ETH_DST(0002e30f80a4)
1113 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1114
1115 # eth src
1116 OXM_OF_ETH_SRC(020898456ddb)
1117
1118 # eth type
1119 OXM_OF_ETH_TYPE(0800)
1120 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1121
1122 # IP ECN
1123 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1124 nx_pull_match() returned error OFPBMC_BAD_VALUE
1125 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1126
1127 # IP protocol
1128 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1129 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1130 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1131
1132 # IP source
1133 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1134 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1135 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1136 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1137
1138 # IP destination
1139 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1140 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1141 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1142 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1143
1144 # TCP source port
1145 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1146 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1147 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1148
1149 # TCP destination port
1150 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1151 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1152 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1153
1154 # UDP source port
1155 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1156 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1157 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1158
1159 # UDP destination port
1160 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1161 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1162 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1163
1164 # ICMP type
1165 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1166 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1167
1168 # ICMP code
1169 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1170 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1171 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1172 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1173
1174 # ARP opcode
1175 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1176 nx_pull_match() returned error OFPBMC_BAD_VALUE
1177 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1178 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1179 nx_pull_match() returned error OFPBMC_DUP_FIELD
1180
1181 # ARP source protocol address
1182 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1183 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1184 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1185 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1186
1187 # ARP destination protocol address
1188 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1189 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1190 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1191 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1192
1193 # ARP source hardware address
1194 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1195 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1196 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1197
1198 # ARP destination hardware address
1199 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1200 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1201 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1202
1203 # IPv6 source
1204 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1205 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1206 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1207 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1208
1209 # IPv6 destination
1210 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1211 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1212 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1213 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1214
1215 # ND source hardware address
1216 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)
1217 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1218 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1219 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1220
1221 # ND destination hardware address
1222 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)
1223 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1224 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1225 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1226
1227 # Invalid field number.
1228 nx_pull_match() returned error OFPBMC_BAD_FIELD
1229 ])
1230 AT_CLEANUP
1231
1232 AT_SETUP([ovs-ofctl parse-oxm loose])
1233 AT_KEYWORDS([oxm])
1234 AT_DATA([oxm.txt], [dnl
1235 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1236 ])
1237
1238 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1239 nx_pull_match() returned error OFPBMC_BAD_FIELD
1240 ])
1241
1242 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1243 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1244 ])
1245 AT_CLEANUP
1246
1247 dnl Check that "-F openflow10" rejects a flow_mod with a tun_id, since
1248 dnl OpenFlow 1.0 doesn't support tunnels.
1249 AT_SETUP([ovs-ofctl -F option and tun_id])
1250 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
1251   [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1252 ])
1253 AT_CLEANUP
1254
1255 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1256 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1257 dnl additionally show up as the top 32 bits of the cookie.)  This checks
1258 dnl for regression against bug #4566.
1259 AT_SETUP([ovs-ofctl -F option with flow_mods])
1260 OVS_VSWITCHD_START
1261 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
1262 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
1263 NXST_FLOW reply:
1264  tun_id=0x12345678 actions=drop
1265 ])
1266 OVS_VSWITCHD_STOP
1267 AT_CLEANUP
1268
1269 dnl Check that "-F openflow10" is really honored on dump-flows.
1270 dnl (If it isn't, then dump-flows will show the register match.)
1271 AT_SETUP([ovs-ofctl dump-flows honors -F option])
1272 OVS_VSWITCHD_START
1273 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
1274 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
1275 OFPST_FLOW reply:
1276  actions=drop
1277 ])
1278 OVS_VSWITCHD_STOP
1279 AT_CLEANUP
1280
1281 dnl Check that "-F openflow10" fails on dump-flows if the requested match
1282 dnl can't be represented in OpenFlow 1.0.
1283 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
1284 OVS_VSWITCHD_START
1285 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
1286   [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1287 ])
1288 OVS_VSWITCHD_STOP
1289 AT_CLEANUP
1290
1291 dnl Check that add-flow reports non-normalized flows (feature #5029).
1292 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
1293 OVS_VSWITCHD_START
1294 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1295   [0], [], [dnl
1296 ofp_util|INFO|normalization changed ofp_match, details:
1297 ofp_util|INFO| pre: nw_src=1.2.3.4
1298 ofp_util|INFO|post: @&t@
1299 ])
1300 OVS_VSWITCHD_STOP
1301 AT_CLEANUP
1302