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
13 actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
14 in_port=0 actions=resubmit:0
17 AT_CHECK([ovs-ofctl parse-flows flows.txt
19 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
20 [[usable protocols: any
21 chosen protocol: OpenFlow10-table_id
22 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
23 OFPT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
24 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
25 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
26 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
27 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
28 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
29 OFPT_FLOW_MOD: ADD actions=load:0xa6badbfffefe59fa->NXM_NX_IPV6_SRC[0..63],load:0xfe8001234567890a->NXM_NX_IPV6_SRC[64..127]
30 OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
34 AT_SETUP([ovs-ofctl parse-flows (NXM)])
35 AT_DATA([flows.txt], [[
37 tcp,tp_src=123,actions=flood
38 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
39 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
40 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
41 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
42 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
43 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
44 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
45 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
46 actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, NXM_NX_REG0[0..12])
48 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
49 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
50 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
51 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
52 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
53 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
54 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
55 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
56 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
57 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
58 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
59 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
60 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
61 check_overlap,actions=output:1,exit,output:2
62 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
63 actions=controller(max_len=123,reason=invalid_ttl,id=555)
66 AT_CHECK([ovs-ofctl parse-flows flows.txt
68 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
69 [[usable protocols: NXM+table_id
70 chosen protocol: NXM+table_id
71 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
72 NXT_FLOW_MOD: ADD table:255 in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
73 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
74 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
75 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
76 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
77 NXT_FLOW_MOD: ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
78 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
79 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
80 NXT_FLOW_MOD: ADD table:255 actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multipath(symmetric_l4,1024,iter_hash,5000,5050,NXM_NX_REG0[0..12])
81 NXT_FLOW_MOD: ADD table:1 actions=drop
82 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
83 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
84 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
85 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
86 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
87 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
88 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
89 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
90 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
91 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
92 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
93 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
94 NXT_FLOW_MOD: ADD table:255 send_flow_rem actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
95 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
96 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
97 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
101 AT_SETUP([ovs-ofctl -F nxm parse-flows])
102 AT_DATA([flows.txt], [
104 tcp,tp_src=123,actions=flood
105 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
106 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
107 ipv6,ipv6_label=0x12345 actions=2
108 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
109 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
110 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
111 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
112 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
113 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
114 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
115 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
116 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
117 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
118 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
119 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
120 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
121 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
122 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
123 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
124 tun_id=0x1234,cookie=0x5678,actions=flood
126 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
127 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
128 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
129 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
130 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
132 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
133 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
134 usable protocols: NXM
135 chosen protocol: NXM-table_id
136 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
137 NXT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
138 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
139 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
140 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
141 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
142 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
143 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
144 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
145 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
146 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
147 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
148 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
149 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
150 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
151 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
152 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
153 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
154 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
155 NXT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
156 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
157 NXT_FLOW_MOD: ADD actions=drop
158 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
159 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
160 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
161 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
162 NXT_FLOW_MOD: ADD actions=drop
166 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
167 AT_DATA([flows.txt], [[
169 tcp,tp_src=123,actions=flood
170 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
171 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
172 ipv6,ipv6_label=0x12345 actions=2
173 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
174 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
175 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
176 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
177 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
178 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
179 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
180 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
181 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
182 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
183 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
184 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
185 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
186 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
187 tun_id=0x1234,cookie=0x5678,actions=flood
189 reg0=123,actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:55->NXM_NX_REG2[0..31],move:NXM_NX_REG0[0..31]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
190 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
191 actions=autopath(5,NXM_NX_REG0[])
192 vlan_tci=0x1123/0x1fff,actions=drop
194 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
195 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
196 [[usable protocols: NXM
197 chosen protocol: NXM-table_id
198 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
199 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
200 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
201 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
202 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
203 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
204 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
205 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=drop
206 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=drop
207 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(0003), NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(86) actions=drop
208 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_VLAN_TCI_W(f000/f000), NXM_OF_IP_PROTO(11) idle:5 actions=strip_vlan,output:0
209 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=set_queue:37,output:1
210 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=pop_queue,output:1
211 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571) actions=drop
212 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_SLL(000ae4256bb0) actions=drop
213 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571), NXM_NX_ND_TLL(000ae4256bb1) actions=drop
214 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
215 NXT_FLOW_MOD: ADD <any> actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
216 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
217 NXT_FLOW_MOD: ADD <any> actions=drop
218 NXT_FLOW_MOD: ADD NXM_NX_REG0(0000007b) actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:0x37->NXM_NX_REG2[],move:NXM_NX_REG0[]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
219 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
220 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
221 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
223 AT_CHECK([[sed 's/^[^|]*|[^|]*|//' stderr]], [0], [dnl
224 autopath|WARN|The autopath action is deprecated and may be removed in February 2013. Please email dev@openvswitch.org with concerns.
228 AT_SETUP([ovs-ofctl parse-nx-match])
229 AT_KEYWORDS([nx-match])
230 AT_DATA([nx-match.txt], [dnl
238 NXM_OF_ETH_DST(0002e30f80a4)
239 NXM_OF_ETH_DST_W(010000000000/010000000000)
240 NXM_OF_ETH_DST_W(000000000000/010000000000)
241 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
242 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
243 NXM_OF_ETH_DST_W(60175619848f/000000000000)
244 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
245 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
248 NXM_OF_ETH_SRC(020898456ddb)
249 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
250 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
251 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
254 NXM_OF_ETH_TYPE(0800)
255 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
258 NXM_OF_VLAN_TCI(f009)
259 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
260 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
261 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
262 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
263 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
264 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
265 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
266 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
267 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
270 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
271 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
275 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
276 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
280 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
281 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
285 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
286 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
290 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
291 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
292 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
293 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
294 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
295 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
296 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
299 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
300 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
301 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
302 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
303 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
304 NXM_OF_IP_DST(ac100014)
305 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
308 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
309 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
310 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
311 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
312 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
314 # TCP destination port
315 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
316 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
317 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
318 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
319 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
322 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
323 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
324 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
325 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
326 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
328 # UDP destination port
329 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
330 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
331 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
332 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
333 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
336 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
337 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
340 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
341 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
342 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
346 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
347 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
348 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
350 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
352 # ARP source protocol address
353 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
354 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
355 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
356 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
357 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
358 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
359 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
361 # ARP destination protocol address
362 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
363 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
364 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
365 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
366 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
367 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
368 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
370 # ARP source hardware address
371 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
372 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
373 NXM_NX_ARP_SHA(0002e30f80a4)
375 # ARP destination hardware address
376 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
377 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
378 NXM_NX_ARP_THA(0002e30f80a4)
381 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
382 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
383 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
384 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
385 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
386 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
387 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
390 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
391 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
392 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
393 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
394 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
395 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
398 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
399 NXM_NX_IPV6_LABEL(0000000f)
400 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
403 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
404 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
405 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
406 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
407 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
408 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
410 # ND source hardware address
411 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
412 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
413 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
414 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
416 # ND destination hardware address
417 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
418 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
419 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
420 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
423 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
424 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
425 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
426 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
427 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
428 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
429 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
430 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
431 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
432 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
433 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
434 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
435 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
438 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
439 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
440 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
441 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
442 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
443 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
444 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
445 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
446 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
447 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
448 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
449 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
450 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
453 NXM_NX_COOKIE(00000000abcdef01)
454 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
455 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
456 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
459 NXM_NX_TUN_ID(00000000abcdef01)
460 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
461 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
462 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
465 NXM_NX_REG0(acebdf56)
466 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
467 NXM_NX_REG0_W(a0e0d050/ffffffff)
468 NXM_NX_REG0_W(a0e0d050/00000000)
470 # Invalid field number.
473 # Unimplemented registers.
475 # This test assumes that at least two registers, but fewer than 16,
476 # registers are implemented.
478 00010108(12345678/12345678)
480 00011f08(12345678/12345678)
482 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
490 NXM_OF_ETH_DST(0002e30f80a4)
491 NXM_OF_ETH_DST_W(010000000000/010000000000)
492 NXM_OF_ETH_DST_W(000000000000/010000000000)
493 NXM_OF_ETH_DST_W(010000000000/010000000000)
494 NXM_OF_ETH_DST(0002e30f80a4)
496 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
497 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
500 NXM_OF_ETH_SRC(020898456ddb)
501 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
502 NXM_OF_ETH_SRC(020898456ddb)
506 NXM_OF_ETH_TYPE(0800)
507 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
510 NXM_OF_VLAN_TCI(f009)
511 nx_pull_match() returned error OFPBMC_DUP_FIELD
512 NXM_OF_VLAN_TCI(0000)
513 NXM_OF_VLAN_TCI(3123)
514 NXM_OF_VLAN_TCI(0123)
515 NXM_OF_VLAN_TCI_W(1123/1fff)
516 NXM_OF_VLAN_TCI(1123)
518 NXM_OF_VLAN_TCI_W(f000/f000)
519 NXM_OF_VLAN_TCI_W(0000/e000)
522 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
523 nx_pull_match() returned error OFPBMC_BAD_VALUE
524 nx_pull_match() returned error OFPBMC_BAD_PREREQ
527 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
528 nx_pull_match() returned error OFPBMC_BAD_VALUE
529 nx_pull_match() returned error OFPBMC_BAD_PREREQ
532 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
533 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
534 nx_pull_match() returned error OFPBMC_BAD_PREREQ
537 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
538 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
539 nx_pull_match() returned error OFPBMC_BAD_PREREQ
542 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
543 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
544 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
545 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
546 NXM_OF_ETH_TYPE(0800)
547 nx_pull_match() returned error OFPBMC_BAD_PREREQ
548 nx_pull_match() returned error OFPBMC_BAD_PREREQ
551 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
552 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
553 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
554 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
555 NXM_OF_ETH_TYPE(0800)
556 nx_pull_match() returned error OFPBMC_BAD_PREREQ
557 nx_pull_match() returned error OFPBMC_BAD_PREREQ
560 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
561 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
562 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
563 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
564 nx_pull_match() returned error OFPBMC_BAD_PREREQ
566 # TCP destination port
567 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
568 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
569 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
570 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
571 nx_pull_match() returned error OFPBMC_BAD_PREREQ
574 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
575 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
576 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
577 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
578 nx_pull_match() returned error OFPBMC_BAD_PREREQ
580 # UDP destination port
581 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
582 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
583 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
584 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
585 nx_pull_match() returned error OFPBMC_BAD_PREREQ
588 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
589 nx_pull_match() returned error OFPBMC_BAD_PREREQ
592 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
593 nx_pull_match() returned error OFPBMC_BAD_PREREQ
594 nx_pull_match() returned error OFPBMC_BAD_PREREQ
595 nx_pull_match() returned error OFPBMC_BAD_PREREQ
598 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
599 nx_pull_match() returned error OFPBMC_BAD_VALUE
600 nx_pull_match() returned error OFPBMC_BAD_PREREQ
601 nx_pull_match() returned error OFPBMC_BAD_PREREQ
602 nx_pull_match() returned error OFPBMC_DUP_FIELD
604 # ARP source protocol address
605 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
606 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
607 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
608 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
609 NXM_OF_ETH_TYPE(0806)
610 nx_pull_match() returned error OFPBMC_BAD_PREREQ
611 nx_pull_match() returned error OFPBMC_BAD_PREREQ
613 # ARP destination protocol address
614 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
615 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
616 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
617 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
618 NXM_OF_ETH_TYPE(0806)
619 nx_pull_match() returned error OFPBMC_BAD_PREREQ
620 nx_pull_match() returned error OFPBMC_BAD_PREREQ
622 # ARP source hardware address
623 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
624 nx_pull_match() returned error OFPBMC_BAD_PREREQ
625 nx_pull_match() returned error OFPBMC_BAD_PREREQ
627 # ARP destination hardware address
628 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
629 nx_pull_match() returned error OFPBMC_BAD_PREREQ
630 nx_pull_match() returned error OFPBMC_BAD_PREREQ
633 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
634 nx_pull_match() returned error OFPBMC_BAD_PREREQ
635 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
636 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
637 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
638 NXM_OF_ETH_TYPE(86dd)
639 nx_pull_match() returned error OFPBMC_BAD_PREREQ
642 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
643 nx_pull_match() returned error OFPBMC_BAD_PREREQ
644 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
645 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
646 NXM_OF_ETH_TYPE(86dd)
647 nx_pull_match() returned error OFPBMC_BAD_PREREQ
650 nx_pull_match() returned error OFPBMC_BAD_VALUE
651 nx_pull_match() returned error OFPBMC_BAD_PREREQ
652 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
655 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
656 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
657 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
658 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
659 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
660 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
662 # ND source hardware address
663 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
664 nx_pull_match() returned error OFPBMC_BAD_PREREQ
665 nx_pull_match() returned error OFPBMC_BAD_PREREQ
666 nx_pull_match() returned error OFPBMC_BAD_PREREQ
668 # ND destination hardware address
669 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
670 nx_pull_match() returned error OFPBMC_BAD_PREREQ
671 nx_pull_match() returned error OFPBMC_BAD_PREREQ
672 nx_pull_match() returned error OFPBMC_BAD_PREREQ
675 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
676 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
677 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
678 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
679 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
680 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
681 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
682 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
683 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
684 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
685 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
686 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
687 nx_pull_match() returned error OFPBMC_BAD_VALUE
690 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
691 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
692 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
693 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
694 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
695 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
696 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
697 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
698 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
699 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
700 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
701 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
702 nx_pull_match() returned error OFPBMC_BAD_VALUE
705 NXM_NX_COOKIE(00000000abcdef01)
706 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
707 NXM_NX_COOKIE(84200000abcdef01)
711 NXM_NX_TUN_ID(00000000abcdef01)
712 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
713 NXM_NX_TUN_ID(84200000abcdef01)
717 NXM_NX_REG0(acebdf56)
718 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
719 NXM_NX_REG0(a0e0d050)
722 # Invalid field number.
723 nx_pull_match() returned error OFPBMC_BAD_FIELD
725 # Unimplemented registers.
727 # This test assumes that at least two registers, but fewer than 16,
728 # registers are implemented.
729 NXM_NX_REG0(12345678)
730 NXM_NX_REG0_W(12345678/12345678)
731 nx_pull_match() returned error OFPBMC_BAD_FIELD
732 nx_pull_match() returned error OFPBMC_BAD_FIELD
736 AT_SETUP([ovs-ofctl parse-ofp10-match])
738 AT_DATA([test-data], [dnl
740 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
741 xxxxxxxx xxxxxxxx xxxx xxxx
743 # dl_src=00:01:02:03:04:05
744 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
745 xxxxxxxx xxxxxxxx xxxx xxxx
747 # dl_dst=10:20:30:40:50:60
748 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
749 xxxxxxxx xxxxxxxx xxxx xxxx
752 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
753 xxxxxxxx xxxxxxxx xxxx xxxx
756 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
757 xxxxxxxx xxxxxxxx xxxx xxxx
759 # dl_vlan=291,dl_vlan_pcp=4
760 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
761 xxxxxxxx xxxxxxxx xxxx xxxx
764 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
765 xxxxxxxx xxxxxxxx xxxx xxxx
767 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
768 dnl OVS ignores it and drops it on output.
772 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
773 xxxxxxxx xxxxxxxx xxxx xxxx
775 dnl Invalid VID and PCP discards out-of-range bits:
776 # dl_vlan=256,dl_vlan_pcp=7
779 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
780 xxxxxxxx xxxxxxxx xxxx xxxx
783 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
784 xxxxxxxx xxxxxxxx xxxx xxxx
787 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
788 xxxxxxxx xxxxxxxx xxxx xxxx
790 dnl Ignore nw_proto if not IP or ARP:
791 # dl_type=0x1234,nw_proto=5
792 # normal: 3: cf -> ef
793 # normal: 25: 05 -> 00
794 & ofp_util|INFO|normalization changed ofp_match, details:
795 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
796 & ofp_util|INFO|post: dl_type=0x1234
797 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
798 xxxxxxxx xxxxxxxx xxxx xxxx
801 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
802 xxxxxxxx xxxxxxxx xxxx xxxx
804 dnl Ignore nw_tos if not IP:
807 # normal: 1: 18 -> 38
808 # normal: 24: 04 -> 00
809 & ofp_util|INFO|normalization changed ofp_match, details:
810 & ofp_util|INFO| pre: arp,nw_tos=4
811 & ofp_util|INFO|post: arp
812 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
813 xxxxxxxx xxxxxxxx xxxx xxxx
815 dnl Low 2 bits of invalid TOS are forced to 0:
818 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
819 xxxxxxxx xxxxxxxx xxxx xxxx
822 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
823 xxxxxxxx xxxxxxxx xxxx xxxx
825 # ip,nw_src=192.168.128.85
826 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
827 c0a88055 xxxxxxxx xxxx xxxx
829 # ip,nw_src=192.168.128.0/24
831 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
832 c0a88055 xxxxxxxx xxxx xxxx
834 # ip,nw_dst=192.168.128.85
835 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
836 xxxxxxxx c0a88055 xxxx xxxx
838 # ip,nw_dst=192.168.128.0/24
840 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
841 xxxxxxxx c0a88055 xxxx xxxx
843 # arp,arp_spa=192.168.128.85
844 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
845 c0a88055 xxxxxxxx xxxx xxxx
847 # arp,arp_spa=192.168.128.0/24
849 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
850 c0a88055 xxxxxxxx xxxx xxxx
852 # arp,arp_tpa=192.168.128.85
853 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
854 xxxxxxxx c0a88055 xxxx xxxx
856 # arp,arp_tpa=192.168.128.0/24
858 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
859 xxxxxxxx c0a88055 xxxx xxxx
861 dnl Ignore nw_src if not IP or ARP:
862 # dl_type=0x1234,nw_src=192.168.128.0/24
864 # normal: 2: 08 -> 20
865 # normal: 28: c0 -> 00
866 # normal: 29: a8 -> 00
867 # normal: 30: 80 -> 00
868 & ofp_util|INFO|normalization changed ofp_match, details:
869 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
870 & ofp_util|INFO|post: dl_type=0x1234
871 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
872 c0a88055 xxxxxxxx xxxx xxxx
874 dnl Ignore nw_dst if not IP or ARP:
875 # dl_type=0x1234,nw_dst=192.168.128.0/24
877 # normal: 1: 32 -> 38
878 # normal: 32: c0 -> 00
879 # normal: 33: a8 -> 00
880 # normal: 34: 80 -> 00
881 & ofp_util|INFO|normalization changed ofp_match, details:
882 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
883 & ofp_util|INFO|post: dl_type=0x1234
884 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
885 xxxxxxxx c0a88055 xxxx xxxx
888 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
889 xxxxxxxx xxxxxxxx 01bb xxxx
892 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
893 xxxxxxxx xxxxxxxx xxxx 01bb
896 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
897 xxxxxxxx xxxxxxxx 01bb xxxx
900 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
901 xxxxxxxx xxxxxxxx xxxx 01bb
904 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
905 xxxxxxxx xxxxxxxx 0005 xxxx
908 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
909 xxxxxxxx xxxxxxxx xxxx 0008
911 dnl Ignore tp_src if not TCP or UDP:
912 # ip,nw_proto=21,tp_src=443
913 # normal: 3: 8f -> cf
914 # normal: 36: 01 -> 00
915 # normal: 37: bb -> 00
916 & ofp_util|INFO|normalization changed ofp_match, details:
917 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
918 & ofp_util|INFO|post: ip,nw_proto=21
919 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
920 xxxxxxxx xxxxxxxx 01bb xxxx
922 dnl Ignore tp_dst if not TCP or UDP:
923 # ip,nw_proto=21,tp_dst=443
924 # normal: 3: 4f -> cf
925 # normal: 38: 01 -> 00
926 # normal: 39: bb -> 00
927 dnl The normalization details are suppressed here due to rate-limiting.
928 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
929 xxxxxxxx xxxxxxxx xxxx 01bb
932 sed '/^[[#&]]/d' < test-data > input.txt
933 sed -n 's/^# //p; /^$/p' < test-data > expout
934 sed -n 's/^& //p' < test-data > experr
935 AT_CAPTURE_FILE([input.txt])
936 AT_CAPTURE_FILE([expout])
937 AT_CAPTURE_FILE([experr])
939 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
940 [0], [expout], [experr])
943 AT_SETUP([ovs-ofctl parse-ofp11-match])
945 AT_DATA([test-data], [dnl
947 0000 0058 fffffffe 000003fe dnl
948 000000000000ffffffffffff 000000000000ffffffffffff dnl
949 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
950 00000000 00 000000 0000000000000000ffffffffffffffff
952 # bad ofp11_match: OFPBMC_BAD_VALUE
953 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
954 0000 0058 12345678 000003fe dnl
955 000000000000ffffffffffff 000000000000ffffffffffff dnl
956 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
957 00000000 00 000000 0000000000000000ffffffffffffffff
959 # dl_src=00:01:02:03:04:05
960 0000 0058 00000000 000003ff dnl
961 000102030405000000000000 000000000000ffffffffffff dnl
962 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
963 00000000 00 000000 0000000000000000ffffffffffffffff
965 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
966 0000 0058 00000000 000003ff dnl
967 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
968 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
969 00000000 00 000000 0000000000000000ffffffffffffffff
971 # dl_dst=00:01:02:03:04:05
972 0000 0058 00000000 000003ff dnl
973 000000000000ffffffffffff 000102030405000000000000 dnl
974 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
975 00000000 00 000000 0000000000000000ffffffffffffffff
977 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
978 0000 0058 00000000 000003ff dnl
979 000000000000ffffffffffff 010000000000feffffffffff dnl
980 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
981 00000000 00 000000 0000000000000000ffffffffffffffff
983 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
984 0000 0058 00000000 000003ff dnl
985 000000000000ffffffffffff 000102030405010000000000 dnl
986 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
987 00000000 00 000000 0000000000000000ffffffffffffffff
989 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
990 0000 0058 00000000 000003ff dnl
991 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
992 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
993 00000000 00 000000 0000000000000000ffffffffffffffff
995 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
996 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1000 0000 0058 00000001 000003fa dnl
1001 000000000000ffffffffffff 000000000000ffffffffffff dnl
1002 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1003 00000000 00 000000 0000000000000000ffffffffffffffff
1006 0000 0058 00000000 000003fd dnl
1007 000000000000ffffffffffff 000000000000ffffffffffff dnl
1008 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1009 00000000 00 000000 0000000000000000ffffffffffffffff
1013 0000 0058 00000000 000003fd dnl
1014 000000000000ffffffffffff 000000000000ffffffffffff dnl
1015 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1016 00000000 00 000000 0000000000000000ffffffffffffffff
1018 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1019 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1023 0000 0058 00000000 000003f9 dnl
1024 000000000000ffffffffffff 000000000000ffffffffffff dnl
1025 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1026 00000000 00 000000 0000000000000000ffffffffffffffff
1028 # vlan_tci=0x1000/0x1000
1029 0000 0058 00000000 000003fd dnl
1030 000000000000ffffffffffff 000000000000ffffffffffff dnl
1031 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1032 00000000 00 000000 0000000000000000ffffffffffffffff
1034 dnl Try invalid VID:
1035 # bad ofp11_match: OFPBMC_BAD_VALUE
1036 0000 0058 00000000 000003fd dnl
1037 000000000000ffffffffffff 000000000000ffffffffffff dnl
1038 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1039 00000000 00 000000 0000000000000000ffffffffffffffff
1042 0000 0058 00000000 000003f9 dnl
1043 000000000000ffffffffffff 000000000000ffffffffffff dnl
1044 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1045 00000000 00 000000 0000000000000000ffffffffffffffff
1047 # dl_vlan=10,dl_vlan_pcp=6
1048 0000 0058 00000000 000003f9 dnl
1049 000000000000ffffffffffff 000000000000ffffffffffff dnl
1050 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1051 00000000 00 000000 0000000000000000ffffffffffffffff
1054 0000 0058 00000000 000003f7 dnl
1055 000000000000ffffffffffff 000000000000ffffffffffff dnl
1056 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1057 00000000 00 000000 0000000000000000ffffffffffffffff
1060 0000 0058 00000000 000003e7 dnl
1061 000000000000ffffffffffff 000000000000ffffffffffff dnl
1062 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1063 00000000 00 000000 0000000000000000ffffffffffffffff
1065 dnl Try invalid TOS:
1066 # bad ofp11_match: OFPBMC_BAD_VALUE
1067 0000 0058 00000000 000003e7 dnl
1068 000000000000ffffffffffff 000000000000ffffffffffff dnl
1069 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1070 00000000 00 000000 0000000000000000ffffffffffffffff
1073 0000 0058 00000000 000003d7 dnl
1074 000000000000ffffffffffff 000000000000ffffffffffff dnl
1075 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1076 00000000 00 000000 0000000000000000ffffffffffffffff
1079 0000 0058 00000000 000003d7 dnl
1080 000000000000ffffffffffff 000000000000ffffffffffff dnl
1081 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1082 00000000 00 000000 0000000000000000ffffffffffffffff
1084 # ip,nw_src=192.168.128.0/24
1085 0000 0058 00000000 000003f7 dnl
1086 000000000000ffffffffffff 000000000000ffffffffffff dnl
1087 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1088 00000000 00 000000 0000000000000000ffffffffffffffff
1090 # ip,nw_src=128.160.128.0/165.165.165.165
1093 0000 0058 00000000 000003f7 dnl
1094 000000000000ffffffffffff 000000000000ffffffffffff dnl
1095 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1096 00000000 00 000000 0000000000000000ffffffffffffffff
1098 # ip,nw_dst=192.168.128.0/24
1099 0000 0058 00000000 000003f7 dnl
1100 000000000000ffffffffffff 000000000000ffffffffffff dnl
1101 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1102 00000000 00 000000 0000000000000000ffffffffffffffff
1104 # ip,nw_dst=128.160.128.0/165.165.165.165
1107 0000 0058 00000000 000003f7 dnl
1108 000000000000ffffffffffff 000000000000ffffffffffff dnl
1109 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1110 00000000 00 000000 0000000000000000ffffffffffffffff
1112 # arp,arp_spa=192.168.128.0/24
1113 0000 0058 00000000 000003f7 dnl
1114 000000000000ffffffffffff 000000000000ffffffffffff dnl
1115 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1116 00000000 00 000000 0000000000000000ffffffffffffffff
1118 # arp,arp_tpa=192.168.128.0/24
1119 0000 0058 00000000 000003f7 dnl
1120 000000000000ffffffffffff 000000000000ffffffffffff dnl
1121 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1122 00000000 00 000000 0000000000000000ffffffffffffffff
1125 0000 0058 00000000 00000397 dnl
1126 000000000000ffffffffffff 000000000000ffffffffffff dnl
1127 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1128 00000000 00 000000 0000000000000000ffffffffffffffff
1131 0000 0058 00000000 00000357 dnl
1132 000000000000ffffffffffff 000000000000ffffffffffff dnl
1133 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1134 00000000 00 000000 0000000000000000ffffffffffffffff
1137 0000 0058 00000000 00000397 dnl
1138 000000000000ffffffffffff 000000000000ffffffffffff dnl
1139 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1140 00000000 00 000000 0000000000000000ffffffffffffffff
1143 0000 0058 00000000 00000397 dnl
1144 000000000000ffffffffffff 000000000000ffffffffffff dnl
1145 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1146 00000000 00 000000 0000000000000000ffffffffffffffff
1149 0000 0058 00000000 00000357 dnl
1150 000000000000ffffffffffff 000000000000ffffffffffff dnl
1151 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1152 00000000 00 000000 0000000000000000ffffffffffffffff
1155 0000 0058 00000000 00000397 dnl
1156 000000000000ffffffffffff 000000000000ffffffffffff dnl
1157 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1158 00000000 00 000000 0000000000000000ffffffffffffffff
1161 0000 0058 00000000 00000357 dnl
1162 000000000000ffffffffffff 000000000000ffffffffffff dnl
1163 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1164 00000000 00 000000 0000000000000000ffffffffffffffff
1168 0000 0058 00000000 000003d7 dnl
1169 000000000000ffffffffffff 000000000000ffffffffffff dnl
1170 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1171 00000000 00 000000 0000000000000000ffffffffffffffff
1173 dnl SCTP tp_src matching not supported:
1174 # bad ofp11_match: OFPBMC_BAD_FIELD
1175 0000 0058 00000000 00000397 dnl
1176 000000000000ffffffffffff 000000000000ffffffffffff dnl
1177 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1178 00000000 00 000000 0000000000000000ffffffffffffffff
1180 dnl SCTP tp_dst matching not supported:
1181 # bad ofp11_match: OFPBMC_BAD_FIELD
1182 0000 0058 00000000 00000357 dnl
1183 000000000000ffffffffffff 000000000000ffffffffffff dnl
1184 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1185 00000000 00 000000 0000000000000000ffffffffffffffff
1187 dnl Ignore tp_src if not TCP or UDP or SCTP:
1192 0000 0058 00000000 00000397 dnl
1193 000000000000ffffffffffff 000000000000ffffffffffff dnl
1194 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1195 00000000 00 000000 0000000000000000ffffffffffffffff
1197 dnl Ignore tp_dst if not TCP or UDP or SCTP:
1202 0000 0058 00000000 00000357 dnl
1203 000000000000ffffffffffff 000000000000ffffffffffff dnl
1204 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1205 00000000 00 000000 0000000000000000ffffffffffffffff
1207 dnl mpls_label not yet supported:
1208 # bad ofp11_match: OFPBMC_BAD_TAG
1209 0000 0058 00000000 000002f7 dnl
1210 000000000000ffffffffffff 000000000000ffffffffffff dnl
1211 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1212 12345678 00 000000 0000000000000000ffffffffffffffff
1214 dnl mpls_tc not yet supported:
1215 # bad ofp11_match: OFPBMC_BAD_TAG
1216 0000 0058 00000000 000001f7 dnl
1217 000000000000ffffffffffff 000000000000ffffffffffff dnl
1218 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1219 00000000 5a 000000 0000000000000000ffffffffffffffff
1221 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1229 0000 0058 00000000 000000f7 dnl
1230 000000000000ffffffffffff 000000000000ffffffffffff dnl
1231 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1232 12345678 5a 000000 0000000000000000ffffffffffffffff
1235 # metadata=0x1234567890abcdef
1236 0000 0058 00000000 000003ff dnl
1237 000000000000ffffffffffff 000000000000ffffffffffff dnl
1238 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1239 00000000 00 000000 1234567890abcdef0000000000000000
1242 # metadata=0x5555555555555555/0x5555555555555555
1243 0000 0058 00000000 000003ff dnl
1244 000000000000ffffffffffff 000000000000ffffffffffff dnl
1245 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1246 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1249 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1254 0000 0058 00000000 000003ff dnl
1255 000000000000ffffffffffff 000000000000ffffffffffff dnl
1256 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1257 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1260 sed '/^[[#&]]/d' < test-data > input.txt
1261 sed -n 's/^# //p; /^$/p' < test-data > expout
1262 sed -n 's/^& //p' < test-data > experr
1263 AT_CAPTURE_FILE([input.txt])
1264 AT_CAPTURE_FILE([expout])
1265 AT_CAPTURE_FILE([experr])
1267 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1268 [0], [expout], [experr])
1271 AT_SETUP([ovs-ofctl parse-nx-match loose])
1272 AT_KEYWORDS([nx-match])
1273 AT_DATA([nx-match.txt], [dnl
1274 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1277 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1278 nx_pull_match() returned error OFPBMC_BAD_FIELD
1281 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1282 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1286 AT_SETUP([ovs-ofctl parse-oxm])
1288 AT_DATA([oxm.txt], [dnl
1292 OXM_OF_IN_PORT(00000000)
1293 OXM_OF_IN_PORT(fffffffe)
1296 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1297 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1298 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1299 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1300 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1303 OXM_OF_ETH_DST(0002e30f80a4)
1304 OXM_OF_ETH_DST_W(010000000000/010000000000)
1305 OXM_OF_ETH_DST_W(000000000000/010000000000)
1306 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1307 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1308 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1309 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1312 OXM_OF_ETH_SRC(020898456ddb)
1315 OXM_OF_ETH_TYPE(0800)
1316 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1319 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1320 OXM_OF_VLAN_VID(f009) # Bad Value
1321 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1322 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1323 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1324 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1325 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1326 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1327 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1328 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1329 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1330 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1331 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1332 OXM_OF_VLAN_VID_W(1123/0000) # Packets with or without 802.1Q header
1333 OXM_OF_VLAN_VID_W(1123/1f0f), # Packets with # VID=123 (masked)
1334 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1335 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1336 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1339 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1340 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1344 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1345 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1349 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1350 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1351 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1352 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1353 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1354 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1357 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1358 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1359 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1360 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1361 OXM_OF_IPV4_DST(ac100014)
1362 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1365 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1366 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1367 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1368 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1369 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1371 # TCP destination port
1372 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1373 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1374 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1375 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1376 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1379 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1380 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1381 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1382 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1383 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1385 # UDP destination port
1386 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1387 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1388 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1389 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1390 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1393 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1394 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1397 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1398 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1399 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1400 OXM_OF_ICMPV4_CODE(00)
1403 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1404 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1405 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1407 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1409 # ARP source protocol address
1410 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1411 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1412 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1413 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1414 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1415 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1417 # ARP destination protocol address
1418 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1419 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1420 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1421 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1422 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1423 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1425 # ARP source hardware address
1426 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1427 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1428 OXM_OF_ARP_SHA(0002e30f80a4)
1429 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1430 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1431 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1433 # ARP destination hardware address
1434 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1435 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1436 OXM_OF_ARP_THA(0002e30f80a4)
1437 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1438 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1439 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1442 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1443 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1444 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1445 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1446 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1447 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1450 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1451 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1452 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1453 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1454 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1455 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1458 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1459 OXM_OF_IPV6_FLABEL(0000000f)
1460 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1461 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1462 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1463 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1464 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1465 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1466 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1468 # ND source hardware address
1469 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1470 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1471 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1472 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1474 # ND destination hardware address
1475 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1476 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1477 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1478 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1480 # Invalid field number.
1483 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1487 OXM_OF_IN_PORT(00000000)
1488 OXM_OF_IN_PORT(fffffffe)
1491 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1492 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1493 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1494 OXM_OF_METADATA(1234567890abcdef)
1498 OXM_OF_ETH_DST(0002e30f80a4)
1499 OXM_OF_ETH_DST_W(010000000000/010000000000)
1500 OXM_OF_ETH_DST_W(000000000000/010000000000)
1501 OXM_OF_ETH_DST_W(010000000000/010000000000)
1502 OXM_OF_ETH_DST(0002e30f80a4)
1504 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1507 OXM_OF_ETH_SRC(020898456ddb)
1510 OXM_OF_ETH_TYPE(0800)
1511 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1514 nx_pull_match() returned error OFPBMC_DUP_FIELD
1515 nx_pull_match() returned error OFPBMC_BAD_VALUE
1516 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1517 OXM_OF_VLAN_VID(0000)
1518 OXM_OF_VLAN_VID(1123)
1519 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1520 OXM_OF_VLAN_VID(0123)
1521 OXM_OF_VLAN_VID_W(0123/0123)
1522 OXM_OF_VLAN_VID_W(0123/0123)
1523 OXM_OF_VLAN_VID_W(0123/1123)
1524 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1525 OXM_OF_VLAN_VID(1123)
1526 OXM_OF_VLAN_VID(1123)
1528 OXM_OF_VLAN_VID_W(1103/1f0f)
1529 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1530 OXM_OF_VLAN_VID_W(1000/1000)
1531 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1534 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1535 nx_pull_match() returned error OFPBMC_BAD_VALUE
1536 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1539 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1540 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1541 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1544 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1545 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1546 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1547 OXM_OF_ETH_TYPE(0800)
1548 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1549 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1552 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1553 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1554 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1555 OXM_OF_ETH_TYPE(0800)
1556 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1557 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1560 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1561 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1562 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1563 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1564 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1566 # TCP destination port
1567 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1568 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1569 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1570 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1571 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1574 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1575 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1576 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1577 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1578 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1580 # UDP destination port
1581 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1582 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1583 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1584 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1585 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1588 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1589 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1592 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1593 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1594 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1595 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1598 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1599 nx_pull_match() returned error OFPBMC_BAD_VALUE
1600 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1601 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1602 nx_pull_match() returned error OFPBMC_DUP_FIELD
1604 # ARP source protocol address
1605 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1606 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1607 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1608 OXM_OF_ETH_TYPE(0806)
1609 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1610 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1612 # ARP destination protocol address
1613 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1614 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1615 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1616 OXM_OF_ETH_TYPE(0806)
1617 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1618 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1620 # ARP source hardware address
1621 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1622 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1623 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1624 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1625 OXM_OF_ETH_TYPE(0806)
1626 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1628 # ARP destination hardware address
1629 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1630 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1631 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1632 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1633 OXM_OF_ETH_TYPE(0806)
1634 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1637 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1638 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1639 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1640 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1641 OXM_OF_ETH_TYPE(86dd)
1642 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1645 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1646 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1647 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1648 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1649 OXM_OF_ETH_TYPE(86dd)
1650 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1653 nx_pull_match() returned error OFPBMC_BAD_VALUE
1654 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1655 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1656 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1657 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1658 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1659 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1660 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1661 OXM_OF_ETH_TYPE(86dd)
1663 # ND source hardware address
1664 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(87), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1665 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1666 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1667 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1669 # ND destination hardware address
1670 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(88), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1671 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1672 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1673 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1675 # Invalid field number.
1676 nx_pull_match() returned error OFPBMC_BAD_FIELD
1680 AT_SETUP([ovs-ofctl parse-oxm loose])
1682 AT_DATA([oxm.txt], [dnl
1683 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1686 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1687 nx_pull_match() returned error OFPBMC_BAD_FIELD
1690 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1691 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1695 dnl Check all of the patterns mentioned in the "VLAN Matching" section
1696 dnl in the DESIGN file at top level.
1697 AT_SETUP([ovs-ofctl check-vlan])
1701 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
1703 NXM: <any> -> 0000/0000
1704 OXM: <any> -> 0000/0000,--
1705 OF1.0: 0000/1,00/1 -> 0000/0000
1706 OF1.1: 0000/1,00/1 -> 0000/0000
1710 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
1711 vlan_tci=0x0000 -> 0000/ffff
1712 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
1713 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
1714 OF1.0: ffff/0,00/1 -> 0000/ffff
1715 OF1.1: ffff/0,00/1 -> 0000/ffff
1719 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
1720 dl_vlan=2748 -> 1abc/1fff
1721 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
1722 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
1723 OF1.0: 0abc/0,00/1 -> 1abc/1fff
1724 OF1.1: 0abc/0,00/1 -> 1abc/1fff
1728 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
1729 dl_vlan_pcp=5 -> b000/f000
1730 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
1731 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
1732 OF1.0: 0000/1,05/0 -> b000/f000
1733 OF1.1: fffe/0,05/0 -> b000/f000
1737 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
1738 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
1739 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
1740 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
1741 OF1.0: 0abc/0,05/0 -> babc/ffff
1742 OF1.1: 0abc/0,05/0 -> babc/ffff
1746 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
1747 vlan_tci=0x0000/0x0fff -> 0000/0fff
1748 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
1749 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1750 OF1.0: 0000/0,00/1 -> 1000/1fff
1751 OF1.1: 0000/0,00/1 -> 1000/1fff
1755 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
1756 vlan_tci=0x0000/0xf000 -> 0000/f000
1757 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
1758 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
1759 OF1.0: ffff/0,00/1 -> 0000/ffff
1760 OF1.1: ffff/0,00/1 -> 0000/ffff
1764 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
1765 vlan_tci=0x0000/0xefff -> 0000/efff
1766 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
1767 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1768 OF1.0: 0000/0,00/0 -> 1000/ffff
1769 OF1.1: 0000/0,00/0 -> 1000/ffff
1773 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
1774 vlan_tci=0x1001/0x1001 -> 1001/1001
1775 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
1776 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
1777 OF1.0: 0001/0,00/1 -> 1001/1fff
1778 OF1.1: 0001/0,00/1 -> 1001/1fff
1782 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
1783 vlan_tci=0x3000/0x3000 -> 3000/3000
1784 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
1785 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
1786 OF1.0: 0000/1,01/0 -> 3000/f000
1787 OF1.1: fffe/0,01/0 -> 3000/f000
1792 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
1793 dnl such as tunnels and metadata.
1794 AT_SETUP([ovs-ofctl -F option and NXM features])
1795 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
1796 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1798 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
1799 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1803 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1804 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1805 dnl additionally show up as the top 32 bits of the cookie.) This checks
1806 dnl for regression against bug #4566.
1807 AT_SETUP([ovs-ofctl -F option with flow_mods])
1809 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
1810 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
1812 tun_id=0x12345678 actions=drop
1817 dnl Check that "-F openflow10" is really honored on dump-flows.
1818 dnl (If it isn't, then dump-flows will show the register match.)
1819 AT_SETUP([ovs-ofctl dump-flows honors -F option])
1821 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
1822 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
1829 dnl Check that "-F openflow10" fails on dump-flows if the requested match
1830 dnl can't be represented in OpenFlow 1.0.
1831 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
1833 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
1834 [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1839 dnl Check that add-flow reports non-normalized flows (feature #5029).
1840 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
1842 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1844 ofp_util|INFO|normalization changed ofp_match, details:
1845 ofp_util|INFO| pre: nw_src=1.2.3.4
1846 ofp_util|INFO|post: @&t@
1851 dnl Check that --sort and --rsort works with dump-flows
1852 dnl Default field is 'priority'. Flow entries are displayed based
1853 dnl on field to sort.
1854 AT_SETUP([ovs-ofctl dump-flows with sorting])
1857 AT_DATA([allflows.txt], [[
1858 priority=4,in_port=23213 actions=output:42
1859 priority=5,in_port=1029 actions=output:43
1860 priority=7,in_port=1029 actions=output:43
1861 priority=3,in_port=1028 actions=output:44
1862 priority=1,in_port=1026 actions=output:45
1863 priority=6,in_port=1027 actions=output:64
1864 priority=2,in_port=1025 actions=output:47
1865 priority=8,tcp,tp_src=5 actions=drop
1866 priority=9,tcp,tp_src=6 actions=drop
1869 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
1871 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
1872 priority=1,in_port=1026 actions=output:45
1873 priority=2,in_port=1025 actions=output:47
1874 priority=3,in_port=1028 actions=output:44
1875 priority=4,in_port=23213 actions=output:42
1876 priority=5,in_port=1029 actions=output:43
1877 priority=6,in_port=1027 actions=output:64
1878 priority=7,in_port=1029 actions=output:43
1879 priority=8,tcp,tp_src=5 actions=drop
1880 priority=9,tcp,tp_src=6 actions=drop
1882 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
1883 priority=9,tcp,tp_src=6 actions=drop
1884 priority=8,tcp,tp_src=5 actions=drop
1885 priority=7,in_port=1029 actions=output:43
1886 priority=6,in_port=1027 actions=output:64
1887 priority=5,in_port=1029 actions=output:43
1888 priority=4,in_port=23213 actions=output:42
1889 priority=3,in_port=1028 actions=output:44
1890 priority=2,in_port=1025 actions=output:47
1891 priority=1,in_port=1026 actions=output:45
1893 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1894 priority=2,in_port=1025 actions=output:47
1895 priority=1,in_port=1026 actions=output:45
1896 priority=6,in_port=1027 actions=output:64
1897 priority=3,in_port=1028 actions=output:44
1898 priority=7,in_port=1029 actions=output:43
1899 priority=5,in_port=1029 actions=output:43
1900 priority=4,in_port=23213 actions=output:42
1901 priority=9,tcp,tp_src=6 actions=drop
1902 priority=8,tcp,tp_src=5 actions=drop
1904 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1905 priority=4,in_port=23213 actions=output:42
1906 priority=7,in_port=1029 actions=output:43
1907 priority=5,in_port=1029 actions=output:43
1908 priority=3,in_port=1028 actions=output:44
1909 priority=6,in_port=1027 actions=output:64
1910 priority=1,in_port=1026 actions=output:45
1911 priority=2,in_port=1025 actions=output:47
1912 priority=9,tcp,tp_src=6 actions=drop
1913 priority=8,tcp,tp_src=5 actions=drop
1915 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
1916 priority=8,tcp,tp_src=5 actions=drop
1917 priority=9,tcp,tp_src=6 actions=drop
1918 priority=7,in_port=1029 actions=output:43
1919 priority=6,in_port=1027 actions=output:64
1920 priority=5,in_port=1029 actions=output:43
1921 priority=4,in_port=23213 actions=output:42
1922 priority=3,in_port=1028 actions=output:44
1923 priority=2,in_port=1025 actions=output:47
1924 priority=1,in_port=1026 actions=output:45
1927 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
1928 [ priority=2,in_port=1025 actions=output:47
1929 priority=1,in_port=1026 actions=output:45
1930 priority=6,in_port=1027 actions=output:64
1931 priority=3,in_port=1028 actions=output:44
1932 priority=7,in_port=1029 actions=output:43
1933 priority=5,in_port=1029 actions=output:43
1934 priority=4,in_port=23213 actions=output:42
1935 priority=8,tcp,tp_src=5 actions=drop
1936 priority=9,tcp,tp_src=6 actions=drop
1941 AT_SETUP([ovs-ofctl diff-flows])
1944 # Add tons of flows to br0.
1945 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
1946 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
1948 # Dump them and compare against what we expect by hand, then with diff-flows.
1949 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
1950 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
1952 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
1954 # Remove even-numbered flows, compare again.
1955 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
1956 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
1957 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
1958 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
1959 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
1960 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
1965 dnl ofpacts that differ bytewise don't necessarily differ when
1966 dnl converted to another representation, such as OpenFlow 1.0
1967 dnl or to a string. "resubmit(,1)" is an example of an action
1968 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
1969 dnl values even though this doesn't affect the string format.
1971 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
1972 dnl false ofpacts differences.
1973 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
1975 AT_DATA([flows.txt], [actions=resubmit(,1)
1977 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1978 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
1979 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
1980 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
1981 -dl_vlan=9 idle_timeout=60 actions=output:1
1983 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
1984 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
1985 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1