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
16 AT_CHECK([ovs-ofctl parse-flows flows.txt
18 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
19 [[usable protocols: any
20 chosen protocol: OpenFlow10-table_id
21 OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
22 OFPT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
23 OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
24 OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
25 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
26 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
27 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
28 OFPT_FLOW_MOD: ADD actions=load:0xa6badbfffefe59fa->NXM_NX_IPV6_SRC[0..63],load:0xfe8001234567890a->NXM_NX_IPV6_SRC[64..127]
32 AT_SETUP([ovs-ofctl parse-flows (NXM)])
33 AT_DATA([flows.txt], [[
35 tcp,tp_src=123,actions=flood
36 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
37 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
38 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
39 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
40 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
41 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
42 tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
43 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
44 actions=multipath(eth_src, 50, hrw, 12, 0, NXM_NX_REG0[0..3]),multipath(symmetric_l4, 1024, iter_hash, 5000, 5050, NXM_NX_REG0[0..12])
46 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
47 metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
48 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
49 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
50 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
51 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
52 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
53 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
54 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
55 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
56 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
57 actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
58 send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
59 check_overlap,actions=output:1,exit,output:2
60 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
61 actions=controller(max_len=123,reason=invalid_ttl,id=555)
64 AT_CHECK([ovs-ofctl parse-flows flows.txt
66 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
67 [[usable protocols: NXM+table_id
68 chosen protocol: NXM+table_id
69 NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
70 NXT_FLOW_MOD: ADD table:255 in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
71 NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
72 NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
73 NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
74 NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
75 NXT_FLOW_MOD: ADD table:255 actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
76 NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
77 NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
78 NXT_FLOW_MOD: ADD table:255 actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multipath(symmetric_l4,1024,iter_hash,5000,5050,NXM_NX_REG0[0..12])
79 NXT_FLOW_MOD: ADD table:1 actions=drop
80 NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
81 NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
82 NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
83 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
84 NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
85 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
86 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
87 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
88 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
89 NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
90 NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
91 NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
92 NXT_FLOW_MOD: ADD table:255 send_flow_rem actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
93 NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
94 NXT_FLOW_MOD: ADD table:255 actions=fin_timeout(idle_timeout=5,hard_timeout=15)
95 NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
99 AT_SETUP([ovs-ofctl -F nxm parse-flows])
100 AT_DATA([flows.txt], [
102 tcp,tp_src=123,actions=flood
103 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
104 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
105 ipv6,ipv6_label=0x12345 actions=2
106 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
107 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
108 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
109 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
110 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
111 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
112 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
113 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
114 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
115 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
116 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
117 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
118 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
119 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
120 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
121 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
122 tun_id=0x1234,cookie=0x5678,actions=flood
124 tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
125 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
126 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
127 dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
128 dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
130 AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
131 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
132 usable protocols: NXM
133 chosen protocol: NXM-table_id
134 NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
135 NXT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
136 NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
137 NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
138 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
139 NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
140 NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
141 NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
142 NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
143 NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
144 NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
145 NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
146 NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
147 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
148 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
149 NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
150 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571,nd_tll=00:0a:e4:25:6b:b1 actions=drop
151 NXT_FLOW_MOD: ADD icmp6,icmp_type=136,nd_target=fec0:0:1234:f045:8fff:1111::/96,nd_tll=00:0a:e4:25:6b:b1 actions=drop
152 NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
153 NXT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
154 NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
155 NXT_FLOW_MOD: ADD actions=drop
156 NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
157 NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
158 NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
159 NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
160 NXT_FLOW_MOD: ADD actions=drop
164 AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
165 AT_DATA([flows.txt], [[
167 tcp,tp_src=123,actions=flood
168 in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
169 arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
170 ipv6,ipv6_label=0x12345 actions=2
171 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
172 ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
173 ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
174 tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
175 udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
176 in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
177 udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
178 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
179 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
180 icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
181 icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
182 icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
183 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
184 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
185 tun_id=0x1234,cookie=0x5678,actions=flood
187 reg0=123,actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:55->NXM_NX_REG2[0..31],move:NXM_NX_REG0[0..31]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
188 actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
189 actions=autopath(5,NXM_NX_REG0[])
190 vlan_tci=0x1123/0x1fff,actions=drop
192 AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
193 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
194 [[usable protocols: NXM
195 chosen protocol: NXM-table_id
196 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
197 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
198 NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
199 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
200 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
201 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
202 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
203 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=drop
204 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=drop
205 NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(0003), NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000001), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(86) actions=drop
206 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_VLAN_TCI_W(f000/f000), NXM_OF_IP_PROTO(11) idle:5 actions=strip_vlan,output:0
207 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(0050) actions=set_queue:37,output:1
208 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(0035) actions=pop_queue,output:1
209 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571) actions=drop
210 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_SLL(000ae4256bb0) actions=drop
211 NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(fec000001234f0458fff1111fe4e0571), NXM_NX_ND_TLL(000ae4256bb1) actions=drop
212 NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
213 NXT_FLOW_MOD: ADD <any> actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
214 NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
215 NXT_FLOW_MOD: ADD <any> actions=drop
216 NXT_FLOW_MOD: ADD NXM_NX_REG0(0000007b) actions=move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31],load:0x37->NXM_NX_REG2[],move:NXM_NX_REG0[]->NXM_NX_TUN_ID[0..31],move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]
217 NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
218 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
219 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
221 AT_CHECK([[sed 's/^[^|]*|[^|]*|//' stderr]], [0], [dnl
222 autopath|WARN|The autopath action is deprecated and may be removed in February 2013. Please email dev@openvswitch.org with concerns.
226 AT_SETUP([ovs-ofctl parse-nx-match])
227 AT_KEYWORDS([nx-match])
228 AT_DATA([nx-match.txt], [dnl
236 NXM_OF_ETH_DST(0002e30f80a4)
237 NXM_OF_ETH_DST_W(010000000000/010000000000)
238 NXM_OF_ETH_DST_W(000000000000/010000000000)
239 NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
240 NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
241 NXM_OF_ETH_DST_W(60175619848f/000000000000)
242 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
243 NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
246 NXM_OF_ETH_SRC(020898456ddb)
247 NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
248 NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
249 NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
252 NXM_OF_ETH_TYPE(0800)
253 NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
256 NXM_OF_VLAN_TCI(f009)
257 NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
258 NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
259 NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
260 NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
261 NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
262 NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
263 NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
264 NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
265 NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
268 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
269 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
273 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
274 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
278 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
279 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
283 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
284 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
288 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
289 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
290 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
291 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
292 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
293 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
294 NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
297 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
298 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
299 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
300 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
301 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
302 NXM_OF_IP_DST(ac100014)
303 NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
306 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
307 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
308 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
309 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
310 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
312 # TCP destination port
313 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
314 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
315 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
316 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
317 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
320 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
321 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
322 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
323 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
324 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
326 # UDP destination port
327 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
328 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
329 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
330 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
331 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
334 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
335 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
338 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
339 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
340 NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
344 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
345 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
346 NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
348 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
350 # ARP source protocol address
351 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
352 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
353 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
354 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
355 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
356 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
357 NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
359 # ARP destination protocol address
360 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
361 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
362 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
363 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
364 NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
365 NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
366 NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
368 # ARP source hardware address
369 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
370 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
371 NXM_NX_ARP_SHA(0002e30f80a4)
373 # ARP destination hardware address
374 NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
375 NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
376 NXM_NX_ARP_THA(0002e30f80a4)
379 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
380 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
381 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
382 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
383 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
384 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
385 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
388 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
389 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
390 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
391 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
392 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
393 NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
396 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
397 NXM_NX_IPV6_LABEL(0000000f)
398 NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
401 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
402 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
403 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
404 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
405 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
406 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
408 # ND source hardware address
409 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
410 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
411 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
412 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
414 # ND destination hardware address
415 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
416 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
417 NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
418 NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
421 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
422 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
423 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
424 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
425 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
426 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
427 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
428 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
429 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
430 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
431 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
432 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
433 NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
436 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
437 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
438 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
439 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
440 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
441 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
442 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
443 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
444 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
445 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
446 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
447 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
448 NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
451 NXM_NX_COOKIE(00000000abcdef01)
452 NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
453 NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
454 NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
457 NXM_NX_TUN_ID(00000000abcdef01)
458 NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
459 NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
460 NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
463 NXM_NX_REG0(acebdf56)
464 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
465 NXM_NX_REG0_W(a0e0d050/ffffffff)
466 NXM_NX_REG0_W(a0e0d050/00000000)
468 # Invalid field number.
471 # Unimplemented registers.
473 # This test assumes that at least two registers, but fewer than 16,
474 # registers are implemented.
476 00010108(12345678/12345678)
478 00011f08(12345678/12345678)
480 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
488 NXM_OF_ETH_DST(0002e30f80a4)
489 NXM_OF_ETH_DST_W(010000000000/010000000000)
490 NXM_OF_ETH_DST_W(000000000000/010000000000)
491 NXM_OF_ETH_DST_W(010000000000/010000000000)
492 NXM_OF_ETH_DST(0002e30f80a4)
494 NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
495 NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
498 NXM_OF_ETH_SRC(020898456ddb)
499 NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
500 NXM_OF_ETH_SRC(020898456ddb)
504 NXM_OF_ETH_TYPE(0800)
505 NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
508 NXM_OF_VLAN_TCI(f009)
509 nx_pull_match() returned error OFPBMC_DUP_FIELD
510 NXM_OF_VLAN_TCI(0000)
511 NXM_OF_VLAN_TCI(3123)
512 NXM_OF_VLAN_TCI(0123)
513 NXM_OF_VLAN_TCI_W(1123/1fff)
514 NXM_OF_VLAN_TCI(1123)
516 NXM_OF_VLAN_TCI_W(f000/f000)
517 NXM_OF_VLAN_TCI_W(0000/e000)
520 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
521 nx_pull_match() returned error OFPBMC_BAD_VALUE
522 nx_pull_match() returned error OFPBMC_BAD_PREREQ
525 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
526 nx_pull_match() returned error OFPBMC_BAD_VALUE
527 nx_pull_match() returned error OFPBMC_BAD_PREREQ
530 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
531 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
532 nx_pull_match() returned error OFPBMC_BAD_PREREQ
535 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
536 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
537 nx_pull_match() returned error OFPBMC_BAD_PREREQ
540 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
541 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
542 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
543 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
544 NXM_OF_ETH_TYPE(0800)
545 nx_pull_match() returned error OFPBMC_BAD_PREREQ
546 nx_pull_match() returned error OFPBMC_BAD_PREREQ
549 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
550 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
551 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
552 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
553 NXM_OF_ETH_TYPE(0800)
554 nx_pull_match() returned error OFPBMC_BAD_PREREQ
555 nx_pull_match() returned error OFPBMC_BAD_PREREQ
558 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
559 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
560 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
561 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
562 nx_pull_match() returned error OFPBMC_BAD_PREREQ
564 # TCP destination port
565 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
566 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
567 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
568 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
569 nx_pull_match() returned error OFPBMC_BAD_PREREQ
572 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
573 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
574 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
575 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
576 nx_pull_match() returned error OFPBMC_BAD_PREREQ
578 # UDP destination port
579 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
580 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
581 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
582 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
583 nx_pull_match() returned error OFPBMC_BAD_PREREQ
586 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
587 nx_pull_match() returned error OFPBMC_BAD_PREREQ
590 NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
591 nx_pull_match() returned error OFPBMC_BAD_PREREQ
592 nx_pull_match() returned error OFPBMC_BAD_PREREQ
593 nx_pull_match() returned error OFPBMC_BAD_PREREQ
596 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
597 nx_pull_match() returned error OFPBMC_BAD_VALUE
598 nx_pull_match() returned error OFPBMC_BAD_PREREQ
599 nx_pull_match() returned error OFPBMC_BAD_PREREQ
600 nx_pull_match() returned error OFPBMC_DUP_FIELD
602 # ARP source protocol address
603 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
604 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
605 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
606 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
607 NXM_OF_ETH_TYPE(0806)
608 nx_pull_match() returned error OFPBMC_BAD_PREREQ
609 nx_pull_match() returned error OFPBMC_BAD_PREREQ
611 # ARP destination protocol address
612 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
613 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
614 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
615 NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
616 NXM_OF_ETH_TYPE(0806)
617 nx_pull_match() returned error OFPBMC_BAD_PREREQ
618 nx_pull_match() returned error OFPBMC_BAD_PREREQ
620 # ARP source hardware address
621 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
622 nx_pull_match() returned error OFPBMC_BAD_PREREQ
623 nx_pull_match() returned error OFPBMC_BAD_PREREQ
625 # ARP destination hardware address
626 NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
627 nx_pull_match() returned error OFPBMC_BAD_PREREQ
628 nx_pull_match() returned error OFPBMC_BAD_PREREQ
631 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
632 nx_pull_match() returned error OFPBMC_BAD_PREREQ
633 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
634 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
635 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
636 NXM_OF_ETH_TYPE(86dd)
637 nx_pull_match() returned error OFPBMC_BAD_PREREQ
640 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
641 nx_pull_match() returned error OFPBMC_BAD_PREREQ
642 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
643 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
644 NXM_OF_ETH_TYPE(86dd)
645 nx_pull_match() returned error OFPBMC_BAD_PREREQ
648 nx_pull_match() returned error OFPBMC_BAD_VALUE
649 nx_pull_match() returned error OFPBMC_BAD_PREREQ
650 NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
653 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
654 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
655 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
656 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
657 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
658 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
660 # ND source hardware address
661 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
662 nx_pull_match() returned error OFPBMC_BAD_PREREQ
663 nx_pull_match() returned error OFPBMC_BAD_PREREQ
664 nx_pull_match() returned error OFPBMC_BAD_PREREQ
666 # ND destination hardware address
667 NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
668 nx_pull_match() returned error OFPBMC_BAD_PREREQ
669 nx_pull_match() returned error OFPBMC_BAD_PREREQ
670 nx_pull_match() returned error OFPBMC_BAD_PREREQ
673 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
674 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
675 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
676 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
677 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
678 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
679 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
680 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
681 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
682 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
683 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
684 NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
685 nx_pull_match() returned error OFPBMC_BAD_VALUE
688 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
689 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
690 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
691 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
692 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
693 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
694 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
695 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
696 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
697 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
698 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
699 NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
700 nx_pull_match() returned error OFPBMC_BAD_VALUE
703 NXM_NX_COOKIE(00000000abcdef01)
704 NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
705 NXM_NX_COOKIE(84200000abcdef01)
709 NXM_NX_TUN_ID(00000000abcdef01)
710 NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
711 NXM_NX_TUN_ID(84200000abcdef01)
715 NXM_NX_REG0(acebdf56)
716 NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
717 NXM_NX_REG0(a0e0d050)
720 # Invalid field number.
721 nx_pull_match() returned error OFPBMC_BAD_FIELD
723 # Unimplemented registers.
725 # This test assumes that at least two registers, but fewer than 16,
726 # registers are implemented.
727 NXM_NX_REG0(12345678)
728 NXM_NX_REG0_W(12345678/12345678)
729 nx_pull_match() returned error OFPBMC_BAD_FIELD
730 nx_pull_match() returned error OFPBMC_BAD_FIELD
734 AT_SETUP([ovs-ofctl parse-ofp10-match])
736 AT_DATA([test-data], [dnl
738 003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
739 xxxxxxxx xxxxxxxx xxxx xxxx
741 # dl_src=00:01:02:03:04:05
742 003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
743 xxxxxxxx xxxxxxxx xxxx xxxx
745 # dl_dst=10:20:30:40:50:60
746 003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
747 xxxxxxxx xxxxxxxx xxxx xxxx
750 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
751 xxxxxxxx xxxxxxxx xxxx xxxx
754 002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
755 xxxxxxxx xxxxxxxx xxxx xxxx
757 # dl_vlan=291,dl_vlan_pcp=4
758 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
759 xxxxxxxx xxxxxxxx xxxx xxxx
762 003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
763 xxxxxxxx xxxxxxxx xxxx xxxx
765 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
766 dnl OVS ignores it and drops it on output.
770 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
771 xxxxxxxx xxxxxxxx xxxx xxxx
773 dnl Invalid VID and PCP discards out-of-range bits:
774 # dl_vlan=256,dl_vlan_pcp=7
777 002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
778 xxxxxxxx xxxxxxxx xxxx xxxx
781 003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
782 xxxxxxxx xxxxxxxx xxxx xxxx
785 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
786 xxxxxxxx xxxxxxxx xxxx xxxx
788 dnl Ignore nw_proto if not IP or ARP:
789 # dl_type=0x1234,nw_proto=5
790 # normal: 3: cf -> ef
791 # normal: 25: 05 -> 00
792 & ofp_util|INFO|normalization changed ofp_match, details:
793 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
794 & ofp_util|INFO|post: dl_type=0x1234
795 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
796 xxxxxxxx xxxxxxxx xxxx xxxx
799 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
800 xxxxxxxx xxxxxxxx xxxx xxxx
802 dnl Ignore nw_tos if not IP:
805 # normal: 1: 18 -> 38
806 # normal: 24: 04 -> 00
807 & ofp_util|INFO|normalization changed ofp_match, details:
808 & ofp_util|INFO| pre: arp,nw_tos=4
809 & ofp_util|INFO|post: arp
810 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
811 xxxxxxxx xxxxxxxx xxxx xxxx
813 dnl Low 2 bits of invalid TOS are forced to 0:
816 001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
817 xxxxxxxx xxxxxxxx xxxx xxxx
820 003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
821 xxxxxxxx xxxxxxxx xxxx xxxx
823 # ip,nw_src=192.168.128.85
824 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
825 c0a88055 xxxxxxxx xxxx xxxx
827 # ip,nw_src=192.168.128.0/24
829 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
830 c0a88055 xxxxxxxx xxxx xxxx
832 # ip,nw_dst=192.168.128.85
833 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
834 xxxxxxxx c0a88055 xxxx xxxx
836 # ip,nw_dst=192.168.128.0/24
838 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
839 xxxxxxxx c0a88055 xxxx xxxx
841 # arp,nw_src=192.168.128.85
842 003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
843 c0a88055 xxxxxxxx xxxx xxxx
845 # arp,nw_src=192.168.128.0/24
847 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
848 c0a88055 xxxxxxxx xxxx xxxx
850 # arp,nw_dst=192.168.128.85
851 003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
852 xxxxxxxx c0a88055 xxxx xxxx
854 # arp,nw_dst=192.168.128.0/24
856 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
857 xxxxxxxx c0a88055 xxxx xxxx
859 dnl Ignore nw_src if not IP or ARP:
860 # dl_type=0x1234,nw_src=192.168.128.0/24
862 # normal: 2: 08 -> 20
863 # normal: 28: c0 -> 00
864 # normal: 29: a8 -> 00
865 # normal: 30: 80 -> 00
866 & ofp_util|INFO|normalization changed ofp_match, details:
867 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
868 & ofp_util|INFO|post: dl_type=0x1234
869 003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
870 c0a88055 xxxxxxxx xxxx xxxx
872 dnl Ignore nw_dst if not IP or ARP:
873 # dl_type=0x1234,nw_dst=192.168.128.0/24
875 # normal: 1: 32 -> 38
876 # normal: 32: c0 -> 00
877 # normal: 33: a8 -> 00
878 # normal: 34: 80 -> 00
879 & ofp_util|INFO|normalization changed ofp_match, details:
880 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
881 & ofp_util|INFO|post: dl_type=0x1234
882 003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
883 xxxxxxxx c0a88055 xxxx xxxx
886 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
887 xxxxxxxx xxxxxxxx 01bb xxxx
890 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
891 xxxxxxxx xxxxxxxx xxxx 01bb
894 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
895 xxxxxxxx xxxxxxxx 01bb xxxx
898 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
899 xxxxxxxx xxxxxxxx xxxx 01bb
902 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
903 xxxxxxxx xxxxxxxx 0005 xxxx
906 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
907 xxxxxxxx xxxxxxxx xxxx 0008
909 dnl Ignore tp_src if not TCP or UDP:
910 # ip,nw_proto=21,tp_src=443
911 # normal: 3: 8f -> cf
912 # normal: 36: 01 -> 00
913 # normal: 37: bb -> 00
914 & ofp_util|INFO|normalization changed ofp_match, details:
915 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
916 & ofp_util|INFO|post: ip,nw_proto=21
917 0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
918 xxxxxxxx xxxxxxxx 01bb xxxx
920 dnl Ignore tp_dst if not TCP or UDP:
921 # ip,nw_proto=21,tp_dst=443
922 # normal: 3: 4f -> cf
923 # normal: 38: 01 -> 00
924 # normal: 39: bb -> 00
925 dnl The normalization details are suppressed here due to rate-limiting.
926 0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
927 xxxxxxxx xxxxxxxx xxxx 01bb
930 sed '/^[[#&]]/d' < test-data > input.txt
931 sed -n 's/^# //p; /^$/p' < test-data > expout
932 sed -n 's/^& //p' < test-data > experr
933 AT_CAPTURE_FILE([input.txt])
934 AT_CAPTURE_FILE([expout])
935 AT_CAPTURE_FILE([experr])
937 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
938 [0], [expout], [experr])
941 AT_SETUP([ovs-ofctl parse-ofp11-match])
943 AT_DATA([test-data], [dnl
945 0000 0058 fffffffe 000003fe dnl
946 000000000000ffffffffffff 000000000000ffffffffffff dnl
947 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
948 00000000 00 000000 0000000000000000ffffffffffffffff
950 # bad ofp11_match: OFPBMC_BAD_VALUE
951 & ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
952 0000 0058 12345678 000003fe dnl
953 000000000000ffffffffffff 000000000000ffffffffffff dnl
954 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
955 00000000 00 000000 0000000000000000ffffffffffffffff
957 # dl_src=00:01:02:03:04:05
958 0000 0058 00000000 000003ff dnl
959 000102030405000000000000 000000000000ffffffffffff dnl
960 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
961 00000000 00 000000 0000000000000000ffffffffffffffff
963 # dl_src=55:55:55:55:55:55/55:55:55:55:55:55
964 0000 0058 00000000 000003ff dnl
965 555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
966 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
967 00000000 00 000000 0000000000000000ffffffffffffffff
969 # dl_dst=00:01:02:03:04:05
970 0000 0058 00000000 000003ff dnl
971 000000000000ffffffffffff 000102030405000000000000 dnl
972 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
973 00000000 00 000000 0000000000000000ffffffffffffffff
975 # dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
976 0000 0058 00000000 000003ff dnl
977 000000000000ffffffffffff 010000000000feffffffffff dnl
978 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
979 00000000 00 000000 0000000000000000ffffffffffffffff
981 # dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
982 0000 0058 00000000 000003ff dnl
983 000000000000ffffffffffff 000102030405010000000000 dnl
984 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
985 00000000 00 000000 0000000000000000ffffffffffffffff
987 # dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
988 0000 0058 00000000 000003ff dnl
989 000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
990 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
991 00000000 00 000000 0000000000000000ffffffffffffffff
993 dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
994 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
998 0000 0058 00000001 000003fa dnl
999 000000000000ffffffffffff 000000000000ffffffffffff dnl
1000 0000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1001 00000000 00 000000 0000000000000000ffffffffffffffff
1004 0000 0058 00000000 000003fd dnl
1005 000000000000ffffffffffff 000000000000ffffffffffff dnl
1006 0123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1007 00000000 00 000000 0000000000000000ffffffffffffffff
1011 0000 0058 00000000 000003fd dnl
1012 000000000000ffffffffffff 000000000000ffffffffffff dnl
1013 ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1014 00000000 00 000000 0000000000000000ffffffffffffffff
1016 dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1017 dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1021 0000 0058 00000000 000003f9 dnl
1022 000000000000ffffffffffff 000000000000ffffffffffff dnl
1023 ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1024 00000000 00 000000 0000000000000000ffffffffffffffff
1026 # vlan_tci=0x1000/0x1000
1027 0000 0058 00000000 000003fd dnl
1028 000000000000ffffffffffff 000000000000ffffffffffff dnl
1029 fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1030 00000000 00 000000 0000000000000000ffffffffffffffff
1032 dnl Try invalid VID:
1033 # bad ofp11_match: OFPBMC_BAD_VALUE
1034 0000 0058 00000000 000003fd dnl
1035 000000000000ffffffffffff 000000000000ffffffffffff dnl
1036 1234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1037 00000000 00 000000 0000000000000000ffffffffffffffff
1040 0000 0058 00000000 000003f9 dnl
1041 000000000000ffffffffffff 000000000000ffffffffffff dnl
1042 fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1043 00000000 00 000000 0000000000000000ffffffffffffffff
1045 # dl_vlan=10,dl_vlan_pcp=6
1046 0000 0058 00000000 000003f9 dnl
1047 000000000000ffffffffffff 000000000000ffffffffffff dnl
1048 000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1049 00000000 00 000000 0000000000000000ffffffffffffffff
1052 0000 0058 00000000 000003f7 dnl
1053 000000000000ffffffffffff 000000000000ffffffffffff dnl
1054 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1055 00000000 00 000000 0000000000000000ffffffffffffffff
1058 0000 0058 00000000 000003e7 dnl
1059 000000000000ffffffffffff 000000000000ffffffffffff dnl
1060 0000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1061 00000000 00 000000 0000000000000000ffffffffffffffff
1063 dnl Try invalid TOS:
1064 # bad ofp11_match: OFPBMC_BAD_VALUE
1065 0000 0058 00000000 000003e7 dnl
1066 000000000000ffffffffffff 000000000000ffffffffffff dnl
1067 0000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1068 00000000 00 000000 0000000000000000ffffffffffffffff
1071 0000 0058 00000000 000003d7 dnl
1072 000000000000ffffffffffff 000000000000ffffffffffff dnl
1073 0000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1074 00000000 00 000000 0000000000000000ffffffffffffffff
1077 0000 0058 00000000 000003d7 dnl
1078 000000000000ffffffffffff 000000000000ffffffffffff dnl
1079 0000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1080 00000000 00 000000 0000000000000000ffffffffffffffff
1082 # ip,nw_src=192.168.128.0/24
1083 0000 0058 00000000 000003f7 dnl
1084 000000000000ffffffffffff 000000000000ffffffffffff dnl
1085 0000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1086 00000000 00 000000 0000000000000000ffffffffffffffff
1088 # ip,nw_src=128.160.128.0/165.165.165.165
1091 0000 0058 00000000 000003f7 dnl
1092 000000000000ffffffffffff 000000000000ffffffffffff dnl
1093 0000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
1094 00000000 00 000000 0000000000000000ffffffffffffffff
1096 # ip,nw_dst=192.168.128.0/24
1097 0000 0058 00000000 000003f7 dnl
1098 000000000000ffffffffffff 000000000000ffffffffffff dnl
1099 0000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1100 00000000 00 000000 0000000000000000ffffffffffffffff
1102 # ip,nw_dst=128.160.128.0/165.165.165.165
1105 0000 0058 00000000 000003f7 dnl
1106 000000000000ffffffffffff 000000000000ffffffffffff dnl
1107 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
1108 00000000 00 000000 0000000000000000ffffffffffffffff
1110 # arp,nw_src=192.168.128.0/24
1111 0000 0058 00000000 000003f7 dnl
1112 000000000000ffffffffffff 000000000000ffffffffffff dnl
1113 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
1114 00000000 00 000000 0000000000000000ffffffffffffffff
1116 # arp,nw_dst=192.168.128.0/24
1117 0000 0058 00000000 000003f7 dnl
1118 000000000000ffffffffffff 000000000000ffffffffffff dnl
1119 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
1120 00000000 00 000000 0000000000000000ffffffffffffffff
1123 0000 0058 00000000 00000397 dnl
1124 000000000000ffffffffffff 000000000000ffffffffffff dnl
1125 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1126 00000000 00 000000 0000000000000000ffffffffffffffff
1129 0000 0058 00000000 00000357 dnl
1130 000000000000ffffffffffff 000000000000ffffffffffff dnl
1131 0000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1132 00000000 00 000000 0000000000000000ffffffffffffffff
1135 0000 0058 00000000 00000397 dnl
1136 000000000000ffffffffffff 000000000000ffffffffffff dnl
1137 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1138 00000000 00 000000 0000000000000000ffffffffffffffff
1141 0000 0058 00000000 00000397 dnl
1142 000000000000ffffffffffff 000000000000ffffffffffff dnl
1143 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
1144 00000000 00 000000 0000000000000000ffffffffffffffff
1147 0000 0058 00000000 00000357 dnl
1148 000000000000ffffffffffff 000000000000ffffffffffff dnl
1149 0000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
1150 00000000 00 000000 0000000000000000ffffffffffffffff
1153 0000 0058 00000000 00000397 dnl
1154 000000000000ffffffffffff 000000000000ffffffffffff dnl
1155 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1156 00000000 00 000000 0000000000000000ffffffffffffffff
1159 0000 0058 00000000 00000357 dnl
1160 000000000000ffffffffffff 000000000000ffffffffffff dnl
1161 0000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1162 00000000 00 000000 0000000000000000ffffffffffffffff
1166 0000 0058 00000000 000003d7 dnl
1167 000000000000ffffffffffff 000000000000ffffffffffff dnl
1168 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1169 00000000 00 000000 0000000000000000ffffffffffffffff
1171 dnl SCTP tp_src matching not supported:
1172 # bad ofp11_match: OFPBMC_BAD_FIELD
1173 0000 0058 00000000 00000397 dnl
1174 000000000000ffffffffffff 000000000000ffffffffffff dnl
1175 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1176 00000000 00 000000 0000000000000000ffffffffffffffff
1178 dnl SCTP tp_dst matching not supported:
1179 # bad ofp11_match: OFPBMC_BAD_FIELD
1180 0000 0058 00000000 00000357 dnl
1181 000000000000ffffffffffff 000000000000ffffffffffff dnl
1182 0000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1183 00000000 00 000000 0000000000000000ffffffffffffffff
1185 dnl Ignore tp_src if not TCP or UDP or SCTP:
1190 0000 0058 00000000 00000397 dnl
1191 000000000000ffffffffffff 000000000000ffffffffffff dnl
1192 0000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
1193 00000000 00 000000 0000000000000000ffffffffffffffff
1195 dnl Ignore tp_dst if not TCP or UDP or SCTP:
1200 0000 0058 00000000 00000357 dnl
1201 000000000000ffffffffffff 000000000000ffffffffffff dnl
1202 0000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
1203 00000000 00 000000 0000000000000000ffffffffffffffff
1205 dnl mpls_label not yet supported:
1206 # bad ofp11_match: OFPBMC_BAD_TAG
1207 0000 0058 00000000 000002f7 dnl
1208 000000000000ffffffffffff 000000000000ffffffffffff dnl
1209 0000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1210 12345678 00 000000 0000000000000000ffffffffffffffff
1212 dnl mpls_tc not yet supported:
1213 # bad ofp11_match: OFPBMC_BAD_TAG
1214 0000 0058 00000000 000001f7 dnl
1215 000000000000ffffffffffff 000000000000ffffffffffff dnl
1216 0000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1217 00000000 5a 000000 0000000000000000ffffffffffffffff
1219 dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1227 0000 0058 00000000 000000f7 dnl
1228 000000000000ffffffffffff 000000000000ffffffffffff dnl
1229 0000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1230 12345678 5a 000000 0000000000000000ffffffffffffffff
1233 # metadata=0x1234567890abcdef
1234 0000 0058 00000000 000003ff dnl
1235 000000000000ffffffffffff 000000000000ffffffffffff dnl
1236 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1237 00000000 00 000000 1234567890abcdef0000000000000000
1240 # metadata=0x5555555555555555/0x5555555555555555
1241 0000 0058 00000000 000003ff dnl
1242 000000000000ffffffffffff 000000000000ffffffffffff dnl
1243 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1244 00000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1247 # metadata=0x1234000090ab0000/0xffff0000ffff0000
1252 0000 0058 00000000 000003ff dnl
1253 000000000000ffffffffffff 000000000000ffffffffffff dnl
1254 0000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
1255 00000000 00 000000 1234567890abcdef0000ffff0000ffff
1258 sed '/^[[#&]]/d' < test-data > input.txt
1259 sed -n 's/^# //p; /^$/p' < test-data > expout
1260 sed -n 's/^& //p' < test-data > experr
1261 AT_CAPTURE_FILE([input.txt])
1262 AT_CAPTURE_FILE([expout])
1263 AT_CAPTURE_FILE([experr])
1265 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1266 [0], [expout], [experr])
1269 AT_SETUP([ovs-ofctl parse-nx-match loose])
1270 AT_KEYWORDS([nx-match])
1271 AT_DATA([nx-match.txt], [dnl
1272 NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1275 AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1276 nx_pull_match() returned error OFPBMC_BAD_FIELD
1279 AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1280 NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1284 AT_SETUP([ovs-ofctl parse-oxm])
1286 AT_DATA([oxm.txt], [dnl
1290 OXM_OF_IN_PORT(00000000)
1291 OXM_OF_IN_PORT(fffffffe)
1294 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1295 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1296 OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1297 OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
1298 OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
1301 OXM_OF_ETH_DST(0002e30f80a4)
1302 OXM_OF_ETH_DST_W(010000000000/010000000000)
1303 OXM_OF_ETH_DST_W(000000000000/010000000000)
1304 OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1305 OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
1306 OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
1307 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1310 OXM_OF_ETH_SRC(020898456ddb)
1313 OXM_OF_ETH_TYPE(0800)
1314 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1317 OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1318 OXM_OF_VLAN_VID(f009) # Bad Value
1319 OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
1320 OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1321 OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1322 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1323 OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
1324 OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1325 OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1326 OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
1327 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
1328 OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1329 OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1330 OXM_OF_VLAN_VID_W(1123/0000) # Packets with or without 802.1Q header
1331 OXM_OF_VLAN_VID_W(1123/1f0f), # Packets with # VID=123 (masked)
1332 OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1333 OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1334 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
1337 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1338 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1342 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1343 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1347 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1348 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1349 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1350 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
1351 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1352 OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1355 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1356 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
1357 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1358 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
1359 OXM_OF_IPV4_DST(ac100014)
1360 OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1363 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1364 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1365 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1366 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
1367 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1369 # TCP destination port
1370 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1371 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1372 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1373 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
1374 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1377 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1378 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1379 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1380 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
1381 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1383 # UDP destination port
1384 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1385 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1386 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1387 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
1388 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1391 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1392 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1395 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1396 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1397 OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1398 OXM_OF_ICMPV4_CODE(00)
1401 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1402 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1403 OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1405 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1407 # ARP source protocol address
1408 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1409 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
1410 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1411 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
1412 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1413 OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1415 # ARP destination protocol address
1416 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1417 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
1418 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1419 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
1420 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1421 OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1423 # ARP source hardware address
1424 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1425 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1426 OXM_OF_ARP_SHA(0002e30f80a4)
1427 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1428 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1429 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
1431 # ARP destination hardware address
1432 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1433 OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1434 OXM_OF_ARP_THA(0002e30f80a4)
1435 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1436 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1437 OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
1440 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1441 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1442 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1443 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1444 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1445 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1448 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1449 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1450 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1451 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1452 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
1453 OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1456 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1457 OXM_OF_IPV6_FLABEL(0000000f)
1458 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1459 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1460 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1461 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1462 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1463 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1464 OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
1466 # ND source hardware address
1467 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1468 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1469 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1470 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1472 # ND destination hardware address
1473 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1474 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1475 OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1476 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1478 # Invalid field number.
1481 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1485 OXM_OF_IN_PORT(00000000)
1486 OXM_OF_IN_PORT(fffffffe)
1489 OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1490 OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1491 OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1492 OXM_OF_METADATA(1234567890abcdef)
1496 OXM_OF_ETH_DST(0002e30f80a4)
1497 OXM_OF_ETH_DST_W(010000000000/010000000000)
1498 OXM_OF_ETH_DST_W(000000000000/010000000000)
1499 OXM_OF_ETH_DST_W(010000000000/010000000000)
1500 OXM_OF_ETH_DST(0002e30f80a4)
1502 OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1505 OXM_OF_ETH_SRC(020898456ddb)
1508 OXM_OF_ETH_TYPE(0800)
1509 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1512 nx_pull_match() returned error OFPBMC_DUP_FIELD
1513 nx_pull_match() returned error OFPBMC_BAD_VALUE
1514 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1515 OXM_OF_VLAN_VID(0000)
1516 OXM_OF_VLAN_VID(1123)
1517 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1518 OXM_OF_VLAN_VID(0123)
1519 OXM_OF_VLAN_VID_W(0123/0123)
1520 OXM_OF_VLAN_VID_W(0123/0123)
1521 OXM_OF_VLAN_VID_W(0123/1123)
1522 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1523 OXM_OF_VLAN_VID(1123)
1524 OXM_OF_VLAN_VID(1123)
1526 OXM_OF_VLAN_VID_W(1103/1f0f)
1527 OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1528 OXM_OF_VLAN_VID_W(1000/1000)
1529 OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
1532 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1533 nx_pull_match() returned error OFPBMC_BAD_VALUE
1534 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1537 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1538 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1539 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1542 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1543 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
1544 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1545 OXM_OF_ETH_TYPE(0800)
1546 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1547 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1550 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1551 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
1552 OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1553 OXM_OF_ETH_TYPE(0800)
1554 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1555 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1558 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1559 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
1560 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1561 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1562 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1564 # TCP destination port
1565 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1566 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
1567 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1568 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
1569 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1572 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1573 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
1574 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1575 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1576 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1578 # UDP destination port
1579 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1580 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
1581 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
1582 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
1583 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1586 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
1587 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1590 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
1591 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1592 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1593 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1596 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
1597 nx_pull_match() returned error OFPBMC_BAD_VALUE
1598 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1599 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1600 nx_pull_match() returned error OFPBMC_DUP_FIELD
1602 # ARP source protocol address
1603 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
1604 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
1605 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
1606 OXM_OF_ETH_TYPE(0806)
1607 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1608 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1610 # ARP destination protocol address
1611 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
1612 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
1613 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
1614 OXM_OF_ETH_TYPE(0806)
1615 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1616 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1618 # ARP source hardware address
1619 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1620 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1621 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1622 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
1623 OXM_OF_ETH_TYPE(0806)
1624 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1626 # ARP destination hardware address
1627 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1628 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1629 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1630 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
1631 OXM_OF_ETH_TYPE(0806)
1632 OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
1635 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1636 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1637 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1638 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
1639 OXM_OF_ETH_TYPE(86dd)
1640 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1643 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1644 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1645 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1646 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
1647 OXM_OF_ETH_TYPE(86dd)
1648 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1651 nx_pull_match() returned error OFPBMC_BAD_VALUE
1652 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1653 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1654 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1655 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1656 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1657 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1658 OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
1659 OXM_OF_ETH_TYPE(86dd)
1661 # ND source hardware address
1662 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(87), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1663 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1664 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1665 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1667 # ND destination hardware address
1668 OXM_OF_ETH_TYPE(86dd), OXM_OF_IP_PROTO(3a), OXM_OF_ICMPV6_TYPE(88), OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005), OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1669 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1670 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1671 nx_pull_match() returned error OFPBMC_BAD_PREREQ
1673 # Invalid field number.
1674 nx_pull_match() returned error OFPBMC_BAD_FIELD
1678 AT_SETUP([ovs-ofctl parse-oxm loose])
1680 AT_DATA([oxm.txt], [dnl
1681 OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
1684 AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
1685 nx_pull_match() returned error OFPBMC_BAD_FIELD
1688 AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
1689 OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
1693 dnl Check all of the patterns mentioned in the "VLAN Matching" section
1694 dnl in the DESIGN file at top level.
1695 AT_SETUP([ovs-ofctl check-vlan])
1699 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
1701 NXM: <any> -> 0000/0000
1702 OXM: <any> -> 0000/0000,--
1703 OF1.0: 0000/1,00/1 -> 0000/0000
1704 OF1.1: 0000/1,00/1 -> 0000/0000
1708 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
1709 vlan_tci=0x0000 -> 0000/ffff
1710 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
1711 OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
1712 OF1.0: ffff/0,00/1 -> 0000/ffff
1713 OF1.1: ffff/0,00/1 -> 0000/ffff
1717 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
1718 dl_vlan=2748 -> 1abc/1fff
1719 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
1720 OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
1721 OF1.0: 0abc/0,00/1 -> 1abc/1fff
1722 OF1.1: 0abc/0,00/1 -> 1abc/1fff
1726 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
1727 dl_vlan_pcp=5 -> b000/f000
1728 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
1729 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
1730 OF1.0: 0000/1,05/0 -> b000/f000
1731 OF1.1: fffe/0,05/0 -> b000/f000
1735 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
1736 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
1737 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
1738 OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
1739 OF1.0: 0abc/0,05/0 -> babc/ffff
1740 OF1.1: 0abc/0,05/0 -> babc/ffff
1744 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
1745 vlan_tci=0x0000/0x0fff -> 0000/0fff
1746 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
1747 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1748 OF1.0: 0000/0,00/1 -> 1000/1fff
1749 OF1.1: 0000/0,00/1 -> 1000/1fff
1753 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
1754 vlan_tci=0x0000/0xf000 -> 0000/f000
1755 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
1756 OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
1757 OF1.0: ffff/0,00/1 -> 0000/ffff
1758 OF1.1: ffff/0,00/1 -> 0000/ffff
1762 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
1763 vlan_tci=0x0000/0xefff -> 0000/efff
1764 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
1765 OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
1766 OF1.0: 0000/0,00/0 -> 1000/ffff
1767 OF1.1: 0000/0,00/0 -> 1000/ffff
1771 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
1772 vlan_tci=0x1001/0x1001 -> 1001/1001
1773 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
1774 OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
1775 OF1.0: 0001/0,00/1 -> 1001/1fff
1776 OF1.1: 0001/0,00/1 -> 1001/1fff
1780 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
1781 vlan_tci=0x3000/0x3000 -> 3000/3000
1782 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
1783 OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
1784 OF1.0: 0000/1,01/0 -> 3000/f000
1785 OF1.1: fffe/0,01/0 -> 3000/f000
1790 dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
1791 dnl such as tunnels and metadata.
1792 AT_SETUP([ovs-ofctl -F option and NXM features])
1793 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
1794 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1796 AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
1797 [1], [], [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1801 dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
1802 dnl (If it doesn't, then either the tun_id won't show up at all, or it will
1803 dnl additionally show up as the top 32 bits of the cookie.) This checks
1804 dnl for regression against bug #4566.
1805 AT_SETUP([ovs-ofctl -F option with flow_mods])
1807 AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
1808 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
1810 tun_id=0x12345678 actions=drop
1815 dnl Check that "-F openflow10" is really honored on dump-flows.
1816 dnl (If it isn't, then dump-flows will show the register match.)
1817 AT_SETUP([ovs-ofctl dump-flows honors -F option])
1819 AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
1820 AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
1827 dnl Check that "-F openflow10" fails on dump-flows if the requested match
1828 dnl can't be represented in OpenFlow 1.0.
1829 AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
1831 AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
1832 [ovs-ofctl: none of the usable flow formats (NXM) is among the allowed flow formats (OpenFlow10)
1837 dnl Check that add-flow reports non-normalized flows (feature #5029).
1838 AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
1840 AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
1842 ofp_util|INFO|normalization changed ofp_match, details:
1843 ofp_util|INFO| pre: nw_src=1.2.3.4
1844 ofp_util|INFO|post: @&t@
1849 dnl Check that --sort and --rsort works with dump-flows
1850 dnl Default field is 'priority'. Flow entries are displayed based
1851 dnl on field to sort.
1852 AT_SETUP([ovs-ofctl dump-flows with sorting])
1855 AT_DATA([allflows.txt], [[
1856 priority=4,in_port=23213 actions=output:42
1857 priority=5,in_port=1029 actions=output:43
1858 priority=7,in_port=1029 actions=output:43
1859 priority=3,in_port=1028 actions=output:44
1860 priority=1,in_port=1026 actions=output:45
1861 priority=6,in_port=1027 actions=output:64
1862 priority=2,in_port=1025 actions=output:47
1863 priority=8,tcp,tp_src=5 actions=drop
1864 priority=9,tcp,tp_src=6 actions=drop
1867 AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
1869 AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
1870 priority=1,in_port=1026 actions=output:45
1871 priority=2,in_port=1025 actions=output:47
1872 priority=3,in_port=1028 actions=output:44
1873 priority=4,in_port=23213 actions=output:42
1874 priority=5,in_port=1029 actions=output:43
1875 priority=6,in_port=1027 actions=output:64
1876 priority=7,in_port=1029 actions=output:43
1877 priority=8,tcp,tp_src=5 actions=drop
1878 priority=9,tcp,tp_src=6 actions=drop
1880 AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
1881 priority=9,tcp,tp_src=6 actions=drop
1882 priority=8,tcp,tp_src=5 actions=drop
1883 priority=7,in_port=1029 actions=output:43
1884 priority=6,in_port=1027 actions=output:64
1885 priority=5,in_port=1029 actions=output:43
1886 priority=4,in_port=23213 actions=output:42
1887 priority=3,in_port=1028 actions=output:44
1888 priority=2,in_port=1025 actions=output:47
1889 priority=1,in_port=1026 actions=output:45
1891 AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1892 priority=2,in_port=1025 actions=output:47
1893 priority=1,in_port=1026 actions=output:45
1894 priority=6,in_port=1027 actions=output:64
1895 priority=3,in_port=1028 actions=output:44
1896 priority=7,in_port=1029 actions=output:43
1897 priority=5,in_port=1029 actions=output:43
1898 priority=4,in_port=23213 actions=output:42
1899 priority=9,tcp,tp_src=6 actions=drop
1900 priority=8,tcp,tp_src=5 actions=drop
1902 AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
1903 priority=4,in_port=23213 actions=output:42
1904 priority=7,in_port=1029 actions=output:43
1905 priority=5,in_port=1029 actions=output:43
1906 priority=3,in_port=1028 actions=output:44
1907 priority=6,in_port=1027 actions=output:64
1908 priority=1,in_port=1026 actions=output:45
1909 priority=2,in_port=1025 actions=output:47
1910 priority=9,tcp,tp_src=6 actions=drop
1911 priority=8,tcp,tp_src=5 actions=drop
1913 AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
1914 priority=8,tcp,tp_src=5 actions=drop
1915 priority=9,tcp,tp_src=6 actions=drop
1916 priority=7,in_port=1029 actions=output:43
1917 priority=6,in_port=1027 actions=output:64
1918 priority=5,in_port=1029 actions=output:43
1919 priority=4,in_port=23213 actions=output:42
1920 priority=3,in_port=1028 actions=output:44
1921 priority=2,in_port=1025 actions=output:47
1922 priority=1,in_port=1026 actions=output:45
1925 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
1926 [ priority=2,in_port=1025 actions=output:47
1927 priority=1,in_port=1026 actions=output:45
1928 priority=6,in_port=1027 actions=output:64
1929 priority=3,in_port=1028 actions=output:44
1930 priority=7,in_port=1029 actions=output:43
1931 priority=5,in_port=1029 actions=output:43
1932 priority=4,in_port=23213 actions=output:42
1933 priority=8,tcp,tp_src=5 actions=drop
1934 priority=9,tcp,tp_src=6 actions=drop
1939 AT_SETUP([ovs-ofctl diff-flows])
1942 # Add tons of flows to br0.
1943 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
1944 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
1946 # Dump them and compare against what we expect by hand, then with diff-flows.
1947 for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
1948 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
1950 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
1952 # Remove even-numbered flows, compare again.
1953 for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
1954 AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
1955 for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
1956 AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
1957 for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
1958 AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
1963 dnl ofpacts that differ bytewise don't necessarily differ when
1964 dnl converted to another representation, such as OpenFlow 1.0
1965 dnl or to a string. "resubmit(,1)" is an example of an action
1966 dnl of this type: "ofpact_resubmit"s can differ in their "compat"
1967 dnl values even though this doesn't affect the string format.
1969 dnl This test checks that "ovs-ofctl diff-flows" doesn't report
1970 dnl false ofpacts differences.
1971 AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
1973 AT_DATA([flows.txt], [actions=resubmit(,1)
1975 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1976 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
1977 AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
1978 AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
1979 -dl_vlan=9 idle_timeout=60 actions=output:1
1981 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
1982 AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
1983 +dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1