3 AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
4 AT_DATA([flows.txt], [[
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
15 AT_CHECK([ovs-ofctl parse-flows flows.txt
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
30 AT_SETUP([ovs-ofctl parse-flows (NXM)])
31 AT_DATA([flows.txt], [[
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])
44 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
45 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
46 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
47 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
48 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
49 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
50 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
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..15],slaves:[2,3])
53 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
54 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
55 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
56 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
57 check_overlap,actions=output:1,exit,output:2
58 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
59 actions=controller(max_len=123,reason=invalid_ttl,id=555)
62 AT_CHECK([ovs-ofctl parse-flows flows.txt
64 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
65 [[usable protocols: NXM+table_id
66 chosen protocol: NXM+table_id
67 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
68 NXT_FLOW_MOD: ADD table:255 in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
69 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
70 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
71 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
72 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
73 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
74 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
75 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
76 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])
77 NXT_FLOW_MOD: ADD table:1 actions=drop
78 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
79 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
80 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
81 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
82 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
83 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
84 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
85 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
86 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
87 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
88 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
89 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
90 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
91 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
92 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
93 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
97 AT_SETUP([ovs-ofctl -F nxm parse-flows])
98 AT_DATA([flows.txt], [
100 tcp,tp_src=123,actions=flood
101 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
102 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
103 ipv6,ipv6_label=0x12345 actions=2
104 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
105 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
106 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
107 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
108 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
109 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
110 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
111 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
112 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
113 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
114 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
115 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
116 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
117 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
118 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
119 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
120 tun_id=0x1234,cookie=0x5678,actions=flood
122 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
123 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
124 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
125 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
126 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
128 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
129 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
130 usable protocols: NXM
131 chosen protocol: NXM-table_id
132 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
133 NXT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
134 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
135 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
136 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
137 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
138 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
139 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
140 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
141 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
142 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
143 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
144 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
145 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
146 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
147 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
148 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
149 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
150 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
151 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
152 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
153 NXT_FLOW_MOD: ADD actions=drop
154 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
155 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
156 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
157 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
158 NXT_FLOW_MOD: ADD actions=drop
162 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
163 AT_DATA([flows.txt], [[
165 tcp,tp_src=123,actions=flood
166 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
167 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
168 ipv6,ipv6_label=0x12345 actions=2
169 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
170 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
171 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
172 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
173 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
174 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
175 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
176 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
177 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
178 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
179 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
180 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
181 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
182 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
183 tun_id=0x1234,cookie=0x5678,actions=flood
185 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[]
186 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
187 actions=autopath(5,NXM_NX_REG0[])
188 vlan_tci=0x1123/0x1fff,actions=drop
190 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout])
191 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
192 [[usable protocols: NXM
193 chosen protocol: NXM-table_id
194 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
195 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
196 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
197 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
198 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
199 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
200 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 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
209 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
210 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
211 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
212 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
213 NXT_FLOW_MOD: ADD <any> actions=drop
214 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[]
215 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
216 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
217 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
221 AT_SETUP([ovs-ofctl parse-nx-match])
222 AT_KEYWORDS([nx-match])
223 AT_DATA([nx-match.txt], [dnl
231 NXM_OF_ETH_DST(0002e30f80a4)
232 NXM_OF_ETH_DST_W(010000000000/010000000000)
233 NXM_OF_ETH_DST_W(000000000000/010000000000)
234 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
235 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
236 NXM_OF_ETH_DST_W(60175619848f/000000000000)
237 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
238 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
241 NXM_OF_ETH_SRC(020898456ddb)
242 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
243 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
244 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
247 NXM_OF_ETH_TYPE(0800)
248 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
251 NXM_OF_VLAN_TCI(f009)
252 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
253 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
254 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
255 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
256 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
257 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
258 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
259 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
260 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
263 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
264 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
268 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
269 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
273 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
274 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
278 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
279 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
283 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
284 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
285 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
286 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
287 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
288 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
289 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
292 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
293 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
294 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
295 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
296 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
297 NXM_OF_IP_DST(ac100014)
298 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
301 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
302 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
303 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
304 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
305 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
307 # TCP destination port
308 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
309 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
310 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
311 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
312 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
315 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
316 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
317 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
318 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
319 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
321 # UDP destination port
322 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
323 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
324 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
325 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
326 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
329 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
330 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
333 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
334 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
335 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
339 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
340 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
341 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
343 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
345 # ARP source protocol address
346 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
347 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
348 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
349 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
350 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
351 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
352 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
354 # ARP destination protocol address
355 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
356 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
357 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
358 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
359 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
360 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
361 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
363 # ARP source hardware address
364 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
365 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
366 NXM_NX_ARP_SHA(0002e30f80a4)
368 # ARP destination hardware address
369 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
370 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
371 NXM_NX_ARP_THA(0002e30f80a4)
374 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
375 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
376 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
377 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
378 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
379 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
380 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
383 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
384 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
385 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
386 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
387 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
388 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
391 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
392 NXM_NX_IPV6_LABEL(0000000f)
393 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
396 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
397 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
398 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
399 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
400 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
401 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
403 # ND source hardware address
404 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)
405 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)
406 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)
407 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)
409 # ND destination hardware address
410 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)
411 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)
412 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)
413 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)
416 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
417 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
418 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
419 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
420 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
421 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
422 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
423 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
424 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
425 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
426 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
427 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
428 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
431 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
432 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
433 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
434 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
435 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
436 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
437 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
438 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
439 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
440 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
441 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
442 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
443 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
446 NXM_NX_COOKIE(00000000abcdef01)
447 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
448 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
449 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
452 NXM_NX_TUN_ID(00000000abcdef01)
453 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
454 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
455 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
458 NXM_NX_REG0(acebdf56)
459 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
460 NXM_NX_REG0_W(a0e0d050/ffffffff)
461 NXM_NX_REG0_W(a0e0d050/00000000)
463 # Invalid field number.
466 # Unimplemented registers.
468 # This test assumes that at least two registers, but fewer than 16,
469 # registers are implemented.
471 00010108(12345678/12345678)
473 00011f08(12345678/12345678)
475 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
483 NXM_OF_ETH_DST(0002e30f80a4)
484 NXM_OF_ETH_DST_W(010000000000/010000000000)
485 NXM_OF_ETH_DST_W(000000000000/010000000000)
486 NXM_OF_ETH_DST_W(010000000000/010000000000)
487 NXM_OF_ETH_DST(0002e30f80a4)
489 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
490 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
493 NXM_OF_ETH_SRC(020898456ddb)
494 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
495 NXM_OF_ETH_SRC(020898456ddb)
499 NXM_OF_ETH_TYPE(0800)
500 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
503 NXM_OF_VLAN_TCI(f009)
504 nx_pull_match() returned error OFPBMC_DUP_FIELD
505 NXM_OF_VLAN_TCI(0000)
506 NXM_OF_VLAN_TCI(3123)
507 NXM_OF_VLAN_TCI(0123)
508 NXM_OF_VLAN_TCI_W(1123/1fff)
509 NXM_OF_VLAN_TCI(1123)
511 NXM_OF_VLAN_TCI_W(f000/f000)
512 NXM_OF_VLAN_TCI_W(0000/e000)
515 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
516 nx_pull_match() returned error OFPBMC_BAD_VALUE
517 nx_pull_match() returned error OFPBMC_BAD_PREREQ
520 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
521 nx_pull_match() returned error OFPBMC_BAD_VALUE
522 nx_pull_match() returned error OFPBMC_BAD_PREREQ
525 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
526 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
527 nx_pull_match() returned error OFPBMC_BAD_PREREQ
530 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
531 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
532 nx_pull_match() returned error OFPBMC_BAD_PREREQ
535 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
536 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
537 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
538 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
539 NXM_OF_ETH_TYPE(0800)
540 nx_pull_match() returned error OFPBMC_BAD_PREREQ
541 nx_pull_match() returned error OFPBMC_BAD_PREREQ
544 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
545 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
546 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
547 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
548 NXM_OF_ETH_TYPE(0800)
549 nx_pull_match() returned error OFPBMC_BAD_PREREQ
550 nx_pull_match() returned error OFPBMC_BAD_PREREQ
553 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
554 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
555 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
556 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
557 nx_pull_match() returned error OFPBMC_BAD_PREREQ
559 # TCP destination port
560 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
561 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
562 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
563 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
564 nx_pull_match() returned error OFPBMC_BAD_PREREQ
567 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
568 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
569 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
570 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
571 nx_pull_match() returned error OFPBMC_BAD_PREREQ
573 # UDP destination port
574 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
575 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
576 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
577 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
578 nx_pull_match() returned error OFPBMC_BAD_PREREQ
581 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
582 nx_pull_match() returned error OFPBMC_BAD_PREREQ
585 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
586 nx_pull_match() returned error OFPBMC_BAD_PREREQ
587 nx_pull_match() returned error OFPBMC_BAD_PREREQ
588 nx_pull_match() returned error OFPBMC_BAD_PREREQ
591 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
592 nx_pull_match() returned error OFPBMC_BAD_VALUE
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_DUP_FIELD
597 # ARP source protocol address
598 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
599 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
600 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
601 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
602 NXM_OF_ETH_TYPE(0806)
603 nx_pull_match() returned error OFPBMC_BAD_PREREQ
604 nx_pull_match() returned error OFPBMC_BAD_PREREQ
606 # ARP destination protocol address
607 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
608 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
609 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
610 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
611 NXM_OF_ETH_TYPE(0806)
612 nx_pull_match() returned error OFPBMC_BAD_PREREQ
613 nx_pull_match() returned error OFPBMC_BAD_PREREQ
615 # ARP source hardware address
616 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
617 nx_pull_match() returned error OFPBMC_BAD_PREREQ
618 nx_pull_match() returned error OFPBMC_BAD_PREREQ
620 # ARP destination hardware address
621 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
622 nx_pull_match() returned error OFPBMC_BAD_PREREQ
623 nx_pull_match() returned error OFPBMC_BAD_PREREQ
626 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
627 nx_pull_match() returned error OFPBMC_BAD_PREREQ
628 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
629 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
630 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
631 NXM_OF_ETH_TYPE(86dd)
632 nx_pull_match() returned error OFPBMC_BAD_PREREQ
635 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
636 nx_pull_match() returned error OFPBMC_BAD_PREREQ
637 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
638 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
639 NXM_OF_ETH_TYPE(86dd)
640 nx_pull_match() returned error OFPBMC_BAD_PREREQ
643 nx_pull_match() returned error OFPBMC_BAD_VALUE
644 nx_pull_match() returned error OFPBMC_BAD_PREREQ
645 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
648 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
649 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
650 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
651 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
652 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
653 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
655 # ND source hardware address
656 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)
657 nx_pull_match() returned error OFPBMC_BAD_PREREQ
658 nx_pull_match() returned error OFPBMC_BAD_PREREQ
659 nx_pull_match() returned error OFPBMC_BAD_PREREQ
661 # ND destination hardware address
662 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)
663 nx_pull_match() returned error OFPBMC_BAD_PREREQ
664 nx_pull_match() returned error OFPBMC_BAD_PREREQ
665 nx_pull_match() returned error OFPBMC_BAD_PREREQ
668 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
669 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
670 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
671 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
672 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
673 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
674 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
675 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
676 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
677 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
678 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
679 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
680 nx_pull_match() returned error OFPBMC_BAD_VALUE
683 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
684 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
685 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
686 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
687 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
688 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
689 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
690 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
691 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
692 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
693 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
694 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
695 nx_pull_match() returned error OFPBMC_BAD_VALUE
698 NXM_NX_COOKIE(00000000abcdef01)
699 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
700 NXM_NX_COOKIE(84200000abcdef01)
704 NXM_NX_TUN_ID(00000000abcdef01)
705 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
706 NXM_NX_TUN_ID(84200000abcdef01)
710 NXM_NX_REG0(acebdf56)
711 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
712 NXM_NX_REG0(a0e0d050)
715 # Invalid field number.
716 nx_pull_match() returned error OFPBMC_BAD_FIELD
718 # Unimplemented registers.
720 # This test assumes that at least two registers, but fewer than 16,
721 # registers are implemented.
722 NXM_NX_REG0(12345678)
723 NXM_NX_REG0_W(12345678/12345678)
724 nx_pull_match() returned error OFPBMC_BAD_FIELD
725 nx_pull_match() returned error OFPBMC_BAD_FIELD
729 AT_SETUP([ovs-ofctl parse-ofp11-match])
731 AT_DATA([test-data], [dnl
733 0000 0058 fffffffe 000003fe dnl
734 000000000000ffffffffffff 000000000000ffffffffffff dnl
735 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
736 00000000 00 000000 0000000000000000ffffffffffffffff
738 # bad ofp11_match: OFPBMC_BAD_VALUE
739 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
740 0000 0058 12345678 000003fe dnl
741 000000000000ffffffffffff 000000000000ffffffffffff dnl
742 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
743 00000000 00 000000 0000000000000000ffffffffffffffff
745 # dl_src=00:01:02:03:04:05
746 0000 0058 00000000 000003ff dnl
747 000102030405000000000000 000000000000ffffffffffff dnl
748 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
749 00000000 00 000000 0000000000000000ffffffffffffffff
751 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
752 0000 0058 00000000 000003ff dnl
753 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
754 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
755 00000000 00 000000 0000000000000000ffffffffffffffff
757 # dl_dst=00:01:02:03:04:05
758 0000 0058 00000000 000003ff dnl
759 000000000000ffffffffffff 000102030405000000000000 dnl
760 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
761 00000000 00 000000 0000000000000000ffffffffffffffff
763 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
764 0000 0058 00000000 000003ff dnl
765 000000000000ffffffffffff 010000000000feffffffffff dnl
766 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
767 00000000 00 000000 0000000000000000ffffffffffffffff
769 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
770 0000 0058 00000000 000003ff dnl
771 000000000000ffffffffffff 000102030405010000000000 dnl
772 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
773 00000000 00 000000 0000000000000000ffffffffffffffff
775 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
776 0000 0058 00000000 000003ff dnl
777 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
778 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
779 00000000 00 000000 0000000000000000ffffffffffffffff
781 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
782 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
786 0000 0058 00000001 000003fa dnl
787 000000000000ffffffffffff 000000000000ffffffffffff dnl
788 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
789 00000000 00 000000 0000000000000000ffffffffffffffff
792 0000 0058 00000000 000003fd dnl
793 000000000000ffffffffffff 000000000000ffffffffffff dnl
794 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
795 00000000 00 000000 0000000000000000ffffffffffffffff
799 0000 0058 00000000 000003fd dnl
800 000000000000ffffffffffff 000000000000ffffffffffff dnl
801 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
802 00000000 00 000000 0000000000000000ffffffffffffffff
804 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
805 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
809 0000 0058 00000000 000003f9 dnl
810 000000000000ffffffffffff 000000000000ffffffffffff dnl
811 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
812 00000000 00 000000 0000000000000000ffffffffffffffff
814 # vlan_tci=0x1000/0x1000
815 0000 0058 00000000 000003fd dnl
816 000000000000ffffffffffff 000000000000ffffffffffff dnl
817 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
818 00000000 00 000000 0000000000000000ffffffffffffffff
821 # bad ofp11_match: OFPBMC_BAD_VALUE
822 0000 0058 00000000 000003fd dnl
823 000000000000ffffffffffff 000000000000ffffffffffff dnl
824 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
825 00000000 00 000000 0000000000000000ffffffffffffffff
828 0000 0058 00000000 000003f9 dnl
829 000000000000ffffffffffff 000000000000ffffffffffff dnl
830 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
831 00000000 00 000000 0000000000000000ffffffffffffffff
833 # dl_vlan=10,dl_vlan_pcp=6
834 0000 0058 00000000 000003f9 dnl
835 000000000000ffffffffffff 000000000000ffffffffffff dnl
836 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
837 00000000 00 000000 0000000000000000ffffffffffffffff
840 0000 0058 00000000 000003f7 dnl
841 000000000000ffffffffffff 000000000000ffffffffffff dnl
842 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
843 00000000 00 000000 0000000000000000ffffffffffffffff
846 0000 0058 00000000 000003e7 dnl
847 000000000000ffffffffffff 000000000000ffffffffffff dnl
848 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
849 00000000 00 000000 0000000000000000ffffffffffffffff
852 # bad ofp11_match: OFPBMC_BAD_VALUE
853 0000 0058 00000000 000003e7 dnl
854 000000000000ffffffffffff 000000000000ffffffffffff dnl
855 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
856 00000000 00 000000 0000000000000000ffffffffffffffff
859 0000 0058 00000000 000003d7 dnl
860 000000000000ffffffffffff 000000000000ffffffffffff dnl
861 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
862 00000000 00 000000 0000000000000000ffffffffffffffff
865 0000 0058 00000000 000003d7 dnl
866 000000000000ffffffffffff 000000000000ffffffffffff dnl
867 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
868 00000000 00 000000 0000000000000000ffffffffffffffff
870 # ip,nw_src=192.168.128.0/24
871 0000 0058 00000000 000003f7 dnl
872 000000000000ffffffffffff 000000000000ffffffffffff dnl
873 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
874 00000000 00 000000 0000000000000000ffffffffffffffff
876 # ip,nw_src=128.160.128.0/165.165.165.165
879 0000 0058 00000000 000003f7 dnl
880 000000000000ffffffffffff 000000000000ffffffffffff dnl
881 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
882 00000000 00 000000 0000000000000000ffffffffffffffff
884 # ip,nw_dst=192.168.128.0/24
885 0000 0058 00000000 000003f7 dnl
886 000000000000ffffffffffff 000000000000ffffffffffff dnl
887 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
888 00000000 00 000000 0000000000000000ffffffffffffffff
890 # ip,nw_dst=128.160.128.0/165.165.165.165
893 0000 0058 00000000 000003f7 dnl
894 000000000000ffffffffffff 000000000000ffffffffffff dnl
895 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
896 00000000 00 000000 0000000000000000ffffffffffffffff
898 # arp,nw_src=192.168.128.0/24
899 0000 0058 00000000 000003f7 dnl
900 000000000000ffffffffffff 000000000000ffffffffffff dnl
901 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
902 00000000 00 000000 0000000000000000ffffffffffffffff
904 # arp,nw_dst=192.168.128.0/24
905 0000 0058 00000000 000003f7 dnl
906 000000000000ffffffffffff 000000000000ffffffffffff dnl
907 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
908 00000000 00 000000 0000000000000000ffffffffffffffff
911 0000 0058 00000000 00000397 dnl
912 000000000000ffffffffffff 000000000000ffffffffffff dnl
913 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
914 00000000 00 000000 0000000000000000ffffffffffffffff
917 0000 0058 00000000 00000357 dnl
918 000000000000ffffffffffff 000000000000ffffffffffff dnl
919 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
920 00000000 00 000000 0000000000000000ffffffffffffffff
923 0000 0058 00000000 00000397 dnl
924 000000000000ffffffffffff 000000000000ffffffffffff dnl
925 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
926 00000000 00 000000 0000000000000000ffffffffffffffff
929 0000 0058 00000000 00000397 dnl
930 000000000000ffffffffffff 000000000000ffffffffffff dnl
931 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
932 00000000 00 000000 0000000000000000ffffffffffffffff
935 0000 0058 00000000 00000357 dnl
936 000000000000ffffffffffff 000000000000ffffffffffff dnl
937 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
938 00000000 00 000000 0000000000000000ffffffffffffffff
941 0000 0058 00000000 00000397 dnl
942 000000000000ffffffffffff 000000000000ffffffffffff dnl
943 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
944 00000000 00 000000 0000000000000000ffffffffffffffff
947 0000 0058 00000000 00000357 dnl
948 000000000000ffffffffffff 000000000000ffffffffffff dnl
949 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
950 00000000 00 000000 0000000000000000ffffffffffffffff
954 0000 0058 00000000 000003d7 dnl
955 000000000000ffffffffffff 000000000000ffffffffffff dnl
956 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
957 00000000 00 000000 0000000000000000ffffffffffffffff
959 dnl SCTP tp_src matching not supported:
960 # bad ofp11_match: OFPBMC_BAD_FIELD
961 0000 0058 00000000 00000397 dnl
962 000000000000ffffffffffff 000000000000ffffffffffff dnl
963 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
964 00000000 00 000000 0000000000000000ffffffffffffffff
966 dnl SCTP tp_dst matching not supported:
967 # bad ofp11_match: OFPBMC_BAD_FIELD
968 0000 0058 00000000 00000357 dnl
969 000000000000ffffffffffff 000000000000ffffffffffff dnl
970 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
971 00000000 00 000000 0000000000000000ffffffffffffffff
973 dnl Ignore tp_src if not TCP or UDP or SCTP:
978 0000 0058 00000000 00000397 dnl
979 000000000000ffffffffffff 000000000000ffffffffffff dnl
980 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
981 00000000 00 000000 0000000000000000ffffffffffffffff
983 dnl Ignore tp_dst if not TCP or UDP or SCTP:
988 0000 0058 00000000 00000357 dnl
989 000000000000ffffffffffff 000000000000ffffffffffff dnl
990 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
991 00000000 00 000000 0000000000000000ffffffffffffffff
993 dnl mpls_label not yet supported:
994 # bad ofp11_match: OFPBMC_BAD_TAG
995 0000 0058 00000000 000002f7 dnl
996 000000000000ffffffffffff 000000000000ffffffffffff dnl
997 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
998 12345678 00 000000 0000000000000000ffffffffffffffff
1000 dnl mpls_tc not yet supported:
1001 # bad ofp11_match: OFPBMC_BAD_TAG
1002 0000 0058 00000000 000001f7 dnl
1003 000000000000ffffffffffff 000000000000ffffffffffff dnl
1004 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1005 00000000 5a 000000 0000000000000000ffffffffffffffff
1007 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1015 0000 0058 00000000 000000f7 dnl
1016 000000000000ffffffffffff 000000000000ffffffffffff dnl
1017 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1018 12345678 5a 000000 0000000000000000ffffffffffffffff
1021 # metadata=0x1234567890abcdef
1022 0000 0058 00000000 000003ff dnl
1023 000000000000ffffffffffff 000000000000ffffffffffff dnl
1024 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1025 00000000 00 000000 1234567890abcdef0000000000000000
1028 # metadata=0x5555555555555555/0x5555555555555555
1029 0000 0058 00000000 000003ff dnl
1030 000000000000ffffffffffff 000000000000ffffffffffff dnl
1031 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1032 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1035 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1040 0000 0058 00000000 000003ff dnl
1041 000000000000ffffffffffff 000000000000ffffffffffff dnl
1042 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1043 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1046 sed '/^[[#&]]/d' < test-data > input.txt
1047 sed -n 's/^# //p; /^$/p' < test-data > expout
1048 sed -n 's/^& //p' < test-data > experr
1049 AT_CAPTURE_FILE([input.txt])
1050 AT_CAPTURE_FILE([expout])
1051 AT_CAPTURE_FILE([experr])
1053 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1054 [0], [expout], [experr])
1057 AT_SETUP([ovs-ofctl parse-nx-match loose])
1058 AT_KEYWORDS([nx-match])
1059 AT_DATA([nx-match.txt], [dnl
1060 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1063 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1064 nx_pull_match() returned error OFPBMC_BAD_FIELD
1067 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1068 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1072 AT_SETUP([ovs-ofctl parse-oxm])
1074 AT_DATA([oxm.txt], [dnl
1078 OXM_OF_IN_PORT(00000000)
1079 OXM_OF_IN_PORT(fffffffe)
1082 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1083 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1084 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1085 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1086 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1089 OXM_OF_ETH_DST(0002e30f80a4)
1090 OXM_OF_ETH_DST_W(010000000000/010000000000)
1091 OXM_OF_ETH_DST_W(000000000000/010000000000)
1092 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1093 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1094 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1095 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1098 OXM_OF_ETH_SRC(020898456ddb)
1101 OXM_OF_ETH_TYPE(0800)
1102 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1105 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1106 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1110 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1111 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1115 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1116 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1117 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1118 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1119 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1120 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1123 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1124 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1125 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1126 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1127 OXM_OF_IPV4_DST(ac100014)
1128 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1131 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1132 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1133 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1134 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1135 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1137 # TCP destination port
1138 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1139 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1140 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1141 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1142 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1145 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1146 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1147 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1148 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1149 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1151 # UDP destination port
1152 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1153 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1154 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1155 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1156 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1159 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1160 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1163 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1164 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1165 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1166 OXM_OF_ICMPV4_CODE(00)
1169 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1170 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1171 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1173 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1175 # ARP source protocol address
1176 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1177 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1178 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1179 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1180 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1181 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1183 # ARP destination protocol address
1184 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1185 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1186 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1187 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1188 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1189 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1191 # ARP source hardware address
1192 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1193 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1194 OXM_OF_ARP_SHA(0002e30f80a4)
1196 # ARP destination hardware address
1197 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1198 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1199 OXM_OF_ARP_THA(0002e30f80a4)
1202 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1203 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1204 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1205 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1206 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1207 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1210 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1211 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1212 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1213 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1214 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1215 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1218 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1219 OXM_OF_IPV6_FLABEL(0000000f)
1220 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1222 # ND source hardware address
1223 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)
1224 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)
1225 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)
1226 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)
1228 # ND destination hardware address
1229 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)
1230 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)
1231 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)
1232 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)
1234 # Invalid field number.
1237 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1241 OXM_OF_IN_PORT(00000000)
1242 OXM_OF_IN_PORT(fffffffe)
1245 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1246 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1247 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1248 OXM_OF_METADATA(1234567890abcdef)
1252 OXM_OF_ETH_DST(0002e30f80a4)
1253 OXM_OF_ETH_DST_W(010000000000/010000000000)
1254 OXM_OF_ETH_DST_W(000000000000/010000000000)
1255 OXM_OF_ETH_DST_W(010000000000/010000000000)
1256 OXM_OF_ETH_DST(0002e30f80a4)
1258 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1261 OXM_OF_ETH_SRC(020898456ddb)
1264 OXM_OF_ETH_TYPE(0800)
1265 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1268 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1269 nx_pull_match() returned error OFPBMC_BAD_VALUE
1270 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1273 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1274 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1275 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1278 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1279 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1280 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1281 OXM_OF_ETH_TYPE(0800)
1282 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1283 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1286 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1287 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1288 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1289 OXM_OF_ETH_TYPE(0800)
1290 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1291 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1294 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1295 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1296 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1297 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1298 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1300 # TCP destination port
1301 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1302 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1303 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1304 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1305 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1308 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1309 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1310 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1311 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1312 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1314 # UDP destination port
1315 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1316 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1317 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1318 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1319 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1322 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1323 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1326 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1327 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1328 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1329 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1332 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1333 nx_pull_match() returned error OFPBMC_BAD_VALUE
1334 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1335 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1336 nx_pull_match() returned error OFPBMC_DUP_FIELD
1338 # ARP source protocol address
1339 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1340 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1341 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1342 OXM_OF_ETH_TYPE(0806)
1343 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1344 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1346 # ARP destination protocol address
1347 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1348 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1349 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1350 OXM_OF_ETH_TYPE(0806)
1351 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1352 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1354 # ARP source hardware address
1355 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1356 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1357 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1359 # ARP destination hardware address
1360 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1361 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1362 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1365 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1366 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1367 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1368 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1369 OXM_OF_ETH_TYPE(86dd)
1370 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1373 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1374 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1375 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1376 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1377 OXM_OF_ETH_TYPE(86dd)
1378 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1381 nx_pull_match() returned error OFPBMC_BAD_VALUE
1382 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1383 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1385 # ND source hardware address
1386 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)
1387 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1388 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1389 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1391 # ND destination hardware address
1392 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)
1393 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1394 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1395 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1397 # Invalid field number.
1398 nx_pull_match() returned error OFPBMC_BAD_FIELD
1402 AT_SETUP([ovs-ofctl parse-oxm loose])
1404 AT_DATA([oxm.txt], [dnl
1405 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1408 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1409 nx_pull_match() returned error OFPBMC_BAD_FIELD
1412 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1413 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1417 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
1418 dnl such as tunnels and metadata.
1419 AT_SETUP([ovs-ofctl -F option and NXM features])
1420 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
1421 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1423 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
1424 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1428 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1429 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1430 dnl additionally show up as the top 32 bits of the cookie.) This checks
1431 dnl for regression against bug #4566.
1432 AT_SETUP([ovs-ofctl -F option with flow_mods])
1434 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
1435 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
1437 tun_id=0x12345678 actions=drop
1442 dnl Check that "-F openflow10" is really honored on dump-flows.
1443 dnl (If it isn't, then dump-flows will show the register match.)
1444 AT_SETUP([ovs-ofctl dump-flows honors -F option])
1446 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
1447 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
1454 dnl Check that "-F openflow10" fails on dump-flows if the requested match
1455 dnl can't be represented in OpenFlow 1.0.
1456 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
1458 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
1459 [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1464 dnl Check that add-flow reports non-normalized flows (feature #5029).
1465 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
1467 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1469 ofp_util|INFO|normalization changed ofp_match, details:
1470 ofp_util|INFO| pre: nw_src=1.2.3.4
1471 ofp_util|INFO|post: @&t@
1476 dnl Check that --sort and --rsort works with dump-flows
1477 dnl Default field is 'priority'. Flow entries are displayed based
1478 dnl on field to sort.
1479 AT_SETUP([ovs-ofctl dump-flows with sorting])
1482 AT_DATA([allflows.txt], [[
1483 priority=4,in_port=23213 actions=output:42
1484 priority=5,in_port=1029 actions=output:43
1485 priority=7,in_port=1029 actions=output:43
1486 priority=3,in_port=1028 actions=output:44
1487 priority=1,in_port=1026 actions=output:45
1488 priority=6,in_port=1027 actions=output:64
1489 priority=2,in_port=1025 actions=output:47
1490 priority=8,tcp,tp_src=5 actions=drop
1491 priority=9,tcp,tp_src=6 actions=drop
1494 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
1496 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
1497 priority=1,in_port=1026 actions=output:45
1498 priority=2,in_port=1025 actions=output:47
1499 priority=3,in_port=1028 actions=output:44
1500 priority=4,in_port=23213 actions=output:42
1501 priority=5,in_port=1029 actions=output:43
1502 priority=6,in_port=1027 actions=output:64
1503 priority=7,in_port=1029 actions=output:43
1504 priority=8,tcp,tp_src=5 actions=drop
1505 priority=9,tcp,tp_src=6 actions=drop
1507 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
1508 priority=9,tcp,tp_src=6 actions=drop
1509 priority=8,tcp,tp_src=5 actions=drop
1510 priority=7,in_port=1029 actions=output:43
1511 priority=6,in_port=1027 actions=output:64
1512 priority=5,in_port=1029 actions=output:43
1513 priority=4,in_port=23213 actions=output:42
1514 priority=3,in_port=1028 actions=output:44
1515 priority=2,in_port=1025 actions=output:47
1516 priority=1,in_port=1026 actions=output:45
1518 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1519 priority=2,in_port=1025 actions=output:47
1520 priority=1,in_port=1026 actions=output:45
1521 priority=6,in_port=1027 actions=output:64
1522 priority=3,in_port=1028 actions=output:44
1523 priority=7,in_port=1029 actions=output:43
1524 priority=5,in_port=1029 actions=output:43
1525 priority=4,in_port=23213 actions=output:42
1526 priority=9,tcp,tp_src=6 actions=drop
1527 priority=8,tcp,tp_src=5 actions=drop
1529 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1530 priority=4,in_port=23213 actions=output:42
1531 priority=7,in_port=1029 actions=output:43
1532 priority=5,in_port=1029 actions=output:43
1533 priority=3,in_port=1028 actions=output:44
1534 priority=6,in_port=1027 actions=output:64
1535 priority=1,in_port=1026 actions=output:45
1536 priority=2,in_port=1025 actions=output:47
1537 priority=9,tcp,tp_src=6 actions=drop
1538 priority=8,tcp,tp_src=5 actions=drop
1540 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
1541 priority=8,tcp,tp_src=5 actions=drop
1542 priority=9,tcp,tp_src=6 actions=drop
1543 priority=7,in_port=1029 actions=output:43
1544 priority=6,in_port=1027 actions=output:64
1545 priority=5,in_port=1029 actions=output:43
1546 priority=4,in_port=23213 actions=output:42
1547 priority=3,in_port=1028 actions=output:44
1548 priority=2,in_port=1025 actions=output:47
1549 priority=1,in_port=1026 actions=output:45
1552 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
1553 [ priority=2,in_port=1025 actions=output:47
1554 priority=1,in_port=1026 actions=output:45
1555 priority=6,in_port=1027 actions=output:64
1556 priority=3,in_port=1028 actions=output:44
1557 priority=7,in_port=1029 actions=output:43
1558 priority=5,in_port=1029 actions=output:43
1559 priority=4,in_port=23213 actions=output:42
1560 priority=8,tcp,tp_src=5 actions=drop
1561 priority=9,tcp,tp_src=6 actions=drop
1566 AT_SETUP([ovs-ofctl diff-flows])
1569 # Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout.
1571 while test $1 -le $2; do
1573 set `expr $1 + ${3-1}` $2 $3
1577 # Add tons of flows to br0.
1578 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
1579 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
1581 # Dump them and compare against what we expect by hand, then with diff-flows.
1582 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
1583 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
1585 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
1587 # Remove even-numbered flows, compare again.
1588 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
1589 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
1590 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
1591 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
1592 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
1593 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])