]> git.proxmox.com Git - mirror_ovs.git/blame - tests/ovs-ofctl.at
ovs-dev.py: Build with both GCC and Clang.
[mirror_ovs.git] / tests / ovs-ofctl.at
CommitLineData
0e581146
BP
1AT_BANNER([ovs-ofctl])
2
340c7bb2
BP
3AT_SETUP([ovs-ofctl parse-flows choice of protocol])
4# This doesn't cover some potential vlan_tci test cases.
5for test_case in \
6 'tun_id=0 NXM,OXM' \
af69bf19 7 'tun_id=0/0x1 NXM,OXM' \
340c7bb2 8 'tun_src=1.2.3.4 NXM,OXM' \
af69bf19 9 'tun_src=1.2.3.4/0.0.0.1 NXM,OXM' \
340c7bb2 10 'tun_dst=1.2.3.4 NXM,OXM' \
af69bf19 11 'tun_dst=1.2.3.4/0.0.0.1 NXM,OXM' \
340c7bb2 12 'tun_flags=0 none' \
af69bf19 13 'tun_flags=1/1 none' \
340c7bb2
BP
14 'tun_tos=0 none' \
15 'tun_ttl=0 none' \
db0b6c29 16 'metadata=0 NXM,OXM,OpenFlow11' \
af69bf19 17 'metadata=1/1 NXM,OXM,OpenFlow11' \
340c7bb2
BP
18 'in_port=1 any' \
19 'skb_priority=0 none' \
ac923e91 20 'pkt_mark=1 NXM,OXM' \
af69bf19 21 'pkt_mark=1/1 NXM,OXM' \
340c7bb2 22 'reg0=0 NXM,OXM' \
af69bf19 23 'reg0=0/1 NXM,OXM' \
340c7bb2 24 'reg1=1 NXM,OXM' \
af69bf19 25 'reg1=1/1 NXM,OXM' \
340c7bb2 26 'reg2=2 NXM,OXM' \
af69bf19 27 'reg2=2/1 NXM,OXM' \
340c7bb2 28 'reg3=3 NXM,OXM' \
af69bf19 29 'reg3=3/1 NXM,OXM' \
340c7bb2 30 'reg4=4 NXM,OXM' \
af69bf19 31 'reg4=4/1 NXM,OXM' \
340c7bb2 32 'reg5=5 NXM,OXM' \
af69bf19 33 'reg5=5/1 NXM,OXM' \
340c7bb2 34 'reg6=6 NXM,OXM' \
af69bf19 35 'reg6=6/1 NXM,OXM' \
340c7bb2 36 'reg7=7 NXM,OXM' \
af69bf19 37 'reg7=7/1 NXM,OXM' \
340c7bb2 38 'dl_src=00:11:22:33:44:55 any' \
db0b6c29 39 'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
340c7bb2 40 'dl_dst=00:11:22:33:44:55 any' \
db0b6c29 41 'dl_dst=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM,OpenFlow11' \
340c7bb2
BP
42 'dl_type=0x1234 any' \
43 'dl_type=0x0800 any' \
44 'dl_type=0x0806 any' \
45 'dl_type=0x86dd any' \
46 'vlan_tci=0 any' \
47 'vlan_tci=0x1009 any' \
af69bf19 48 'vlan_tci=0x1009/0x1 NXM,OXM' \
340c7bb2
BP
49 'dl_vlan=9 any' \
50 'vlan_vid=11 any' \
af69bf19 51 'vlan_vid=11/0x1 NXM,OXM' \
340c7bb2
BP
52 'dl_vlan_pcp=6 any' \
53 'vlan_pcp=5 any' \
db0b6c29
JR
54 'mpls,mpls_label=5 NXM,OXM,OpenFlow11' \
55 'mpls,mpls_tc=1 NXM,OXM,OpenFlow11' \
340c7bb2
BP
56 'mpls,mpls_bos=0 NXM,OXM' \
57 'ip,ip_src=1.2.3.4 any' \
58 'ip,ip_src=192.168.0.0/24 any' \
db0b6c29 59 'ip,ip_src=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
340c7bb2
BP
60 'ip,ip_dst=1.2.3.4 any' \
61 'ip,ip_dst=192.168.0.0/24 any' \
db0b6c29 62 'ip,ip_dst=192.0.168.0/255.0.255.0 NXM,OXM,OpenFlow11' \
340c7bb2 63 'ipv6,ipv6_src=::1 NXM,OXM' \
af69bf19 64 'ipv6,ipv6_src=::1/::1 NXM,OXM' \
340c7bb2 65 'ipv6,ipv6_dst=::1 NXM,OXM' \
af69bf19 66 'ipv6,ipv6_dst=::1/::1 NXM,OXM' \
340c7bb2 67 'ipv6,ipv6_label=5 NXM,OXM' \
af69bf19 68 'ipv6,ipv6_label=5/1 NXM,OXM' \
340c7bb2
BP
69 'ip,nw_proto=1 any' \
70 'ipv6,nw_proto=1 NXM,OXM' \
71 'ip,nw_tos=0xf0 any' \
72 'ipv6,nw_tos=0xf0 NXM,OXM' \
44a7e26d
JR
73 'ip,ip_dscp=0x3c any' \
74 'ipv6,ip_dscp=0x3c NXM,OXM' \
340c7bb2
BP
75 'ip,nw_ecn=1 NXM,OXM' \
76 'ipv6,nw_ecn=1 NXM,OXM' \
77 'ip,nw_ttl=5 NXM,OXM' \
78 'ipv6,nw_ttl=5 NXM,OXM' \
79 'ip,ip_frag=no NXM,OXM' \
80 'ipv6,ip_frag=no NXM,OXM' \
81 'arp,arp_op=0 any' \
82 'arp,arp_spa=1.2.3.4 any' \
af69bf19 83 'arp,arp_spa=1.2.3.4/0.0.0.1 NXM,OXM,OpenFlow11' \
340c7bb2 84 'arp,arp_tpa=1.2.3.4 any' \
af69bf19 85 'arp,arp_tpa=1.2.3.4/0.0.0.1 NXM,OXM,OpenFlow11' \
340c7bb2 86 'arp,arp_sha=00:11:22:33:44:55 NXM,OXM' \
af69bf19 87 'arp,arp_sha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
340c7bb2 88 'arp,arp_tha=00:11:22:33:44:55 NXM,OXM' \
af69bf19 89 'arp,arp_tha=00:11:22:33:44:55/00:ff:ff:ff:ff:ff NXM,OXM' \
340c7bb2
BP
90 'tcp,tcp_src=80 any' \
91 'tcp,tcp_src=0x1000/0x1000 NXM,OXM' \
92 'tcp6,tcp_src=80 NXM,OXM' \
93 'tcp6,tcp_src=0x1000/0x1000 NXM,OXM' \
94 'tcp,tcp_dst=80 any' \
95 'tcp,tcp_dst=0x1000/0x1000 NXM,OXM' \
96 'tcp6,tcp_dst=80 NXM,OXM' \
97 'tcp6,tcp_dst=0x1000/0x1000 NXM,OXM' \
98 'udp,udp_src=80 any' \
99 'udp,udp_src=0x1000/0x1000 NXM,OXM' \
100 'udp6,udp_src=80 NXM,OXM' \
101 'udp6,udp_src=0x1000/0x1000 NXM,OXM' \
102 'udp,udp_dst=80 any' \
103 'udp,udp_dst=0x1000/0x1000 NXM,OXM' \
104 'udp6,udp_dst=80 NXM,OXM' \
105 'udp6,udp_dst=0x1000/0x1000 NXM,OXM' \
106 'icmp,icmp_type=1 any' \
1f435c88 107 'icmp,icmp_code=2 any' \
340c7bb2 108 'icmp6,icmpv6_type=1 NXM,OXM' \
3634dff8 109 'icmp6,icmpv6_code=2 NXM,OXM'
340c7bb2
BP
110do
111 set $test_case
112 echo
113 echo "### test case: '$1' should have usable protocols '$2'"
114 if test "$2" = none; then
115 AT_CHECK([ovs-ofctl parse-flow "$1,actions=drop"], [1],
116 [usable protocols: none
117],
118 [ovs-ofctl: no usable protocol
119])
120 else
121 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$1,actions=drop" | sed 1q], [0],
122 [usable protocols: $2
123])
124 fi
125done
126AT_CLEANUP
127
27527aa0
BP
128AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
129AT_DATA([flows.txt], [[
130# comment
be3f512a 131tcp,tp_src=123,out_port=5,actions=flood
27527aa0
BP
132in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
133udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
134tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
135udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
136cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
137actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
b019d34d 138ip,actions=set_field:10.4.3.77->ip_src
db0b6c29
JR
139sctp actions=drop
140sctp actions=drop
e3432ee9 141in_port=0 actions=resubmit:0
29089a54 142actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
27527aa0
BP
143]])
144
145AT_CHECK([ovs-ofctl parse-flows flows.txt
146], [0], [stdout])
147AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
148[[usable protocols: any
149chosen protocol: OpenFlow10-table_id
be3f512a 150OFPT_FLOW_MOD: ADD tcp,tp_src=123 out_port:5 actions=FLOOD
576ec803 151OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
27527aa0
BP
152OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
153OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
154OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
155OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
156OFPT_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
a6fd70bb 157OFPT_FLOW_MOD: ADD ip actions=mod_nw_src:10.4.3.77
db0b6c29
JR
158OFPT_FLOW_MOD: ADD sctp actions=drop
159OFPT_FLOW_MOD: ADD sctp actions=drop
e3432ee9 160OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
29089a54 161OFPT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
f0992bed
SH
162]])
163AT_CLEANUP
164
ff14eb7a
JR
165AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.1)])
166AT_DATA([flows.txt], [[
167# comment
168tcp,tp_src=123,out_port=5,actions=flood
169in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
170udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
171tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
172udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
173cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
174actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
0c20dbe4 175ip,actions=mod_nw_ttl:1,set_field:10.4.3.77->ip_src
ff14eb7a
JR
176sctp actions=drop
177sctp actions=drop
178in_port=0 actions=resubmit:0
179actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
180]])
181
182AT_CHECK([ovs-ofctl --protocols OpenFlow11 parse-flows flows.txt
183], [0], [stdout])
184AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
185[[usable protocols: any
186chosen protocol: OpenFlow11
0e197060
BP
187OFPT_FLOW_MOD (OF1.1): ADD tcp,tp_src=123 out_port:5 actions=FLOOD
188OFPT_FLOW_MOD (OF1.1): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
189OFPT_FLOW_MOD (OF1.1): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
190OFPT_FLOW_MOD (OF1.1): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
191OFPT_FLOW_MOD (OF1.1): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=mod_nw_ecn:2,output:1
192OFPT_FLOW_MOD (OF1.1): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
193OFPT_FLOW_MOD (OF1.1): 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
194OFPT_FLOW_MOD (OF1.1): ADD ip actions=mod_nw_ttl:1,mod_nw_src:10.4.3.77
195OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
196OFPT_FLOW_MOD (OF1.1): ADD sctp actions=drop
197OFPT_FLOW_MOD (OF1.1): ADD in_port=0 actions=resubmit:0
198OFPT_FLOW_MOD (OF1.1): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
ff14eb7a
JR
199]])
200AT_CLEANUP
201
f0992bed
SH
202AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.2)])
203AT_DATA([flows.txt], [[
204# comment
205tcp,tp_src=123,actions=flood
1e7db674 206in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=mod_vlan_vid:7,mod_vlan_pcp:2
f0992bed
SH
207udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
208tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
209udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
210cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
211actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
b019d34d 212ipv6,actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
0d56eaf2
JS
213sctp actions=set_field:3334->sctp_src
214sctp actions=set_field:4445->sctp_dst
1e7db674
JR
215tcp actions=mod_tp_dst:1234
216udp actions=mod_tp_src:1111
217ip actions=mod_nw_src:10.1.1.2,mod_nw_dst:192.168.10.1,mod_nw_ttl:1,mod_nw_tos:16,mod_nw_ecn:2
218in_port=0 actions=mod_dl_src:11:22:33:44:55:66,mod_dl_dst:10:20:30:40:50:60
f0992bed 219in_port=0 actions=resubmit:0
29089a54 220actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
f0992bed
SH
221]])
222
223AT_CHECK([ovs-ofctl --protocols OpenFlow12 parse-flows flows.txt
224], [0], [stdout])
225AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
db0b6c29 226[[usable protocols: NXM,OXM
f0992bed 227chosen protocol: OXM-OpenFlow12
0e197060
BP
228OFPT_FLOW_MOD (OF1.2): ADD tcp,tp_src=123 actions=FLOOD
229OFPT_FLOW_MOD (OF1.2): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=set_field:4103->vlan_vid,set_field:2->vlan_pcp
230OFPT_FLOW_MOD (OF1.2): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
231OFPT_FLOW_MOD (OF1.2): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
232OFPT_FLOW_MOD (OF1.2): ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
233OFPT_FLOW_MOD (OF1.2): ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
234OFPT_FLOW_MOD (OF1.2): 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
235OFPT_FLOW_MOD (OF1.2): ADD ipv6 actions=set_field:fe80:123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
236OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:3334->sctp_src
237OFPT_FLOW_MOD (OF1.2): ADD sctp actions=set_field:4445->sctp_dst
238OFPT_FLOW_MOD (OF1.2): ADD tcp actions=set_field:1234->tcp_dst
239OFPT_FLOW_MOD (OF1.2): ADD udp actions=set_field:1111->udp_src
240OFPT_FLOW_MOD (OF1.2): ADD ip actions=set_field:10.1.1.2->ip_src,set_field:192.168.10.1->ip_dst,mod_nw_ttl:1,set_field:4->ip_dscp,set_field:2->nw_ecn
241OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=set_field:11:22:33:44:55:66->eth_src,set_field:10:20:30:40:50:60->eth_dst
242OFPT_FLOW_MOD (OF1.2): ADD in_port=0 actions=resubmit:0
243OFPT_FLOW_MOD (OF1.2): ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
27527aa0
BP
244]])
245AT_CLEANUP
246
3634dff8
BP
247AT_SETUP([ovs-ofctl parse-flow with invalid mask])
248for test_case in \
249 'tun_tos 1/1' \
250 'tun_ttl 1/1' \
251 'skb_priority 1/1' \
252 'eth_type 0x1234/0x1' \
253 'dl_vlan 9/0x1' \
254 'dl_vlan_pcp 6/0x1' \
255 'vlan_pcp 5/0x1' \
256 'mpls mpls_label 5/0x1' \
257 'mpls mpls_tc 1/0x1' \
258 'mpls mpls_bos 1/0x1' \
259 'ip nw_proto 1/1' \
260 'ipv6 nw_proto 1/1' \
261 'ip nw_tos 0xf0/0xf0' \
262 'ipv6 nw_tos 0xf0/0xf0' \
44a7e26d
JR
263 'ip ip_dscp 0x3c/0xf0' \
264 'ipv6 ip_dscp 0x3c/0xf0' \
3634dff8
BP
265 'ip nw_ecn 1/1' \
266 'ipv6 nw_ecn 1/1' \
267 'ip nw_ttl 5/1' \
268 'ipv6 nw_ttl 5/1' \
269 'arp arp_op 0/1' \
270 'icmp icmp_type 1/1' \
271 'icmp icmp_code 2/1' \
272 'icmp6 icmpv6_code 2/1'
273do
274 set $test_case
275 if test $# = 3; then
276 prereq=$1, field=$2 value=$3
277 else
278 prereq= field=$1 value=$2
279 fi
280 AT_CHECK_UNQUOTED([ovs-ofctl parse-flow "$prereq$field=$value,actions=drop"], [1], [],
281[ovs-ofctl: $value: invalid mask for field $field
282])
283done
284AT_CLEANUP
285
8621547c
JR
286AT_SETUP([ovs-ofctl action inconsistency (OpenFlow 1.1)])
287AT_CHECK([ovs-ofctl --protocols OpenFlow11 add-flow br0 'ip actions=mod_tp_dst:1234'
ba2fe8e9 288], [1], [stdout], [ovs-ofctl: none of the usable flow formats (OpenFlow10,NXM) is among the allowed flow formats (OpenFlow11)
8621547c
JR
289])
290AT_CLEANUP
291
4fe3445a
PS
292AT_SETUP([ovs-ofctl parse-flows (With Tunnel-Parameters)])
293AT_DATA([flows.txt], [[
294tun_id=0x1234000056780000/0xffff0000ffff0000,tun_src=1.1.1.1,tun_dst=2.2.2.2,tun_tos=0x3,tun_ttl=20,tun_flags=key|csum actions=drop
295]])
296
297AT_CHECK([ovs-ofctl parse-flows flows.txt
298], [1], [usable protocols: none
299], [stderr])
300
301AT_CLEANUP
302
303
ac923e91 304AT_SETUP([ovs-ofctl parse-flows (skb_priority)])
1b567fb9 305AT_DATA([flows.txt], [[
ac923e91 306skb_priority=0x12341234,tcp,tp_src=123,actions=flood
1b567fb9
AA
307]])
308
309AT_CHECK([ovs-ofctl parse-flows flows.txt
310], [1], [usable protocols: none
311], [stderr])
312
313AT_CLEANUP
314
315
27527aa0 316AT_SETUP([ovs-ofctl parse-flows (NXM)])
53ddd40a 317AT_DATA([flows.txt], [[
0e581146
BP
318# comment
319tcp,tp_src=123,actions=flood
320in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
ac923e91 321pkt_mark=0xbb,actions=set_field:0xaa->pkt_mark
0e581146 322udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
eedc0097
JP
323tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
324udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
0e581146 325cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
96fc46e8 326actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
73f33563 327tcp,tp_src=0x1230/0xfff0,tun_id=0x1234,cookie=0x5678,actions=flood
b9298d3f 328actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel:0x123456789
53ddd40a 329actions=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])
6c1491fb 330table=1,actions=drop
8368c090 331tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
7525e578 332metadata=0x1234ffff5678ffff/0xffff0000ffff0000,actions=drop
daff3353
EJ
333actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
334actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
335actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
336actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
a368bb53
EJ
337actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
338actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
db968317 339actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:[2,3])
a368bb53
EJ
340actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
341actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
29901626 342actions=resubmit:1,resubmit(2),resubmit(,3),resubmit(2,3)
a993007b
BP
343send_flow_rem,actions=output:1,output:NXM_NX_REG0[],output:2,output:NXM_NX_REG1[16..31],output:3
344check_overlap,actions=output:1,exit,output:2
8621547c 345tcp,actions=fin_timeout(idle_timeout=5,hard_timeout=15)
a7349929 346actions=controller(max_len=123,reason=invalid_ttl,id=555)
29089a54 347actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
53ddd40a 348]])
29901626 349
53ddd40a 350AT_CHECK([ovs-ofctl parse-flows flows.txt
f1f41fb6 351], [0], [stdout])
27527aa0 352AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
e71bff1b 353[[usable protocols: OXM,NXM+table_id
27527aa0
BP
354chosen protocol: NXM+table_id
355NXT_FLOW_MOD: ADD table:255 tcp,tp_src=123 actions=FLOOD
576ec803 356NXT_FLOW_MOD: ADD table:255 in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
ac923e91 357NXT_FLOW_MOD: ADD table:255 pkt_mark=0xbb actions=load:0xaa->NXM_NX_PKT_MARK[]
27527aa0
BP
358NXT_FLOW_MOD: ADD table:255 udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
359NXT_FLOW_MOD: ADD table:255 tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
360NXT_FLOW_MOD: ADD table:255 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
361NXT_FLOW_MOD: ADD table:255 priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
362NXT_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
363NXT_FLOW_MOD: ADD table:255 tcp,tun_id=0x1234,tp_src=0x1230/0xfff0 cookie:0x5678 actions=FLOOD
364NXT_FLOW_MOD: ADD table:255 actions=set_tunnel:0x1234,set_tunnel64:0x9876,set_tunnel64:0x123456789
365NXT_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])
e896c2d4
BP
366NXT_FLOW_MOD: ADD table:1 actions=drop
367NXT_FLOW_MOD: ADD table:255 tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
7525e578 368NXT_FLOW_MOD: ADD table:255 metadata=0x1234000056780000/0xffff0000ffff0000 actions=drop
daff3353
EJ
369NXT_FLOW_MOD: ADD table:255 actions=bundle(eth_src,50,active_backup,ofport,slaves:1)
370NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:2,3)
371NXT_FLOW_MOD: ADD table:255 actions=bundle(symmetric_l4,60,hrw,ofport,slaves:)
372NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle(eth_src,0,hrw,ofport,slaves:1),output:2
a368bb53
EJ
373NXT_FLOW_MOD: ADD table:255 actions=bundle_load(eth_src,50,active_backup,ofport,NXM_NX_REG0[],slaves:1)
374NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
db968317 375NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..15],slaves:2,3)
a368bb53
EJ
376NXT_FLOW_MOD: ADD table:255 actions=bundle_load(symmetric_l4,60,hrw,ofport,NXM_NX_REG0[0..30],slaves:)
377NXT_FLOW_MOD: ADD table:255 actions=output:1,bundle_load(eth_src,0,hrw,ofport,NXM_NX_REG0[16..31],slaves:1),output:2
29901626 378NXT_FLOW_MOD: ADD table:255 actions=resubmit:1,resubmit:2,resubmit(,3),resubmit(2,3)
a993007b
BP
379NXT_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
380NXT_FLOW_MOD: ADD table:255 check_overlap actions=output:1,exit,output:2
8621547c 381NXT_FLOW_MOD: ADD table:255 tcp actions=fin_timeout(idle_timeout=5,hard_timeout=15)
a7349929 382NXT_FLOW_MOD: ADD table:255 actions=controller(reason=invalid_ttl,max_len=123,id=555)
29089a54 383NXT_FLOW_MOD: ADD table:255 actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
53ddd40a 384]])
88ca35ee
BP
385AT_CLEANUP
386
387AT_SETUP([ovs-ofctl -F nxm parse-flows])
388AT_DATA([flows.txt], [
389# comment
390tcp,tp_src=123,actions=flood
391in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
bad68a99 392arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
fa8223b7 393ipv6,ipv6_label=0x12345 actions=2
d31f1109
JP
394ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
395ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
396ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
397tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
398udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
399in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
88ca35ee
BP
400udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
401tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
402udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
685a51a5 403icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
47284b1f 404icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4F:0571/112 actions=drop
685a51a5
JP
405icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
406icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
47284b1f 407icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE00:0000/96,nd_tll=00:0A:E4:25:6B:B1 actions=drop
88ca35ee
BP
408cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
409actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
410tun_id=0x1234,cookie=0x5678,actions=flood
411actions=drop
8368c090 412tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop
cb8ca532
BP
413dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop
414dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,actions=drop
415dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff,actions=drop
416dl_dst=aa:bb:cc:dd:ee:ff/00:00:00:00:00:00,actions=drop
29089a54 417actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
88ca35ee
BP
418])
419AT_CHECK([ovs-ofctl -F nxm parse-flows flows.txt], [0], [stdout])
420AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
e71bff1b 421usable protocols: NXM,OXM
27527aa0 422chosen protocol: NXM-table_id
88ca35ee 423NXT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
576ec803 424NXT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
bad68a99 425NXT_FLOW_MOD: ADD arp,dl_src=00:0a:e4:25:6b:b0,arp_sha=00:0a:e4:25:6b:b0 actions=drop
fa8223b7 426NXT_FLOW_MOD: ADD ipv6,ipv6_label=0x12345 actions=output:2
d31f1109
JP
427NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output:3
428NXT_FLOW_MOD: ADD ipv6,ipv6_src=2001:db8:3c4d:1::/64 actions=output:4
429NXT_FLOW_MOD: ADD ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:4/127 actions=output:5
430NXT_FLOW_MOD: ADD tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
431NXT_FLOW_MOD: ADD udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
432NXT_FLOW_MOD: ADD icmp6,in_port=3,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
88ca35ee
BP
433NXT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
434NXT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
435NXT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
685a51a5 436NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4e:571 actions=drop
47284b1f 437NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_target=fec0:0:1234:f045:8fff:1111:fe4f:0/112 actions=drop
685a51a5
JP
438NXT_FLOW_MOD: ADD icmp6,icmp_type=135,nd_sll=00:0a:e4:25:6b:b0 actions=drop
439NXT_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
47284b1f 440NXT_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
88ca35ee
BP
441NXT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
442NXT_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
443NXT_FLOW_MOD: ADD tun_id=0x1234 cookie:0x5678 actions=FLOOD
444NXT_FLOW_MOD: ADD actions=drop
8368c090 445NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop
cb8ca532
BP
446NXT_FLOW_MOD: ADD dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=drop
447NXT_FLOW_MOD: ADD dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=drop
448NXT_FLOW_MOD: ADD dl_dst=aa:bb:cc:dd:ee:ff/fe:ff:ff:ff:ff:ff actions=drop
449NXT_FLOW_MOD: ADD actions=drop
29089a54 450NXT_FLOW_MOD: ADD actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
0e581146
BP
451])
452AT_CLEANUP
09246b99 453
4f564f8d 454AT_SETUP([ovs-ofctl -F nxm -mmm parse-flows])
f393f81e 455AT_DATA([flows.txt], [[
4f564f8d
BP
456# comment
457tcp,tp_src=123,actions=flood
458in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
bad68a99 459arp,dl_src=00:0A:E4:25:6B:B0,arp_sha=00:0A:E4:25:6B:B0 actions=drop
fa8223b7 460ipv6,ipv6_label=0x12345 actions=2
d31f1109
JP
461ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=3
462ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5/64 actions=4
463ipv6,ipv6_dst=2001:db8:3c4d:1:2:3:4:5/127 actions=5
0d56eaf2
JS
464tcp6,ipv6_src=2001:db8:3c4d:1::1,tp_dst=80 actions=drop
465udp6,ipv6_src=2001:db8:3c4d:1::3,tp_dst=53 actions=drop
466sctp6,ipv6_src=2001:db8:3c4d:1::5,tp_dst=309 actions=drop
d31f1109 467in_port=3 icmp6,ipv6_src=2001:db8:3c4d:1::1,icmp_type=134 actions=drop
4f564f8d
BP
468udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
469tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
470udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
0d56eaf2 471sctp,nw_src=192.168.0.3,tp_dst=309 actions=pop_queue,output:1
685a51a5
JP
472icmp6,icmp_type=135,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571 actions=drop
473icmp6,icmp_type=135,nd_sll=00:0A:E4:25:6B:B0 actions=drop
474icmp6,icmp_type=136,nd_target=FEC0::1234:F045:8FFF:1111:FE4E:0571,nd_tll=00:0A:E4:25:6B:B1 actions=drop
4f564f8d
BP
475cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
476actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
477tun_id=0x1234,cookie=0x5678,actions=flood
478actions=drop
f393f81e 479reg0=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[]
b5e5143b 480actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
bd85dac1 481actions=push:NXM_NX_REG0[0..31],pop:NXM_NX_REG0[]
33d8c6b4 482vlan_tci=0x1123/0x1fff,actions=drop
29089a54 483actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
f393f81e 484]])
ad7c0437 485AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
f393f81e 486AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
e71bff1b 487[[usable protocols: NXM,OXM
27527aa0
BP
488chosen protocol: NXM-table_id
489NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(007b) actions=FLOOD
4f564f8d 490NXT_FLOW_MOD: ADD NXM_OF_IN_PORT(fffe), NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_VLAN_TCI_W(1009/1fff) actions=drop
bad68a99 491NXT_FLOW_MOD: ADD NXM_OF_ETH_SRC(000ae4256bb0), NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(000ae4256bb0) actions=drop
fa8223b7 492NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(00012345) actions=output:2
d31f1109
JP
493NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005) actions=output:3
494NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000) actions=output:4
495NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010db83c4d00010002000300040004/fffffffffffffffffffffffffffffffe) actions=output:5
496NXT_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
497NXT_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
0d56eaf2 498NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000005), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=drop
d31f1109 499NXT_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
4f564f8d
BP
500NXT_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
501NXT_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
502NXT_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
0d56eaf2 503NXT_FLOW_MOD: ADD NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80003), NXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(0135) actions=pop_queue,output:1
685a51a5
JP
504NXT_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
505NXT_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
506NXT_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
4f564f8d
BP
507NXT_FLOW_MOD: ADD <any> cookie:0x123456789abcdef hard:10 pri:60000 actions=CONTROLLER:65535
508NXT_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
509NXT_FLOW_MOD: ADD NXM_NX_TUN_ID(0000000000001234) cookie:0x5678 actions=FLOOD
510NXT_FLOW_MOD: ADD <any> actions=drop
d90611f1 511NXT_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[]
b5e5143b 512NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
bd85dac1 513NXT_FLOW_MOD: ADD <any> actions=push:NXM_NX_REG0[],pop:NXM_NX_REG0[]
33d8c6b4 514NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
29089a54 515NXT_FLOW_MOD: ADD <any> actions=sample(probability=12345,collector_set_id=23456,obs_domain_id=34567,obs_point_id=45678)
f393f81e 516]])
4f564f8d
BP
517AT_CLEANUP
518
09246b99
BP
519AT_SETUP([ovs-ofctl parse-nx-match])
520AT_KEYWORDS([nx-match])
521AT_DATA([nx-match.txt], [dnl
522<any>
523
524# in port
525NXM_OF_IN_PORT(0000)
526NXM_OF_IN_PORT(fffe)
527
528# eth dst
529NXM_OF_ETH_DST(0002e30f80a4)
1e37a2d7
BP
530NXM_OF_ETH_DST_W(010000000000/010000000000)
531NXM_OF_ETH_DST_W(000000000000/010000000000)
06da29ee 532NXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1e37a2d7 533NXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
fbcbc814 534NXM_OF_ETH_DST_W(60175619848f/000000000000)
1e37a2d7 535NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
73c0ce34 536NXM_OF_ETH_DST_W(60175619848f/5a5a5a5a5a5a)
09246b99
BP
537
538# eth src
539NXM_OF_ETH_SRC(020898456ddb)
73c0ce34
JS
540NXM_OF_ETH_SRC_W(012345abcdef/ffffff555555)
541NXM_OF_ETH_SRC_W(020898456ddb/ffffffffffff)
fbcbc814 542NXM_OF_ETH_SRC_W(020898456ddb/000000000000)
09246b99
BP
543
544# eth type
545NXM_OF_ETH_TYPE(0800)
546NXM_OF_ETH_TYPE(0800) NXM_OF_IN_PORT(0012)
547
548# vlan tci
549NXM_OF_VLAN_TCI(f009)
550NXM_OF_VLAN_TCI(f009) NXM_OF_VLAN_TCI(f009)
551NXM_OF_VLAN_TCI(0000) # Packets without 802.1Q header.
552NXM_OF_VLAN_TCI(3123) # Packets with VID=123, PCP=1.
66642cb4 553NXM_OF_VLAN_TCI(0123) # Does not make sense (but supported anyway)
09246b99 554NXM_OF_VLAN_TCI_W(1123/1fff) # Packets with VID=123, any PCP.
fbcbc814
SH
555NXM_OF_VLAN_TCI_W(1123/ffff) # Packets with VID=123, PCP=0
556NXM_OF_VLAN_TCI_W(1123/0000) # Packets with or without 802.1Q header
09246b99 557NXM_OF_VLAN_TCI_W(f000/f000) # Packets with any VID, PCP=7.
66642cb4 558NXM_OF_VLAN_TCI_W(0000/e000) # No 802.1Q or with VID=0
09246b99
BP
559
560# IP TOS
561NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(f0)
530180fd 562NXM_OF_ETH_TYPE(0800) NXM_OF_IP_TOS(41)
09246b99
BP
563NXM_OF_IP_TOS(f0)
564
530180fd
JP
565# IP ECN
566NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(03)
567NXM_OF_ETH_TYPE(0800) NXM_NX_IP_ECN(06)
568NXM_NX_IP_ECN(03)
569
09246b99
BP
570# IP protocol
571NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01)
572NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(05)
573NXM_OF_IP_PROTO(05)
574
a61680c6
JP
575# IP TTL
576NXM_OF_ETH_TYPE(0800) NXM_NX_IP_TTL(80)
577NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_TTL(ff)
578NXM_NX_IP_TTL(80)
579
09246b99
BP
580# IP source
581NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC(ac100014)
582NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
c08201d6 583NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
fbcbc814
SH
584NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
585NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
09246b99
BP
586NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
587NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
588
589# IP destination
590NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST(ac100014)
06da29ee 591NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
c08201d6 592NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
fbcbc814
SH
593NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
594NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
09246b99
BP
595NXM_OF_IP_DST(ac100014)
596NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
597
598# TCP source port
599NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
73f33563 600NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
fbcbc814
SH
601NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
602NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
09246b99
BP
603NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
604
605# TCP destination port
606NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
73f33563 607NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
fbcbc814
SH
608NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
609NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
09246b99
BP
610NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
611
dc235f7f
JR
612# TCP flags
613NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS(0131)
614NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00F0/0FF0)
615NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(01E2/ffff)
616NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00E1/0000)
617NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_NX_TCP_FLAGS(4321)
618
09246b99
BP
619# UDP source port
620NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
73f33563 621NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
fbcbc814
SH
622NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
623NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
09246b99
BP
624NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
625
626# UDP destination port
627NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
73f33563 628NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
fbcbc814
SH
629NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
630NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
09246b99
BP
631NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
632
633# ICMP type
634NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_TYPE(12)
635NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_TYPE(10)
636
637# ICMP code
638NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(01) NXM_OF_ICMP_CODE(12)
639NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(00) NXM_OF_ICMP_CODE(10)
640NXM_OF_ETH_TYPE(0800) NXM_OF_ICMP_CODE(10)
641NXM_OF_ICMP_CODE(00)
642
643# ARP opcode
644NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001)
645NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(1111)
646NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0001)
647NXM_OF_ARP_OP(0001)
648NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_OP(0001) NXM_OF_ARP_OP(0001)
649
bad68a99 650# ARP source protocol address
09246b99 651NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA(ac100014)
06da29ee 652NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
c08201d6 653NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
fbcbc814
SH
654NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
655NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
09246b99 656NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
06da29ee 657NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
09246b99 658
bad68a99 659# ARP destination protocol address
09246b99 660NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
06da29ee 661NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
c08201d6 662NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
fbcbc814
SH
663NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
664NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
09246b99
BP
665NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
666NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
667
bad68a99
JP
668# ARP source hardware address
669NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_SHA(0002e30f80a4)
670NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
671NXM_NX_ARP_SHA(0002e30f80a4)
672
673# ARP destination hardware address
674NXM_OF_ETH_TYPE(0806) NXM_NX_ARP_THA(0002e30f80a4)
675NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
676NXM_NX_ARP_THA(0002e30f80a4)
677
8087f5ff
MM
678# RARP opcode
679NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003)
680NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(1111)
681NXM_OF_ETH_TYPE(0000) NXM_OF_ARP_OP(0003)
682NXM_OF_ARP_OP(0003)
683NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_OP(0003) NXM_OF_ARP_OP(0003)
684
685# RARP source protocol address
686NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
687NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
688NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
689NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
690NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/00000000)
691NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
692NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
693
694# RARP destination protocol address
695NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
696NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
697NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
698NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
699NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/00000000)
700NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
701NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
702
703# RARP source hardware address
704NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_SHA(0002e30f80a4)
705NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_SHA(0002e30f80a4)
706NXM_NX_ARP_SHA(0002e30f80a4)
707
708# RARP destination hardware address
709NXM_OF_ETH_TYPE(8035) NXM_NX_ARP_THA(0002e30f80a4)
710NXM_OF_ETH_TYPE(0800) NXM_NX_ARP_THA(0002e30f80a4)
711NXM_NX_ARP_THA(0002e30f80a4)
712
d31f1109
JP
713# IPv6 source
714NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
715NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
716NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
ff0b06ee 717NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
fbcbc814
SH
718NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
719NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
d31f1109
JP
720NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
721
722# IPv6 destination
723NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
724NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
ff0b06ee 725NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
fbcbc814
SH
726NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
727NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
d31f1109
JP
728NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
729
626186c3
SH
730# IPv6 Flow Label
731NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(1000000f)
732NXM_NX_IPV6_LABEL(0000000f)
733NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_LABEL(0000000f)
734
ff0b06ee
BP
735# ND target address
736NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
737NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
738NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
fbcbc814
SH
739NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
740NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
ff0b06ee
BP
741NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
742
685a51a5
JP
743# ND source hardware address
744NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
745NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
746NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
747NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_SLL(0002e30f80a4)
748
749# ND destination hardware address
750NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
751NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
752NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3b) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
753NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005) NXM_NX_ND_TLL(0002e30f80a4)
754
7257b535
BP
755# IPv4 fragments.
756NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(00)
757NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(01)
758NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(02)
759NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(03)
760NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/03)
761NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/fd)
762NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(00/02)
763NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(01/01)
764NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(02/02)
765NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/03)
fbcbc814
SH
766NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/ff)
767NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG_W(03/00)
7257b535
BP
768NXM_OF_ETH_TYPE(0800) NXM_NX_IP_FRAG(f3)
769
770# IPv6 fragments.
771NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(00)
772NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(01)
773NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(02)
774NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(03)
775NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/03)
776NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/01)
777NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(00/02)
778NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(01/01)
779NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(02/02)
780NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/03)
fbcbc814
SH
781NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/00)
782NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG_W(03/ff)
7257b535
BP
783NXM_OF_ETH_TYPE(86dd) NXM_NX_IP_FRAG(f3)
784
e729e793
JP
785# Flow cookie.
786NXM_NX_COOKIE(00000000abcdef01)
787NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
fbcbc814
SH
788NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
789NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
e729e793 790
09246b99
BP
791# Tunnel ID.
792NXM_NX_TUN_ID(00000000abcdef01)
8368c090 793NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
fbcbc814
SH
794NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
795NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
b6c9e612
BP
796
797# Register 0.
798NXM_NX_REG0(acebdf56)
799NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
fbcbc814
SH
800NXM_NX_REG0_W(a0e0d050/ffffffff)
801NXM_NX_REG0_W(a0e0d050/00000000)
558d80cb
BP
802
803# Invalid field number.
80401020304(1111/2222)
805
806# Unimplemented registers.
807#
808# This test assumes that at least two registers, but fewer than 16,
809# registers are implemented.
81000010004(12345678)
81100010108(12345678/12345678)
81200011e04(12345678)
81300011f08(12345678/12345678)
09246b99 814])
e1cfc4e4 815AT_CHECK([ovs-ofctl -vPATTERN:'console:%c|%p|%m' --strict parse-nx-match < nx-match.txt], [0], [dnl
09246b99
BP
816<any>
817
818# in port
abe529af 819NXM_OF_IN_PORT(0000)
09246b99
BP
820NXM_OF_IN_PORT(fffe)
821
822# eth dst
823NXM_OF_ETH_DST(0002e30f80a4)
1e37a2d7
BP
824NXM_OF_ETH_DST_W(010000000000/010000000000)
825NXM_OF_ETH_DST_W(000000000000/010000000000)
06da29ee 826NXM_OF_ETH_DST_W(010000000000/010000000000)
1e37a2d7 827NXM_OF_ETH_DST(0002e30f80a4)
fbcbc814 828<any>
1e37a2d7 829NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
73c0ce34 830NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
09246b99
BP
831
832# eth src
833NXM_OF_ETH_SRC(020898456ddb)
73c0ce34
JS
834NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
835NXM_OF_ETH_SRC(020898456ddb)
fbcbc814 836<any>
09246b99
BP
837
838# eth type
839NXM_OF_ETH_TYPE(0800)
840NXM_OF_IN_PORT(0012), NXM_OF_ETH_TYPE(0800)
841
842# vlan tci
843NXM_OF_VLAN_TCI(f009)
2e0525bc 844nx_pull_match() returned error OFPBMC_DUP_FIELD
09246b99
BP
845NXM_OF_VLAN_TCI(0000)
846NXM_OF_VLAN_TCI(3123)
66642cb4 847NXM_OF_VLAN_TCI(0123)
09246b99 848NXM_OF_VLAN_TCI_W(1123/1fff)
fbcbc814
SH
849NXM_OF_VLAN_TCI(1123)
850<any>
09246b99 851NXM_OF_VLAN_TCI_W(f000/f000)
66642cb4 852NXM_OF_VLAN_TCI_W(0000/e000)
09246b99
BP
853
854# IP TOS
855NXM_OF_ETH_TYPE(0800), NXM_OF_IP_TOS(f0)
2e0525bc
SH
856nx_pull_match() returned error OFPBMC_BAD_VALUE
857nx_pull_match() returned error OFPBMC_BAD_PREREQ
530180fd
JP
858
859# IP ECN
860NXM_OF_ETH_TYPE(0800), NXM_NX_IP_ECN(03)
2e0525bc
SH
861nx_pull_match() returned error OFPBMC_BAD_VALUE
862nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
863
864# IP protocol
865NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01)
866NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(05)
2e0525bc 867nx_pull_match() returned error OFPBMC_BAD_PREREQ
a61680c6
JP
868
869# IP TTL
870NXM_OF_ETH_TYPE(0800), NXM_NX_IP_TTL(80)
871NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_TTL(ff)
2e0525bc 872nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
873
874# IP source
875NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
876NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
c08201d6 877NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
fbcbc814
SH
878NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
879NXM_OF_ETH_TYPE(0800)
2e0525bc
SH
880nx_pull_match() returned error OFPBMC_BAD_PREREQ
881nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
882
883# IP destination
884NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
885NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
c08201d6 886NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
fbcbc814
SH
887NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
888NXM_OF_ETH_TYPE(0800)
2e0525bc
SH
889nx_pull_match() returned error OFPBMC_BAD_PREREQ
890nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
891
892# TCP source port
893NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
73f33563 894NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
fbcbc814
SH
895NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
896NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
2e0525bc 897nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
898
899# TCP destination port
900NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
73f33563 901NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
fbcbc814
SH
902NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
903NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
2e0525bc 904nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99 905
dc235f7f
JR
906# TCP flags
907NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0131)
908NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS_W(00f0/0ff0)
909NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(01e2)
910NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
911nx_pull_match() returned error OFPBMC_BAD_PREREQ
912
09246b99
BP
913# UDP source port
914NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
73f33563 915NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
fbcbc814
SH
916NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
917NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
2e0525bc 918nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
919
920# UDP destination port
921NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
73f33563 922NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
fbcbc814
SH
923NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
924NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
2e0525bc 925nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
926
927# ICMP type
928NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_TYPE(12)
2e0525bc 929nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
930
931# ICMP code
932NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(01), NXM_OF_ICMP_CODE(12)
2e0525bc
SH
933nx_pull_match() returned error OFPBMC_BAD_PREREQ
934nx_pull_match() returned error OFPBMC_BAD_PREREQ
935nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99
BP
936
937# ARP opcode
938NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_OP(0001)
2e0525bc
SH
939nx_pull_match() returned error OFPBMC_BAD_VALUE
940nx_pull_match() returned error OFPBMC_BAD_PREREQ
941nx_pull_match() returned error OFPBMC_BAD_PREREQ
942nx_pull_match() returned error OFPBMC_DUP_FIELD
09246b99 943
bad68a99 944# ARP source protocol address
09246b99
BP
945NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
946NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
c08201d6 947NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
fbcbc814
SH
948NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
949NXM_OF_ETH_TYPE(0806)
2e0525bc
SH
950nx_pull_match() returned error OFPBMC_BAD_PREREQ
951nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99 952
bad68a99 953# ARP destination protocol address
09246b99
BP
954NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
955NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
c08201d6 956NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
fbcbc814
SH
957NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
958NXM_OF_ETH_TYPE(0806)
2e0525bc
SH
959nx_pull_match() returned error OFPBMC_BAD_PREREQ
960nx_pull_match() returned error OFPBMC_BAD_PREREQ
09246b99 961
bad68a99
JP
962# ARP source hardware address
963NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_SHA(0002e30f80a4)
2e0525bc
SH
964nx_pull_match() returned error OFPBMC_BAD_PREREQ
965nx_pull_match() returned error OFPBMC_BAD_PREREQ
bad68a99
JP
966
967# ARP destination hardware address
968NXM_OF_ETH_TYPE(0806), NXM_NX_ARP_THA(0002e30f80a4)
2e0525bc 969nx_pull_match() returned error OFPBMC_BAD_PREREQ
8087f5ff
MM
970nx_pull_match() returned error OFPBMC_BAD_PREREQ
971
972# RARP opcode
973NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_OP(0003)
974nx_pull_match() returned error OFPBMC_BAD_VALUE
975nx_pull_match() returned error OFPBMC_BAD_PREREQ
976nx_pull_match() returned error OFPBMC_BAD_PREREQ
977nx_pull_match() returned error OFPBMC_DUP_FIELD
978
979# RARP source protocol address
980NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
981NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
982NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
983NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
984NXM_OF_ETH_TYPE(8035)
985nx_pull_match() returned error OFPBMC_BAD_PREREQ
986nx_pull_match() returned error OFPBMC_BAD_PREREQ
987
988# RARP destination protocol address
989NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
990NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
991NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(40201234/77777777)
992NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
993NXM_OF_ETH_TYPE(8035)
994nx_pull_match() returned error OFPBMC_BAD_PREREQ
995nx_pull_match() returned error OFPBMC_BAD_PREREQ
996
997# RARP source hardware address
998NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_SHA(0002e30f80a4)
999nx_pull_match() returned error OFPBMC_BAD_PREREQ
1000nx_pull_match() returned error OFPBMC_BAD_PREREQ
1001
1002# RARP destination hardware address
1003NXM_OF_ETH_TYPE(8035), NXM_NX_ARP_THA(0002e30f80a4)
1004nx_pull_match() returned error OFPBMC_BAD_PREREQ
2e0525bc 1005nx_pull_match() returned error OFPBMC_BAD_PREREQ
bad68a99 1006
d31f1109
JP
1007# IPv6 source
1008NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
2e0525bc 1009nx_pull_match() returned error OFPBMC_BAD_PREREQ
d31f1109 1010NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
ff0b06ee 1011NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
fbcbc814
SH
1012NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
1013NXM_OF_ETH_TYPE(86dd)
2e0525bc 1014nx_pull_match() returned error OFPBMC_BAD_PREREQ
d31f1109
JP
1015
1016# IPv6 destination
1017NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
2e0525bc 1018nx_pull_match() returned error OFPBMC_BAD_PREREQ
ff0b06ee 1019NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
fbcbc814
SH
1020NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
1021NXM_OF_ETH_TYPE(86dd)
2e0525bc 1022nx_pull_match() returned error OFPBMC_BAD_PREREQ
d31f1109 1023
626186c3
SH
1024# IPv6 Flow Label
1025nx_pull_match() returned error OFPBMC_BAD_VALUE
1026nx_pull_match() returned error OFPBMC_BAD_PREREQ
1027NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_LABEL(0000000f)
1028
ff0b06ee
BP
1029# ND target address
1030NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1031NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1032NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
fbcbc814
SH
1033NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1034NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
ff0b06ee
BP
1035NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
1036
685a51a5
JP
1037# ND source hardware address
1038NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
2e0525bc
SH
1039nx_pull_match() returned error OFPBMC_BAD_PREREQ
1040nx_pull_match() returned error OFPBMC_BAD_PREREQ
1041nx_pull_match() returned error OFPBMC_BAD_PREREQ
685a51a5
JP
1042
1043# ND destination hardware address
1044NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_TLL(0002e30f80a4)
2e0525bc
SH
1045nx_pull_match() returned error OFPBMC_BAD_PREREQ
1046nx_pull_match() returned error OFPBMC_BAD_PREREQ
1047nx_pull_match() returned error OFPBMC_BAD_PREREQ
685a51a5 1048
7257b535
BP
1049# IPv4 fragments.
1050NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1051NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(01)
1052NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(02)
1053NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1054NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
1055NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/01)
1056NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(00/02)
1057NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(01/01)
1058NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
1059NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
fbcbc814
SH
1060NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1061NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
2e0525bc 1062nx_pull_match() returned error OFPBMC_BAD_VALUE
7257b535
BP
1063
1064# IPv6 fragments.
1065NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1066NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(01)
1067NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(02)
1068NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1069NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1070NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/01)
1071NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(00/02)
1072NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
1073NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
1074NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
fbcbc814
SH
1075NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
1076NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
2e0525bc 1077nx_pull_match() returned error OFPBMC_BAD_VALUE
7257b535 1078
e729e793
JP
1079# Flow cookie.
1080NXM_NX_COOKIE(00000000abcdef01)
1081NXM_NX_COOKIE_W(84200000abcdef01/84200000ffffffff)
fbcbc814
SH
1082NXM_NX_COOKIE(84200000abcdef01)
1083<any>
e729e793 1084
09246b99
BP
1085# Tunnel ID.
1086NXM_NX_TUN_ID(00000000abcdef01)
8368c090 1087NXM_NX_TUN_ID_W(84200000abcdef01/84200000ffffffff)
fbcbc814
SH
1088NXM_NX_TUN_ID(84200000abcdef01)
1089<any>
b6c9e612
BP
1090
1091# Register 0.
1092NXM_NX_REG0(acebdf56)
1093NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
fbcbc814
SH
1094NXM_NX_REG0(a0e0d050)
1095<any>
558d80cb
BP
1096
1097# Invalid field number.
2e0525bc 1098nx_pull_match() returned error OFPBMC_BAD_FIELD
558d80cb
BP
1099
1100# Unimplemented registers.
1101#
1102# This test assumes that at least two registers, but fewer than 16,
1103# registers are implemented.
1104NXM_NX_REG0(12345678)
1105NXM_NX_REG0_W(12345678/12345678)
2e0525bc
SH
1106nx_pull_match() returned error OFPBMC_BAD_FIELD
1107nx_pull_match() returned error OFPBMC_BAD_FIELD
e1cfc4e4
BP
1108], [stderr])
1109
1110# Check that at least the first warning made it. (It's rate-limited
1111# so a variable number could show up, especially under valgrind etc.)
1112AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
1113nx_match|WARN|NXM/OXM entry NXM_OF_ETH_DST_W(ffffffffffff/010000000000) has 1-bits in value for bits wildcarded by the mask. (Future versions of OVS may report this as an OpenFlow error.)
09246b99 1114])
e1cfc4e4
BP
1115
1116# Check that there wasn't any other stderr output.
1117AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
09246b99 1118AT_CLEANUP
0fbc9f11 1119
96628ae8
BP
1120AT_SETUP([ovs-ofctl parse-ofp10-match])
1121AT_KEYWORDS([OF1.0])
1122AT_DATA([test-data], [dnl
576ec803 1123# in_port=LOCAL
8812ec2c
BP
1124003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1125xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1126
1127# dl_src=00:01:02:03:04:05
8812ec2c
BP
1128003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
1129xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1130
1131# dl_dst=10:20:30:40:50:60
8812ec2c
BP
1132003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
1133xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1134
1135# dl_vlan=291
8812ec2c
BP
1136003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
1137xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1138
1139# dl_vlan_pcp=5
8812ec2c
BP
1140002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
1141xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1142
1143# dl_vlan=291,dl_vlan_pcp=4
8812ec2c
BP
1144002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
1145xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1146
1147# vlan_tci=0x0000
8812ec2c
BP
1148003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
1149xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1150
1151dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
1152dnl OVS ignores it and drops it on output.
1153# vlan_tci=0x0000
1154# 1: 28 -> 38
1155# 20: 05 -> 00
8812ec2c
BP
1156002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
1157xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1158
1159dnl Invalid VID and PCP discards out-of-range bits:
1160# dl_vlan=256,dl_vlan_pcp=7
1161# 18: f1 -> 01
1162# 20: ff -> 07
8812ec2c
BP
1163002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
1164xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1165
1166# dl_type=0x1234
8812ec2c
BP
1167003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1168xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1169
1170# ip,nw_proto=5
8812ec2c
BP
1171003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
1172xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1173
1174dnl Ignore nw_proto if not IP or ARP:
1175# dl_type=0x1234,nw_proto=5
1176# normal: 3: cf -> ef
1177# normal: 25: 05 -> 00
1178& ofp_util|INFO|normalization changed ofp_match, details:
1179& ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
1180& ofp_util|INFO|post: dl_type=0x1234
8812ec2c
BP
1181003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
1182xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1183
1184# ip,nw_tos=252
8812ec2c
BP
1185001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
1186xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1187
1188dnl Ignore nw_tos if not IP:
1189# arp,nw_tos=4
1190# 24: 05 -> 04
1191# normal: 1: 18 -> 38
1192# normal: 24: 04 -> 00
1193& ofp_util|INFO|normalization changed ofp_match, details:
1194& ofp_util|INFO| pre: arp,nw_tos=4
1195& ofp_util|INFO|post: arp
8812ec2c
BP
1196001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
1197xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1198
1199dnl Low 2 bits of invalid TOS are forced to 0:
1200# ip,nw_tos=48
1201# 24: 31 -> 30
8812ec2c
BP
1202001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
1203xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1204
1205# arp,arp_op=2
8812ec2c
BP
1206003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
1207xxxxxxxx xxxxxxxx xxxx xxxx
96628ae8
BP
1208
1209# ip,nw_src=192.168.128.85
8812ec2c
BP
1210003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1211c0a88055 xxxxxxxx xxxx xxxx
96628ae8
BP
1212
1213# ip,nw_src=192.168.128.0/24
1214# 31: 55 -> 00
8812ec2c
BP
1215003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1216c0a88055 xxxxxxxx xxxx xxxx
96628ae8
BP
1217
1218# ip,nw_dst=192.168.128.85
8812ec2c
BP
1219003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1220xxxxxxxx c0a88055 xxxx xxxx
96628ae8
BP
1221
1222# ip,nw_dst=192.168.128.0/24
1223# 35: 55 -> 00
8812ec2c
BP
1224003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
1225xxxxxxxx c0a88055 xxxx xxxx
96628ae8 1226
666d0863 1227# arp,arp_spa=192.168.128.85
8812ec2c
BP
1228003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1229c0a88055 xxxxxxxx xxxx xxxx
96628ae8 1230
666d0863 1231# arp,arp_spa=192.168.128.0/24
96628ae8 1232# 31: 55 -> 00
8812ec2c
BP
1233003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1234c0a88055 xxxxxxxx xxxx xxxx
96628ae8 1235
666d0863 1236# arp,arp_tpa=192.168.128.85
8812ec2c
BP
1237003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1238xxxxxxxx c0a88055 xxxx xxxx
96628ae8 1239
666d0863 1240# arp,arp_tpa=192.168.128.0/24
96628ae8 1241# 35: 55 -> 00
8812ec2c
BP
1242003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
1243xxxxxxxx c0a88055 xxxx xxxx
96628ae8
BP
1244
1245dnl Ignore nw_src if not IP or ARP:
1246# dl_type=0x1234,nw_src=192.168.128.0/24
1247# 31: 55 -> 00
1248# normal: 2: 08 -> 20
1249# normal: 28: c0 -> 00
1250# normal: 29: a8 -> 00
1251# normal: 30: 80 -> 00
1252& ofp_util|INFO|normalization changed ofp_match, details:
1253& ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
1254& ofp_util|INFO|post: dl_type=0x1234
8812ec2c
BP
1255003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1256c0a88055 xxxxxxxx xxxx xxxx
96628ae8
BP
1257
1258dnl Ignore nw_dst if not IP or ARP:
1259# dl_type=0x1234,nw_dst=192.168.128.0/24
1260# 35: 55 -> 00
1261# normal: 1: 32 -> 38
1262# normal: 32: c0 -> 00
1263# normal: 33: a8 -> 00
1264# normal: 34: 80 -> 00
1265& ofp_util|INFO|normalization changed ofp_match, details:
1266& ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
1267& ofp_util|INFO|post: dl_type=0x1234
8812ec2c
BP
1268003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
1269xxxxxxxx c0a88055 xxxx xxxx
96628ae8
BP
1270
1271# tcp,tp_src=443
8812ec2c
BP
12720038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1273xxxxxxxx xxxxxxxx 01bb xxxx
96628ae8
BP
1274
1275# tcp,tp_dst=443
8812ec2c
BP
12760038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
1277xxxxxxxx xxxxxxxx xxxx 01bb
96628ae8
BP
1278
1279# udp,tp_src=443
8812ec2c
BP
12800038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1281xxxxxxxx xxxxxxxx 01bb xxxx
96628ae8
BP
1282
1283# udp,tp_dst=443
8812ec2c
BP
12840038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
1285xxxxxxxx xxxxxxxx xxxx 01bb
96628ae8 1286
0d56eaf2
JS
1287# sctp,tp_src=443
12880038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1289xxxxxxxx xxxxxxxx 01bb xxxx
1290
1291# sctp,tp_dst=443
12920038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 84 xxxx dnl
1293xxxxxxxx xxxxxxxx xxxx 01bb
1294
96628ae8 1295# icmp,icmp_type=5
8812ec2c
BP
12960038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1297xxxxxxxx xxxxxxxx 0005 xxxx
96628ae8
BP
1298
1299# icmp,icmp_code=8
8812ec2c
BP
13000038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
1301xxxxxxxx xxxxxxxx xxxx 0008
96628ae8 1302
0d56eaf2 1303dnl Ignore tp_src if not TCP/UDP/SCTP:
96628ae8
BP
1304# ip,nw_proto=21,tp_src=443
1305# normal: 3: 8f -> cf
1306# normal: 36: 01 -> 00
1307# normal: 37: bb -> 00
1308& ofp_util|INFO|normalization changed ofp_match, details:
1309& ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
1310& ofp_util|INFO|post: ip,nw_proto=21
8812ec2c
BP
13110038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1312xxxxxxxx xxxxxxxx 01bb xxxx
96628ae8 1313
0d56eaf2 1314dnl Ignore tp_dst if not TCP/UDP/SCTP:
96628ae8
BP
1315# ip,nw_proto=21,tp_dst=443
1316# normal: 3: 4f -> cf
1317# normal: 38: 01 -> 00
1318# normal: 39: bb -> 00
1319dnl The normalization details are suppressed here due to rate-limiting.
8812ec2c
BP
13200038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
1321xxxxxxxx xxxxxxxx xxxx 01bb
96628ae8
BP
1322
1323])
1324sed '/^[[#&]]/d' < test-data > input.txt
1325sed -n 's/^# //p; /^$/p' < test-data > expout
1326sed -n 's/^& //p' < test-data > experr
1327AT_CAPTURE_FILE([input.txt])
1328AT_CAPTURE_FILE([expout])
1329AT_CAPTURE_FILE([experr])
1330AT_CHECK(
1331 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp10-match < input.txt],
1332 [0], [expout], [experr])
1333AT_CLEANUP
1334
410698cf
BP
1335AT_SETUP([ovs-ofctl parse-ofp11-match])
1336AT_KEYWORDS([OF1.1])
1337AT_DATA([test-data], [dnl
576ec803 1338# in_port=LOCAL
410698cf
BP
13390000 0058 fffffffe 000003fe dnl
1340000000000000ffffffffffff 000000000000ffffffffffff dnl
13410000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
134200000000 00 000000 0000000000000000ffffffffffffffff
1343
1344# bad ofp11_match: OFPBMC_BAD_VALUE
1345& ofp_util|WARN|port 305419896 is outside the supported range 0 through 65279 or 0xffffff00 through 0xffffffff
13460000 0058 12345678 000003fe dnl
1347000000000000ffffffffffff 000000000000ffffffffffff dnl
13480000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
134900000000 00 000000 0000000000000000ffffffffffffffff
1350
1351# dl_src=00:01:02:03:04:05
13520000 0058 00000000 000003ff dnl
1353000102030405000000000000 000000000000ffffffffffff dnl
13540000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
135500000000 00 000000 0000000000000000ffffffffffffffff
1356
1357# dl_src=55:55:55:55:55:55/55:55:55:55:55:55
13580000 0058 00000000 000003ff dnl
1359555555555555aaaaaaaaaaaa 000000000000ffffffffffff dnl
13600000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
136100000000 00 000000 0000000000000000ffffffffffffffff
1362
1363# dl_dst=00:01:02:03:04:05
13640000 0058 00000000 000003ff dnl
1365000000000000ffffffffffff 000102030405000000000000 dnl
13660000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
136700000000 00 000000 0000000000000000ffffffffffffffff
1368
1369# dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
13700000 0058 00000000 000003ff dnl
1371000000000000ffffffffffff 010000000000feffffffffff dnl
13720000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
137300000000 00 000000 0000000000000000ffffffffffffffff
1374
1375# dl_dst=00:01:02:03:04:05/fe:ff:ff:ff:ff:ff
13760000 0058 00000000 000003ff dnl
1377000000000000ffffffffffff 000102030405010000000000 dnl
13780000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
137900000000 00 000000 0000000000000000ffffffffffffffff
1380
1381# dl_dst=55:55:55:55:55:55/55:55:55:55:55:55
13820000 0058 00000000 000003ff dnl
1383000000000000ffffffffffff 555555555555aaaaaaaaaaaa dnl
13840000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
138500000000 00 000000 0000000000000000ffffffffffffffff
1386
1387dnl dl_vlan_pcp is ignored if dl_vlan is wildcarded, which causes the
1388dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1389# in_port=1
1390# 11: fa -> fe
1391# 38: 03 -> 00
13920000 0058 00000001 000003fa dnl
1393000000000000ffffffffffff 000000000000ffffffffffff dnl
13940000 03 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
139500000000 00 000000 0000000000000000ffffffffffffffff
1396
1397# dl_vlan=291
13980000 0058 00000000 000003fd dnl
1399000000000000ffffffffffff 000000000000ffffffffffff dnl
14000123 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
140100000000 00 000000 0000000000000000ffffffffffffffff
1402
1403dnl OFPVID_NONE:
1404# vlan_tci=0x0000
14050000 0058 00000000 000003fd dnl
1406000000000000ffffffffffff 000000000000ffffffffffff dnl
1407ffff 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
140800000000 00 000000 0000000000000000ffffffffffffffff
1409
1410dnl OFPVID_NONE ignores dl_vlan_pcp even if not wildcarded, which causes
1411dnl the wildcard bit and the dl_vlan_pcp to be dropped for output:
1412# vlan_tci=0x0000
1413# 11: f9 -> fd
1414# 38: 05 -> 00
14150000 0058 00000000 000003f9 dnl
1416000000000000ffffffffffff 000000000000ffffffffffff dnl
1417ffff 05 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
141800000000 00 000000 0000000000000000ffffffffffffffff
1419
1420# vlan_tci=0x1000/0x1000
14210000 0058 00000000 000003fd dnl
1422000000000000ffffffffffff 000000000000ffffffffffff dnl
1423fffe 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
142400000000 00 000000 0000000000000000ffffffffffffffff
1425
1426dnl Try invalid VID:
1427# bad ofp11_match: OFPBMC_BAD_VALUE
14280000 0058 00000000 000003fd dnl
1429000000000000ffffffffffff 000000000000ffffffffffff dnl
14301234 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
143100000000 00 000000 0000000000000000ffffffffffffffff
1432
1433# dl_vlan_pcp=4
14340000 0058 00000000 000003f9 dnl
1435000000000000ffffffffffff 000000000000ffffffffffff dnl
1436fffe 04 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
143700000000 00 000000 0000000000000000ffffffffffffffff
1438
1439# dl_vlan=10,dl_vlan_pcp=6
14400000 0058 00000000 000003f9 dnl
1441000000000000ffffffffffff 000000000000ffffffffffff dnl
1442000a 06 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
144300000000 00 000000 0000000000000000ffffffffffffffff
1444
1445# dl_type=0x1234
14460000 0058 00000000 000003f7 dnl
1447000000000000ffffffffffff 000000000000ffffffffffff dnl
14480000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
144900000000 00 000000 0000000000000000ffffffffffffffff
1450
1451# ip,nw_tos=252
14520000 0058 00000000 000003e7 dnl
1453000000000000ffffffffffff 000000000000ffffffffffff dnl
14540000 00 00 0800 fc 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
145500000000 00 000000 0000000000000000ffffffffffffffff
1456
1457dnl Try invalid TOS:
1458# bad ofp11_match: OFPBMC_BAD_VALUE
14590000 0058 00000000 000003e7 dnl
1460000000000000ffffffffffff 000000000000ffffffffffff dnl
14610000 00 00 0800 01 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
146200000000 00 000000 0000000000000000ffffffffffffffff
1463
1464# ip,nw_proto=5
14650000 0058 00000000 000003d7 dnl
1466000000000000ffffffffffff 000000000000ffffffffffff dnl
14670000 00 00 0800 00 05 00000000ffffffff 00000000ffffffff 0000 0000 dnl
146800000000 00 000000 0000000000000000ffffffffffffffff
1469
1470# arp,arp_op=2
14710000 0058 00000000 000003d7 dnl
1472000000000000ffffffffffff 000000000000ffffffffffff dnl
14730000 00 00 0806 00 02 00000000ffffffff 00000000ffffffff 0000 0000 dnl
147400000000 00 000000 0000000000000000ffffffffffffffff
1475
1476# ip,nw_src=192.168.128.0/24
14770000 0058 00000000 000003f7 dnl
1478000000000000ffffffffffff 000000000000ffffffffffff dnl
14790000 00 00 0800 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
148000000000 00 000000 0000000000000000ffffffffffffffff
1481
c08201d6
BP
1482# ip,nw_src=128.160.128.0/165.165.165.165
1483# 44: c0 -> 80
1484# 45: a8 -> a0
410698cf
BP
14850000 0058 00000000 000003f7 dnl
1486000000000000ffffffffffff 000000000000ffffffffffff dnl
14870000 00 00 0800 00 00 c0a880005a5a5a5a 00000000ffffffff 0000 0000 dnl
148800000000 00 000000 0000000000000000ffffffffffffffff
1489
1490# ip,nw_dst=192.168.128.0/24
14910000 0058 00000000 000003f7 dnl
1492000000000000ffffffffffff 000000000000ffffffffffff dnl
14930000 00 00 0800 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
149400000000 00 000000 0000000000000000ffffffffffffffff
1495
c08201d6
BP
1496# ip,nw_dst=128.160.128.0/165.165.165.165
1497# 52: c0 -> 80
1498# 53: a8 -> a0
410698cf
BP
14990000 0058 00000000 000003f7 dnl
1500000000000000ffffffffffff 000000000000ffffffffffff dnl
15010000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
150200000000 00 000000 0000000000000000ffffffffffffffff
1503
666d0863 1504# arp,arp_spa=192.168.128.0/24
410698cf
BP
15050000 0058 00000000 000003f7 dnl
1506000000000000ffffffffffff 000000000000ffffffffffff dnl
15070000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
150800000000 00 000000 0000000000000000ffffffffffffffff
1509
666d0863 1510# arp,arp_tpa=192.168.128.0/24
410698cf
BP
15110000 0058 00000000 000003f7 dnl
1512000000000000ffffffffffff 000000000000ffffffffffff dnl
15130000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
151400000000 00 000000 0000000000000000ffffffffffffffff
1515
1516# tcp,tp_src=443
15170000 0058 00000000 00000397 dnl
1518000000000000ffffffffffff 000000000000ffffffffffff dnl
15190000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
152000000000 00 000000 0000000000000000ffffffffffffffff
1521
1522# tcp,tp_dst=443
15230000 0058 00000000 00000357 dnl
1524000000000000ffffffffffff 000000000000ffffffffffff dnl
15250000 00 00 0800 00 06 00000000ffffffff 00000000ffffffff 0000 01bb dnl
152600000000 00 000000 0000000000000000ffffffffffffffff
1527
1528# udp,tp_src=443
15290000 0058 00000000 00000397 dnl
1530000000000000ffffffffffff 000000000000ffffffffffff dnl
15310000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
153200000000 00 000000 0000000000000000ffffffffffffffff
1533
1534# icmp,icmp_type=5
15350000 0058 00000000 00000397 dnl
1536000000000000ffffffffffff 000000000000ffffffffffff dnl
15370000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0005 0000 dnl
153800000000 00 000000 0000000000000000ffffffffffffffff
1539
1540# icmp,icmp_code=8
15410000 0058 00000000 00000357 dnl
1542000000000000ffffffffffff 000000000000ffffffffffff dnl
15430000 00 00 0800 00 01 00000000ffffffff 00000000ffffffff 0000 0008 dnl
154400000000 00 000000 0000000000000000ffffffffffffffff
1545
1546# udp,tp_src=443
15470000 0058 00000000 00000397 dnl
1548000000000000ffffffffffff 000000000000ffffffffffff dnl
15490000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
155000000000 00 000000 0000000000000000ffffffffffffffff
1551
1552# udp,tp_dst=443
15530000 0058 00000000 00000357 dnl
1554000000000000ffffffffffff 000000000000ffffffffffff dnl
15550000 00 00 0800 00 11 00000000ffffffff 00000000ffffffff 0000 01bb dnl
155600000000 00 000000 0000000000000000ffffffffffffffff
1557
0d56eaf2 1558# sctp
410698cf
BP
15590000 0058 00000000 000003d7 dnl
1560000000000000ffffffffffff 000000000000ffffffffffff dnl
15610000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 0000 dnl
156200000000 00 000000 0000000000000000ffffffffffffffff
1563
0d56eaf2 1564# sctp,tp_src=443
410698cf
BP
15650000 0058 00000000 00000397 dnl
1566000000000000ffffffffffff 000000000000ffffffffffff dnl
15670000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
156800000000 00 000000 0000000000000000ffffffffffffffff
1569
0d56eaf2 1570# sctp,tp_dst=443
410698cf
BP
15710000 0058 00000000 00000357 dnl
1572000000000000ffffffffffff 000000000000ffffffffffff dnl
15730000 00 00 0800 00 84 00000000ffffffff 00000000ffffffff 0000 01bb dnl
157400000000 00 000000 0000000000000000ffffffffffffffff
1575
0d56eaf2 1576dnl Ignore tp_src if not TCP/UDP/SCTP:
410698cf
BP
1577# ip,nw_proto=21
1578# 11: 97 -> d7
1579# 60: 01 -> 00
1580# 61: bb -> 00
15810000 0058 00000000 00000397 dnl
1582000000000000ffffffffffff 000000000000ffffffffffff dnl
15830000 00 00 0800 00 15 00000000ffffffff 00000000ffffffff 01bb 0000 dnl
158400000000 00 000000 0000000000000000ffffffffffffffff
1585
0d56eaf2 1586dnl Ignore tp_dst if not TCP/UDP/SCTP:
410698cf
BP
1587# ip,nw_proto=22
1588# 11: 57 -> d7
1589# 62: 01 -> 00
1590# 63: bb -> 00
15910000 0058 00000000 00000357 dnl
1592000000000000ffffffffffff 000000000000ffffffffffff dnl
15930000 00 00 0800 00 16 00000000ffffffff 00000000ffffffff 0000 01bb dnl
159400000000 00 000000 0000000000000000ffffffffffffffff
1595
097d4939
JR
1596# mpls,mpls_label=284280
1597# 64: 12 -> 00
1598# 65: 34 -> 04
410698cf
BP
15990000 0058 00000000 000002f7 dnl
1600000000000000ffffffffffff 000000000000ffffffffffff dnl
16010000 00 00 8847 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
160212345678 00 000000 0000000000000000ffffffffffffffff
1603
097d4939
JR
1604# mplsm,mpls_tc=2
1605# 68: 5a -> 02
410698cf
BP
16060000 0058 00000000 000001f7 dnl
1607000000000000ffffffffffff 000000000000ffffffffffff dnl
16080000 00 00 8848 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
160900000000 5a 000000 0000000000000000ffffffffffffffff
1610
1611dnl mpls_label and mpls_tc must be ignored if dl_type is not MPLS:
1612# dl_type=0x1234
1613# 10: 00 -> 03
1614# 64: 12 -> 00
1615# 65: 34 -> 00
1616# 66: 56 -> 00
1617# 67: 78 -> 00
1618# 68: 5a -> 00
16190000 0058 00000000 000000f7 dnl
1620000000000000ffffffffffff 000000000000ffffffffffff dnl
16210000 00 00 1234 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
162212345678 5a 000000 0000000000000000ffffffffffffffff
1623
969fc56c
JS
1624dnl metadata match:
1625# metadata=0x1234567890abcdef
16260000 0058 00000000 000003ff dnl
1627000000000000ffffffffffff 000000000000ffffffffffff dnl
16280000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
162900000000 00 000000 1234567890abcdef0000000000000000
1630
1631dnl metadata match:
1632# metadata=0x5555555555555555/0x5555555555555555
410698cf
BP
16330000 0058 00000000 000003ff dnl
1634000000000000ffffffffffff 000000000000ffffffffffff dnl
16350000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
969fc56c
JS
163600000000 00 000000 5555555555555555aaaaaaaaaaaaaaaa
1637
1638dnl metadata match:
1639# metadata=0x1234000090ab0000/0xffff0000ffff0000
1640# 74: 56 -> 00
1641# 75: 78 -> 00
1642# 78: cd -> 00
1643# 79: ef -> 00
16440000 0058 00000000 000003ff dnl
1645000000000000ffffffffffff 000000000000ffffffffffff dnl
16460000 00 00 0000 00 00 00000000ffffffff 00000000ffffffff 0000 0000 dnl
164700000000 00 000000 1234567890abcdef0000ffff0000ffff
410698cf
BP
1648
1649])
1650sed '/^[[#&]]/d' < test-data > input.txt
1651sed -n 's/^# //p; /^$/p' < test-data > expout
1652sed -n 's/^& //p' < test-data > experr
1653AT_CAPTURE_FILE([input.txt])
1654AT_CAPTURE_FILE([expout])
1655AT_CAPTURE_FILE([experr])
1656AT_CHECK(
1657 [ovs-ofctl '-vPATTERN:console:%c|%p|%m' parse-ofp11-match < input.txt],
1658 [0], [expout], [experr])
1659AT_CLEANUP
1660
102ce766
EJ
1661AT_SETUP([ovs-ofctl parse-nx-match loose])
1662AT_KEYWORDS([nx-match])
1663AT_DATA([nx-match.txt], [dnl
1664NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
1665])
1666
1667AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
2e0525bc 1668nx_pull_match() returned error OFPBMC_BAD_FIELD
102ce766
EJ
1669])
1670
1671AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1672NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1673])
1674AT_CLEANUP
1675
b5ae8913
SH
1676AT_SETUP([ovs-ofctl parse-oxm])
1677AT_KEYWORDS([oxm])
1678AT_DATA([oxm.txt], [dnl
1679<any>
1680
1681# in port
1682OXM_OF_IN_PORT(00000000)
1683OXM_OF_IN_PORT(fffffffe)
1684
969fc56c
JS
1685# metadata
1686OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1687OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1688OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000)
1689OXM_OF_METADATA_W(1234567890abcdef/ffffffffffffffff)
fbcbc814 1690OXM_OF_METADATA_W(1234567890abcdef/0000000000000000)
969fc56c 1691
b5ae8913
SH
1692# eth dst
1693OXM_OF_ETH_DST(0002e30f80a4)
1694OXM_OF_ETH_DST_W(010000000000/010000000000)
1695OXM_OF_ETH_DST_W(000000000000/010000000000)
1696OXM_OF_ETH_DST_W(ffffffffffff/010000000000)
1697OXM_OF_ETH_DST_W(0002e30f80a4/ffffffffffff)
fbcbc814 1698OXM_OF_ETH_DST_W(0002e30f80a4/000000000000)
b5ae8913
SH
1699OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1700
1701# eth src
1702OXM_OF_ETH_SRC(020898456ddb)
1703
1704# eth type
1705OXM_OF_ETH_TYPE(0800)
1706OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
1707
95f61ba8
SH
1708# vlan
1709OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
1710OXM_OF_VLAN_VID(f009) # Bad Value
8069b0da 1711OXM_OF_VLAN_PCP(00) # Bad Pre-Requisite
95f61ba8
SH
1712OXM_OF_VLAN_VID(0000) # Packets without 802.1Q header or with VID=0
1713OXM_OF_VLAN_VID(1123) # Packets with VID=123, any PCP
1714OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
1715OXM_OF_VLAN_VID(0123) # Does not make sense (but supported anyway)
4b9f9232
SH
1716OXM_OF_VLAN_VID_W(0123/0123) # Does not make sense (but supported anyway)
1717OXM_OF_VLAN_VID_W(1123/0123) # Does not make sense (but supported anyway)
1718OXM_OF_VLAN_VID_W(0123/1123) # Does not make sense (but supported anyway)
8069b0da 1719OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01) #Bad Pre-Requisite
4b9f9232
SH
1720OXM_OF_VLAN_VID_W(1123/1fff) # Packets with VID=123, any PCP.
1721OXM_OF_VLAN_VID_W(1123/ffff) # Packets with VID=123, any PCP.
1722OXM_OF_VLAN_VID_W(1123/0000) # Packets with or without 802.1Q header
1723OXM_OF_VLAN_VID_W(1123/1f0f), # Packets with # VID=123 (masked)
1724OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01) # Packets with VID=123 (masked), any PCP.
1725OXM_OF_VLAN_VID_W(1000/1000) # Packets with any VID, any PCP
1726OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) # Packets with any VID, PCP=1.
95f61ba8 1727
1638b906
BP
1728# IP TOS
1729OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1730OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1731OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1732OXM_OF_IP_DSCP(f0)
1733
b5ae8913
SH
1734# IP ECN
1735OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1736OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
1737OXM_OF_IP_ECN(03)
1738
1739# IP protocol
1740OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01)
1741OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(05)
1742OXM_OF_IP_PROTO(05)
1743
1744# IP source
1745OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1746OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
fbcbc814
SH
1747OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1748OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
b5ae8913
SH
1749OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1750OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1751
1752# IP destination
1753OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1754OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
fbcbc814
SH
1755OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1756OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
b5ae8913
SH
1757OXM_OF_IPV4_DST(ac100014)
1758OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1759
1760# TCP source port
1761OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1762OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
fbcbc814
SH
1763OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1764OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
b5ae8913
SH
1765OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1766
1767# TCP destination port
1768OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1769OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
fbcbc814
SH
1770OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1771OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
b5ae8913
SH
1772OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1773
1774# UDP source port
1775OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1776OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
fbcbc814
SH
1777OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1778OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
b5ae8913
SH
1779OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1780
1781# UDP destination port
1782OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1783OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
fbcbc814
SH
1784OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1785OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
b5ae8913
SH
1786OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1787
0d56eaf2
JS
1788# SCTP source port
1789OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1790OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1791OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1792OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/0000)
1793OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1794
1795# SCTP destination port
1796OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1797OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1798OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1799OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/0000)
1800OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1801
b5ae8913
SH
1802# ICMP type
1803OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_TYPE(12)
1804OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_TYPE(10)
1805
1806# ICMP code
1807OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(01) OXM_OF_ICMPV4_CODE(12)
1808OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(00) OXM_OF_ICMPV4_CODE(10)
1809OXM_OF_ETH_TYPE(0800) OXM_OF_ICMPV4_CODE(10)
1810OXM_OF_ICMPV4_CODE(00)
1811
1812# ARP opcode
1813OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001)
1814OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(1111)
1815OXM_OF_ETH_TYPE(0000) OXM_OF_ARP_OP(0001)
1816OXM_OF_ARP_OP(0001)
1817OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_OP(0001) OXM_OF_ARP_OP(0001)
1818
1819# ARP source protocol address
1820OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1821OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
fbcbc814
SH
1822OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1823OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
b5ae8913
SH
1824OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1825OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
1826
1827# ARP destination protocol address
1828OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1829OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
fbcbc814
SH
1830OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1831OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
b5ae8913
SH
1832OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1833OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1834
1835# ARP source hardware address
1836OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA(0002e30f80a4)
1837OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1838OXM_OF_ARP_SHA(0002e30f80a4)
e878338b
SH
1839OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1840OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1841OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
b5ae8913
SH
1842
1843# ARP destination hardware address
1844OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1845OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1846OXM_OF_ARP_THA(0002e30f80a4)
e878338b
SH
1847OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1848OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1849OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
b5ae8913
SH
1850
1851# IPv6 source
1852OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1853OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1854OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
1855OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1856OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
b5ae8913
SH
1857OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1858
1859# IPv6 destination
1860OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1861OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1862OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
1863OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1864OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
b5ae8913
SH
1865OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1866
626186c3
SH
1867# IPv6 Flow Label
1868OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(1000000f)
1869OXM_OF_IPV6_FLABEL(0000000f)
1870OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
32455024
SH
1871OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1872OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1873OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
1874OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1875OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1876OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
626186c3 1877
b5ae8913
SH
1878# ND source hardware address
1879OXM_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)
1880OXM_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)
1881OXM_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)
1882OXM_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)
1883
1884# ND destination hardware address
1885OXM_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)
1886OXM_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)
1887OXM_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)
1888OXM_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)
1889
1890# Invalid field number.
189101020304(1111/2222)
1892])
e1cfc4e4
BP
1893AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm < oxm.txt],
1894 [0], [dnl
b5ae8913
SH
1895<any>
1896
1897# in port
1898OXM_OF_IN_PORT(00000000)
1899OXM_OF_IN_PORT(fffffffe)
1900
969fc56c
JS
1901# metadata
1902OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1903OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1904OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
1905OXM_OF_METADATA(1234567890abcdef)
fbcbc814 1906<any>
969fc56c 1907
b5ae8913
SH
1908# eth dst
1909OXM_OF_ETH_DST(0002e30f80a4)
1910OXM_OF_ETH_DST_W(010000000000/010000000000)
1911OXM_OF_ETH_DST_W(000000000000/010000000000)
1912OXM_OF_ETH_DST_W(010000000000/010000000000)
1913OXM_OF_ETH_DST(0002e30f80a4)
fbcbc814 1914<any>
b5ae8913
SH
1915OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1916
1917# eth src
1918OXM_OF_ETH_SRC(020898456ddb)
1919
1920# eth type
1921OXM_OF_ETH_TYPE(0800)
1922OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
1923
95f61ba8
SH
1924# vlan
1925nx_pull_match() returned error OFPBMC_DUP_FIELD
1926nx_pull_match() returned error OFPBMC_BAD_VALUE
8069b0da 1927nx_pull_match() returned error OFPBMC_BAD_PREREQ
95f61ba8
SH
1928OXM_OF_VLAN_VID(0000)
1929OXM_OF_VLAN_VID(1123)
1930OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1931OXM_OF_VLAN_VID(0123)
4b9f9232
SH
1932OXM_OF_VLAN_VID_W(0123/0123)
1933OXM_OF_VLAN_VID_W(0123/0123)
1934OXM_OF_VLAN_VID_W(0123/1123)
8069b0da 1935nx_pull_match() returned error OFPBMC_BAD_PREREQ
4b9f9232
SH
1936OXM_OF_VLAN_VID(1123)
1937OXM_OF_VLAN_VID(1123)
1938<any>
1939OXM_OF_VLAN_VID_W(1103/1f0f)
1940OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
1941OXM_OF_VLAN_VID_W(1000/1000)
1942OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
95f61ba8 1943
1638b906
BP
1944# IP TOS
1945nx_pull_match() returned error OFPBMC_BAD_VALUE
1946nx_pull_match() returned error OFPBMC_BAD_VALUE
1947OXM_OF_ETH_TYPE(0800), OXM_OF_IP_DSCP(3f)
1948nx_pull_match() returned error OFPBMC_BAD_PREREQ
1949
b5ae8913
SH
1950# IP ECN
1951OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
1952nx_pull_match() returned error OFPBMC_BAD_VALUE
1953nx_pull_match() returned error OFPBMC_BAD_PREREQ
1954
1955# IP protocol
1956OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01)
1957OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(05)
1958nx_pull_match() returned error OFPBMC_BAD_PREREQ
1959
1960# IP source
1961OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(ac100014)
1962OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC_W(c0a80000/ffff0000)
fbcbc814
SH
1963OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_SRC(c0a80000)
1964OXM_OF_ETH_TYPE(0800)
b5ae8913
SH
1965nx_pull_match() returned error OFPBMC_BAD_PREREQ
1966nx_pull_match() returned error OFPBMC_BAD_PREREQ
1967
1968# IP destination
1969OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(ac100014)
1970OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST_W(c0a80000/ffff0000)
fbcbc814
SH
1971OXM_OF_ETH_TYPE(0800), OXM_OF_IPV4_DST(c0a88012)
1972OXM_OF_ETH_TYPE(0800)
b5ae8913
SH
1973nx_pull_match() returned error OFPBMC_BAD_PREREQ
1974nx_pull_match() returned error OFPBMC_BAD_PREREQ
1975
1976# TCP source port
1977OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(4231)
1978OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC_W(5050/f0f0)
fbcbc814
SH
1979OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_SRC(5050)
1980OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
b5ae8913
SH
1981nx_pull_match() returned error OFPBMC_BAD_PREREQ
1982
1983# TCP destination port
1984OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(4231)
1985OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST_W(fde0/fff0)
fbcbc814
SH
1986OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_DST(fde0)
1987OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06)
b5ae8913
SH
1988nx_pull_match() returned error OFPBMC_BAD_PREREQ
1989
1990# UDP source port
1991OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(8732)
1992OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC_W(0132/01ff)
fbcbc814
SH
1993OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_SRC(0132)
1994OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
b5ae8913
SH
1995nx_pull_match() returned error OFPBMC_BAD_PREREQ
1996
1997# UDP destination port
1998OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(1782)
1999OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST_W(5005/f00f)
fbcbc814
SH
2000OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11), OXM_OF_UDP_DST(5005)
2001OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(11)
b5ae8913
SH
2002nx_pull_match() returned error OFPBMC_BAD_PREREQ
2003
0d56eaf2
JS
2004# SCTP source port
2005OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(8732)
2006OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC_W(0132/01ff)
2007OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_SRC(0132)
2008OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2009nx_pull_match() returned error OFPBMC_BAD_PREREQ
2010
2011# SCTP destination port
2012OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(1782)
2013OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST_W(5005/f00f)
2014OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84), OXM_OF_SCTP_DST(5005)
2015OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(84)
2016nx_pull_match() returned error OFPBMC_BAD_PREREQ
2017
b5ae8913
SH
2018# ICMP type
2019OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_TYPE(12)
2020nx_pull_match() returned error OFPBMC_BAD_PREREQ
2021
2022# ICMP code
2023OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(01), OXM_OF_ICMPV4_CODE(12)
2024nx_pull_match() returned error OFPBMC_BAD_PREREQ
2025nx_pull_match() returned error OFPBMC_BAD_PREREQ
2026nx_pull_match() returned error OFPBMC_BAD_PREREQ
2027
2028# ARP opcode
2029OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_OP(0001)
2030nx_pull_match() returned error OFPBMC_BAD_VALUE
2031nx_pull_match() returned error OFPBMC_BAD_PREREQ
2032nx_pull_match() returned error OFPBMC_BAD_PREREQ
2033nx_pull_match() returned error OFPBMC_DUP_FIELD
2034
2035# ARP source protocol address
2036OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(ac100014)
2037OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA_W(c0a81200/ffffff00)
fbcbc814
SH
2038OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SPA(c0a81234)
2039OXM_OF_ETH_TYPE(0806)
b5ae8913
SH
2040nx_pull_match() returned error OFPBMC_BAD_PREREQ
2041nx_pull_match() returned error OFPBMC_BAD_PREREQ
2042
2043# ARP destination protocol address
2044OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(ac100014)
2045OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA_W(c0a81200/ffffff00)
fbcbc814
SH
2046OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_TPA(c0a812fe)
2047OXM_OF_ETH_TYPE(0806)
b5ae8913
SH
2048nx_pull_match() returned error OFPBMC_BAD_PREREQ
2049nx_pull_match() returned error OFPBMC_BAD_PREREQ
2050
2051# ARP source hardware address
2052OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2053nx_pull_match() returned error OFPBMC_BAD_PREREQ
2054nx_pull_match() returned error OFPBMC_BAD_PREREQ
e878338b
SH
2055OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA(0002e30f80a4)
2056OXM_OF_ETH_TYPE(0806)
2057OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_SHA_W(000000000004/00000000000f)
b5ae8913
SH
2058
2059# ARP destination hardware address
2060OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2061nx_pull_match() returned error OFPBMC_BAD_PREREQ
2062nx_pull_match() returned error OFPBMC_BAD_PREREQ
e878338b
SH
2063OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA(0002e30f80a4)
2064OXM_OF_ETH_TYPE(0806)
2065OXM_OF_ETH_TYPE(0806), OXM_OF_ARP_THA_W(000000000004/00000000000f)
b5ae8913
SH
2066
2067# IPv6 source
2068OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
2069nx_pull_match() returned error OFPBMC_BAD_PREREQ
2070OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
2071OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_SRC(20010db83c4d00010000000000000000)
2072OXM_OF_ETH_TYPE(86dd)
b5ae8913
SH
2073nx_pull_match() returned error OFPBMC_BAD_PREREQ
2074
2075# IPv6 destination
2076OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
2077nx_pull_match() returned error OFPBMC_BAD_PREREQ
2078OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
fbcbc814
SH
2079OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_DST(20010db83c4d00010000000000000000)
2080OXM_OF_ETH_TYPE(86dd)
b5ae8913
SH
2081nx_pull_match() returned error OFPBMC_BAD_PREREQ
2082
626186c3
SH
2083# IPv6 Flow Label
2084nx_pull_match() returned error OFPBMC_BAD_VALUE
2085nx_pull_match() returned error OFPBMC_BAD_PREREQ
2086OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
32455024
SH
2087OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
2088OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2089OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
2090OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2091OXM_OF_ETH_TYPE(86dd), OXM_OF_IPV6_FLABEL(0000000f)
2092OXM_OF_ETH_TYPE(86dd)
626186c3 2093
b5ae8913
SH
2094# ND source hardware address
2095OXM_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)
2096nx_pull_match() returned error OFPBMC_BAD_PREREQ
2097nx_pull_match() returned error OFPBMC_BAD_PREREQ
2098nx_pull_match() returned error OFPBMC_BAD_PREREQ
2099
2100# ND destination hardware address
2101OXM_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)
2102nx_pull_match() returned error OFPBMC_BAD_PREREQ
2103nx_pull_match() returned error OFPBMC_BAD_PREREQ
2104nx_pull_match() returned error OFPBMC_BAD_PREREQ
2105
2106# Invalid field number.
2107nx_pull_match() returned error OFPBMC_BAD_FIELD
e1cfc4e4
BP
2108], [stderr])
2109
2110# Check that at least the first warning made it. (It's rate-limited
2111# so a variable number could show up, especially under valgrind etc.)
2112AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
2113nx_match|WARN|NXM/OXM entry OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000) has 1-bits in value for bits wildcarded by the mask. (Future versions of OVS may report this as an OpenFlow error.)
b5ae8913 2114])
e1cfc4e4
BP
2115
2116# Check that there wasn't any other stderr output.
2117AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
b5ae8913
SH
2118AT_CLEANUP
2119
2120AT_SETUP([ovs-ofctl parse-oxm loose])
2121AT_KEYWORDS([oxm])
2122AT_DATA([oxm.txt], [dnl
2123OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
2124])
2125
2126AT_CHECK([ovs-ofctl --strict parse-oxm < oxm.txt], [0], [dnl
2127nx_pull_match() returned error OFPBMC_BAD_FIELD
2128])
2129
2130AT_CHECK([ovs-ofctl parse-oxm < oxm.txt], [0], [dnl
2131OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
2132])
2133AT_CLEANUP
2134
df778240
BP
2135dnl Check all of the patterns mentioned in the "VLAN Matching" section
2136dnl in the DESIGN file at top level.
2137AT_SETUP([ovs-ofctl check-vlan])
2138AT_KEYWORDS([VLAN])
2139
2140dnl [1]
2141AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
2142 -> 0000/0000
2143NXM: <any> -> 0000/0000
476a0e9e 2144OXM: <any> -> 0000/0000,--
df778240
BP
2145OF1.0: 0000/1,00/1 -> 0000/0000
2146OF1.1: 0000/1,00/1 -> 0000/0000
2147])
2148
2149dnl [2]
2150AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
2151vlan_tci=0x0000 -> 0000/ffff
2152NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
476a0e9e 2153OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
df778240
BP
2154OF1.0: ffff/0,00/1 -> 0000/ffff
2155OF1.1: ffff/0,00/1 -> 0000/ffff
2156])
2157
2158dnl [3]
2159AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
2160dl_vlan=2748 -> 1abc/1fff
2161NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
476a0e9e 2162OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
df778240
BP
2163OF1.0: 0abc/0,00/1 -> 1abc/1fff
2164OF1.1: 0abc/0,00/1 -> 1abc/1fff
2165])
2166
2167dnl [4]
2168AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
2169dl_vlan_pcp=5 -> b000/f000
2170NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
476a0e9e 2171OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
df778240
BP
2172OF1.0: 0000/1,05/0 -> b000/f000
2173OF1.1: fffe/0,05/0 -> b000/f000
2174])
2175
2176dnl [5]
2177AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
2178dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
2179NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
476a0e9e 2180OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
df778240
BP
2181OF1.0: 0abc/0,05/0 -> babc/ffff
2182OF1.1: 0abc/0,05/0 -> babc/ffff
2183])
2184
2185dnl [6]
2186AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
2187vlan_tci=0x0000/0x0fff -> 0000/0fff
2188NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
476a0e9e 2189OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
df778240
BP
2190OF1.0: 0000/0,00/1 -> 1000/1fff
2191OF1.1: 0000/0,00/1 -> 1000/1fff
2192])
2193
2194dnl [7]
2195AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
2196vlan_tci=0x0000/0xf000 -> 0000/f000
2197NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
476a0e9e 2198OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
df778240
BP
2199OF1.0: ffff/0,00/1 -> 0000/ffff
2200OF1.1: ffff/0,00/1 -> 0000/ffff
2201])
2202
2203dnl [8]
2204AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
2205vlan_tci=0x0000/0xefff -> 0000/efff
2206NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
476a0e9e 2207OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
df778240
BP
2208OF1.0: 0000/0,00/0 -> 1000/ffff
2209OF1.1: 0000/0,00/0 -> 1000/ffff
2210])
2211
2212dnl [9]
2213AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
2214vlan_tci=0x1001/0x1001 -> 1001/1001
2215NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
476a0e9e 2216OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
df778240
BP
2217OF1.0: 0001/0,00/1 -> 1001/1fff
2218OF1.1: 0001/0,00/1 -> 1001/1fff
2219])
2220
2221dnl [10]
2222AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
2223vlan_tci=0x3000/0x3000 -> 3000/3000
2224NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
476a0e9e 2225OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
df778240
BP
2226OF1.0: 0000/1,01/0 -> 3000/f000
2227OF1.1: fffe/0,01/0 -> 3000/f000
2228])
2229AT_CHECK
2230AT_CLEANUP
2231
7525e578
JS
2232dnl Check that "-F openflow10" rejects a flow_mod with unsupported features,
2233dnl such as tunnels and metadata.
2234AT_SETUP([ovs-ofctl -F option and NXM features])
0fbc9f11 2235AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy tun_id=123,actions=drop],
e71bff1b 2236 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
0fbc9f11 2237])
7525e578 2238AT_CHECK([ovs-ofctl -F openflow10 add-flow dummy metadata=123,actions=drop],
db0b6c29 2239 [1], [], [ovs-ofctl: none of the usable flow formats (NXM,OXM,OpenFlow11) is among the allowed flow formats (OpenFlow10)
7525e578 2240])
0fbc9f11
BP
2241AT_CLEANUP
2242
2243dnl Check that "-F nxm" really forces add-flow to use the NXM flow format.
2244dnl (If it doesn't, then either the tun_id won't show up at all, or it will
2245dnl additionally show up as the top 32 bits of the cookie.) This checks
2246dnl for regression against bug #4566.
2247AT_SETUP([ovs-ofctl -F option with flow_mods])
023e1e0a 2248OVS_VSWITCHD_START
0fbc9f11 2249AT_CHECK([ovs-ofctl -F nxm add-flow br0 tun_id=0x12345678,actions=drop])
ef0ce8ae 2250AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [dnl
0fbc9f11 2251NXST_FLOW reply:
ef0ce8ae 2252 tun_id=0x12345678 actions=drop
0fbc9f11 2253])
023e1e0a 2254OVS_VSWITCHD_STOP
0fbc9f11 2255AT_CLEANUP
f9cbfbe4
BP
2256
2257dnl Check that "-F openflow10" is really honored on dump-flows.
2258dnl (If it isn't, then dump-flows will show the register match.)
2259AT_SETUP([ovs-ofctl dump-flows honors -F option])
023e1e0a 2260OVS_VSWITCHD_START
f9cbfbe4 2261AT_CHECK([ovs-ofctl add-flow br0 reg0=0x12345,actions=drop])
ef0ce8ae 2262AT_CHECK([ovs-ofctl -F openflow10 dump-flows br0 | ofctl_strip], [0], [dnl
f9cbfbe4 2263OFPST_FLOW reply:
ef0ce8ae 2264 actions=drop
f9cbfbe4 2265])
023e1e0a 2266OVS_VSWITCHD_STOP
f9cbfbe4
BP
2267AT_CLEANUP
2268
2269dnl Check that "-F openflow10" fails on dump-flows if the requested match
2270dnl can't be represented in OpenFlow 1.0.
2271AT_SETUP([ovs-ofctl dump-flows rejects bad -F option])
023e1e0a 2272OVS_VSWITCHD_START
f9cbfbe4 2273AT_CHECK([ovs-ofctl -F openflow10 dump-flows unix:br0.mgmt reg0=0xabcdef], [1], [],
e71bff1b 2274 [ovs-ofctl: none of the usable flow formats (NXM,OXM) is among the allowed flow formats (OpenFlow10)
f9cbfbe4 2275])
023e1e0a 2276OVS_VSWITCHD_STOP
f9cbfbe4 2277AT_CLEANUP
01b389b1
BP
2278
2279dnl Check that add-flow reports non-normalized flows (feature #5029).
2280AT_SETUP([ovs-ofctl add-flow reports non-normalized flows])
023e1e0a 2281OVS_VSWITCHD_START
01b389b1
BP
2282AT_CHECK([ovs-ofctl TESTABLE_LOG add-flow br0 nw_src=1.2.3.4,actions=5],
2283 [0], [], [dnl
2284ofp_util|INFO|normalization changed ofp_match, details:
2285ofp_util|INFO| pre: nw_src=1.2.3.4
2286ofp_util|INFO|post: @&t@
2287])
023e1e0a 2288OVS_VSWITCHD_STOP
01b389b1 2289AT_CLEANUP
410698cf 2290
bdcc5925
BP
2291dnl Check that --sort and --rsort works with dump-flows
2292dnl Default field is 'priority'. Flow entries are displayed based
2293dnl on field to sort.
2294AT_SETUP([ovs-ofctl dump-flows with sorting])
2295OVS_VSWITCHD_START
2296AT_KEYWORDS([sort])
2297AT_DATA([allflows.txt], [[
2298priority=4,in_port=23213 actions=output:42
2299priority=5,in_port=1029 actions=output:43
2300priority=7,in_port=1029 actions=output:43
2301priority=3,in_port=1028 actions=output:44
2302priority=1,in_port=1026 actions=output:45
2303priority=6,in_port=1027 actions=output:64
2304priority=2,in_port=1025 actions=output:47
2305priority=8,tcp,tp_src=5 actions=drop
2306priority=9,tcp,tp_src=6 actions=drop
2307]])
2308
2309AT_CHECK([ovs-ofctl add-flows br0 allflows.txt
2310], [0], [ignore])
2311AT_CHECK([ovs-ofctl --sort dump-flows br0 | ofctl_strip], [0], [dnl
2312 priority=1,in_port=1026 actions=output:45
2313 priority=2,in_port=1025 actions=output:47
2314 priority=3,in_port=1028 actions=output:44
2315 priority=4,in_port=23213 actions=output:42
2316 priority=5,in_port=1029 actions=output:43
2317 priority=6,in_port=1027 actions=output:64
2318 priority=7,in_port=1029 actions=output:43
2319 priority=8,tcp,tp_src=5 actions=drop
2320 priority=9,tcp,tp_src=6 actions=drop
2321])
2322AT_CHECK([ovs-ofctl --rsort dump-flows br0 | ofctl_strip], [0], [dnl
2323 priority=9,tcp,tp_src=6 actions=drop
2324 priority=8,tcp,tp_src=5 actions=drop
2325 priority=7,in_port=1029 actions=output:43
2326 priority=6,in_port=1027 actions=output:64
2327 priority=5,in_port=1029 actions=output:43
2328 priority=4,in_port=23213 actions=output:42
2329 priority=3,in_port=1028 actions=output:44
2330 priority=2,in_port=1025 actions=output:47
2331 priority=1,in_port=1026 actions=output:45
2332])
2333AT_CHECK([ovs-ofctl --sort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2334 priority=2,in_port=1025 actions=output:47
2335 priority=1,in_port=1026 actions=output:45
2336 priority=6,in_port=1027 actions=output:64
2337 priority=3,in_port=1028 actions=output:44
2338 priority=7,in_port=1029 actions=output:43
2339 priority=5,in_port=1029 actions=output:43
2340 priority=4,in_port=23213 actions=output:42
2341 priority=9,tcp,tp_src=6 actions=drop
2342 priority=8,tcp,tp_src=5 actions=drop
2343])
2344AT_CHECK([ovs-ofctl --rsort=in_port dump-flows br0 | ofctl_strip], [0], [dnl
2345 priority=4,in_port=23213 actions=output:42
2346 priority=7,in_port=1029 actions=output:43
2347 priority=5,in_port=1029 actions=output:43
2348 priority=3,in_port=1028 actions=output:44
2349 priority=6,in_port=1027 actions=output:64
2350 priority=1,in_port=1026 actions=output:45
2351 priority=2,in_port=1025 actions=output:47
2352 priority=9,tcp,tp_src=6 actions=drop
2353 priority=8,tcp,tp_src=5 actions=drop
2354])
2355AT_CHECK([ovs-ofctl --sort=tcp_src dump-flows br0 | ofctl_strip], [0], [dnl
2356 priority=8,tcp,tp_src=5 actions=drop
2357 priority=9,tcp,tp_src=6 actions=drop
2358 priority=7,in_port=1029 actions=output:43
2359 priority=6,in_port=1027 actions=output:64
2360 priority=5,in_port=1029 actions=output:43
2361 priority=4,in_port=23213 actions=output:42
2362 priority=3,in_port=1028 actions=output:44
2363 priority=2,in_port=1025 actions=output:47
2364 priority=1,in_port=1026 actions=output:45
2365])
2366AT_CHECK(
2367 [ovs-ofctl --sort=in_port --sort=tcp_src dump-flows br0 | ofctl_strip], [0],
2368 [ priority=2,in_port=1025 actions=output:47
2369 priority=1,in_port=1026 actions=output:45
2370 priority=6,in_port=1027 actions=output:64
2371 priority=3,in_port=1028 actions=output:44
2372 priority=7,in_port=1029 actions=output:43
2373 priority=5,in_port=1029 actions=output:43
2374 priority=4,in_port=23213 actions=output:42
2375 priority=8,tcp,tp_src=5 actions=drop
2376 priority=9,tcp,tp_src=6 actions=drop
2377])
2378OVS_VSWITCHD_STOP
2379AT_CLEANUP
296ed880
BP
2380
2381AT_SETUP([ovs-ofctl diff-flows])
2382OVS_VSWITCHD_START
2383
296ed880
BP
2384# Add tons of flows to br0.
2385for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
2386AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
2387
2388# Dump them and compare against what we expect by hand, then with diff-flows.
2389for i in `seq 0 1023`; do echo " dl_vlan=$i actions=drop"; done | sort > expout
2390AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/NXST_FLOW/d' | sort],
2391 [0], [expout])
2392AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt])
2393
2394# Remove even-numbered flows, compare again.
2395for i in `seq 0 1023 2`; do echo "dl_vlan=$i"; done > del-flows.txt
2396AT_CHECK([ovs-ofctl del-flows br0 - < del-flows.txt])
2397for i in `seq 0 1023 2`; do echo "+dl_vlan=$i actions=drop"; done | sort > expout
2398AT_CHECK([ovs-ofctl diff-flows br0 add-flows.txt | sort], [0], [expout])
2399for i in `seq 0 1023 2`; do echo "-dl_vlan=$i actions=drop"; done | sort > expout
2400AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
2401
2402OVS_VSWITCHD_STOP
2403AT_CLEANUP
98f7f427
BP
2404
2405dnl ofpacts that differ bytewise don't necessarily differ when
2406dnl converted to another representation, such as OpenFlow 1.0
2407dnl or to a string. "resubmit(,1)" is an example of an action
2408dnl of this type: "ofpact_resubmit"s can differ in their "compat"
2409dnl values even though this doesn't affect the string format.
2410dnl
2411dnl This test checks that "ovs-ofctl diff-flows" doesn't report
2412dnl false ofpacts differences.
2413AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
2414OVS_VSWITCHD_START
2415AT_DATA([flows.txt], [actions=resubmit(,1)
2416])
2417AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2418AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
2419AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
2420AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
2421-dl_vlan=9 idle_timeout=60 actions=output:1
2422])
2423AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
2424AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
2425+dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
2426])
2427OVS_VSWITCHD_STOP
2428AT_CLEANUP
37923ac7
BP
2429
2430AT_SETUP([ovs-ofctl -F and -O interaction])
2431AT_CHECK([ovs-ofctl -F oxm -O openflow10], [1], [],
2432 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2433])
2434AT_CHECK([ovs-ofctl -F oxm -O openflow11], [1], [],
2435 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow11) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2436])
2437AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow11], [1], [],
2438 [ovs-ofctl: None of the enabled OpenFlow versions (OpenFlow10, OpenFlow11) supports any of the enabled flow formats (OXM). (Use -O to enable additional OpenFlow versions or -F to enable additional flow formats.)
2439])
2440AT_CHECK([ovs-ofctl -F oxm -O openflow10,openflow12], [1], [],
2441 [ovs-ofctl: missing command name; use --help for help
2442])
2443AT_CHECK([ovs-ofctl -F oxm -O openflow12], [1], [],
2444 [ovs-ofctl: missing command name; use --help for help
2445])
2446AT_CHECK([ovs-ofctl -F oxm -O openflow13], [1], [],
2447 [ovs-ofctl: missing command name; use --help for help
2448])
2449AT_CLEANUP
1ac0e975
BP
2450
2451AT_SETUP([ovs-ofctl ofp-parse])
2452# Test the echo request/reply messages (0 payload).
2453AT_CHECK([printf '\1\2\0\10\0\0\0\0\1\3\0\10\0\0\0\0' > binary_ofp_msg])
2454AT_CHECK([ovs-ofctl ofp-parse binary_ofp_msg], [0], [dnl
2455OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload
2456OFPT_ECHO_REPLY (xid=0x0): 0 bytes of payload
2457])
2458
2459# Test the hello (xid:1 3-byte payload).
2460AT_CHECK([printf '\1\0\0\13\0\0\0\1\101\102\103' > binary_ofp_msg])
2461AT_CHECK([ovs-ofctl ofp-parse - < binary_ofp_msg], [0], [dnl
2462OFPT_HELLO (xid=0x1):
2463 version bitmap: 0x01
2464 unknown data in hello:
246500000000 01 00 00 0b 00 00 00 01-41 42 43 |........ABC |
2466])
2467AT_CLEANUP
dc235f7f
JR
2468
2469AT_SETUP([tcp flags - filtering])
2470OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 \
2471 -- add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
2472AT_DATA([flows.txt], [dnl
61bf6666
JR
2473 in_port=1,tcp,tp_dst=80,tcp_flags=+syn-rst-ack-fin,action=2 # Allow outbound web traffic bare-SYN
2474 in_port=1,tcp,tp_dst=80,tcp_flags=+ack,action=2 # Allow outbound web traffic with ACK bit
2475 in_port=1,tcp,tp_dst=80,tcp_flags=+rst,action=2 # Allow outbound web traffic with RST bit
2476 in_port=2,tcp,tp_src=80,tcp_flags=+ack,action=1 # Allow inbound web traffic with ACK bit
2477 in_port=2,tcp,tp_src=80,tcp_flags=+rst,action=1 # Allow inbound web traffic with RST bit
dc235f7f
JR
2478 priority=0,in_port=1,action=drop # Default drop outbound
2479 priority=0,in_port=2,action=drop # Default drop inbound
2480])
2481
2482AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
2483
61bf6666
JR
2484AT_CHECK([ovs-ofctl add-flow br0 "tcp,tcp_flags=+ack-ack,action="], [1], [],
2485 [ovs-ofctl: ack: Each TCP flag can be specified only once
2486])
2487
dc235f7f
JR
2488AT_CHECK([ovs-appctl dpif/show | tail -n +5], [0], [dnl
2489 p1 1/1: (dummy)
2490 p2 2/2: (dummy)
2491])
2492
61bf6666 2493dnl Outbound web traffic with bare-SYN
dc235f7f
JR
2494AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x002)'], [0], [stdout])
2495AT_CHECK([tail -1 stdout], [0],
2496 [Datapath actions: 2
2497])
2498
2499dnl Outbopund web traffic with ACK bit
2500AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x110)'], [0], [stdout])
2501AT_CHECK([tail -1 stdout], [0],
2502 [Datapath actions: 2
2503])
2504
2505dnl Outbound web traffic with RST bit
2506AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=80),tcp_flags(0x104)'], [0], [stdout])
2507AT_CHECK([tail -1 stdout], [0],
2508 [Datapath actions: 2
2509])
2510
2511dnl Inbound web traffic with ACK bit
2512AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0x010)'], [0], [stdout])
2513AT_CHECK([tail -1 stdout], [0],
2514 [Datapath actions: 1
2515])
2516
2517dnl Inbound web traffic with RST bit
2518AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0x014)'], [0], [stdout])
2519AT_CHECK([tail -1 stdout], [0],
2520 [Datapath actions: 1
2521])
2522
2523dnl Inbound web traffic with SYN bit without ACK or RST bits
2524AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8),tcp_flags(0xfeb)'], [0], [stdout])
2525AT_CHECK([tail -1 stdout], [0],
2526 [Datapath actions: drop
2527])
2528
2529OVS_VSWITCHD_STOP
2530AT_CLEANUP