]> git.proxmox.com Git - mirror_ovs.git/blame - tests/ofproto-dpif.at
dpif: Minimize memory copy for revalidation.
[mirror_ovs.git] / tests / ofproto-dpif.at
CommitLineData
29901626
BP
1AT_BANNER([ofproto-dpif])
2
27f57736
JS
3AT_SETUP([ofproto-dpif - revalidator/wait])
4OVS_VSWITCHD_START
5AT_CHECK([ovs-appctl revalidator/wait])
6OVS_VSWITCHD_STOP
7AT_CLEANUP
8
adcf00ba
AZ
9AT_SETUP([ofproto-dpif, active-backup bonding])
10# Create br0 with interfaces p1, p2 and p7, creating bond0 with p1 and p2
11# and br1 with interfaces p3, p4 and p8.
12# toggle p1,p2 of bond0 up and down to test bonding in active-backup mode.
13OVS_VSWITCHD_START(
14 [add-bond br0 bond0 p1 p2 bond_mode=active-backup --\
15 set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1 -- \
16 set interface p2 type=dummy options:pstream=punix:$OVS_RUNDIR/p2.sock ofport_request=2 -- \
17 add-port br0 p7 -- set interface p7 ofport_request=7 type=dummy -- \
18 add-br br1 -- \
19 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
20 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
21 fail-mode=secure -- \
22 add-port br1 p3 -- set interface p3 type=dummy options:stream=unix:$OVS_RUNDIR/p1.sock ofport_request=3 -- \
23 add-port br1 p4 -- set interface p4 type=dummy options:stream=unix:$OVS_RUNDIR/p2.sock ofport_request=4 -- \
24 add-port br1 p8 -- set interface p8 ofport_request=8 type=dummy --])
55466d72 25WAIT_FOR_DUMMY_PORTS([p3], [p4])
623540e4 26AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
adcf00ba
AZ
27
28AT_CHECK([ovs-ofctl add-flow br0 action=normal])
29AT_CHECK([ovs-ofctl add-flow br1 action=normal])
30ovs-appctl netdev-dummy/set-admin-state up
31ovs-appctl time/warp 100
32ovs-appctl netdev-dummy/set-admin-state p2 down
33ovs-appctl time/stop
34ovs-appctl time/warp 100
35AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(7),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
36AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(7),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.3,dst=10.0.0.4,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
37ovs-appctl time/warp 100
38ovs-appctl netdev-dummy/set-admin-state p2 up
39ovs-appctl netdev-dummy/set-admin-state p1 down
40ovs-appctl time/warp 100
41AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(7),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0d),eth_type(0x0800),ipv4(src=10.0.0.5,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
42AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(7),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0e),eth_type(0x0800),ipv4(src=10.0.0.6,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
bdba1947 43ovs-appctl time/warp 200 100
53555f51 44sleep 1
623540e4 45AT_CHECK([cat ovs-vswitchd.log | grep 'in_port=[[348]]' | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
46recirc_id=0,ip,in_port=3,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions: <del>
47recirc_id=0,ip,in_port=3,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions: <del>
48recirc_id=0,ip,in_port=4,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0d,nw_frag=no, actions: <del>
49recirc_id=0,ip,in_port=4,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0e,nw_frag=no, actions: <del>
50recirc_id=0,rarp,in_port=4,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=ff:ff:ff:ff:ff:ff, actions: <del>
51recirc_id=0,rarp,in_port=4,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=ff:ff:ff:ff:ff:ff, actions: <del>
adcf00ba
AZ
52])
53OVS_VSWITCHD_STOP
54AT_CLEANUP
55
56AT_SETUP([ofproto-dpif, balance-slb bonding])
57# Create br0 with interfaces bond0(p1, p2, p3) and p7,
58# and br1 with interfaces p4, p5, p6 and p8.
59# p1 <-> p4, p2 <-> p5, p3 <-> p6
60# Send some traffic, make sure the traffic are spread based on source mac.
61OVS_VSWITCHD_START(
62 [add-bond br0 bond0 p1 p2 p3 bond_mode=balance-slb --\
63 set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1 -- \
64 set interface p2 type=dummy options:pstream=punix:$OVS_RUNDIR/p2.sock ofport_request=2 -- \
65 set interface p3 type=dummy options:pstream=punix:$OVS_RUNDIR/p3.sock ofport_request=3 -- \
66 add-port br0 p7 -- set interface p7 ofport_request=7 type=dummy -- \
67 add-br br1 -- \
68 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
69 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
70 fail-mode=secure -- \
71 add-port br1 p4 -- set interface p4 type=dummy options:stream=unix:$OVS_RUNDIR/p1.sock ofport_request=4 -- \
72 add-port br1 p5 -- set interface p5 type=dummy options:stream=unix:$OVS_RUNDIR/p2.sock ofport_request=5 -- \
73 add-port br1 p6 -- set interface p6 type=dummy options:stream=unix:$OVS_RUNDIR/p3.sock ofport_request=6 -- \
74 add-port br1 p8 -- set interface p8 ofport_request=8 type=dummy --])
55466d72 75WAIT_FOR_DUMMY_PORTS([p4], [p5], [p6])
adcf00ba
AZ
76AT_CHECK([ovs-ofctl add-flow br0 action=normal])
77AT_CHECK([ovs-ofctl add-flow br1 action=normal])
78AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
79])
adcf00ba
AZ
80ovs-appctl time/stop
81ovs-appctl time/warp 100
82(
83for i in `seq 0 100 |xargs printf '%02x\n'`;
84 do
85 pkt="in_port(7),eth(src=50:54:00:00:00:$i,dst=50:54:00:00:01:00),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)"
86 AT_CHECK([ovs-appctl netdev-dummy/receive p7 $pkt])
87 done
88)
89ovs-appctl time/warp 100
90AT_CHECK([ovs-appctl dpif/dump-flows br1 > br1_flows.txt])
91# Make sure there is resonable distribution to all three ports.
92# We don't want to make this check precise, in case hash function changes.
93AT_CHECK([test `egrep 'in_port\(4\)' br1_flows.txt |wc -l` -gt 3])
94AT_CHECK([test `egrep 'in_port\(5\)' br1_flows.txt |wc -l` -gt 3])
95AT_CHECK([test `egrep 'in_port\(6\)' br1_flows.txt |wc -l` -gt 3])
96OVS_VSWITCHD_STOP
97AT_CLEANUP
98
99AT_SETUP([ofproto-dpif, balance-tcp bonding])
100# Create br0 with interfaces bond0(p1, p2, p3) and p7,
101# and br1 with interfaces bond1(p4, p5, p6) and p8.
102# bond0 <-> bond1
103# Send some traffic, make sure the traffic are spread based on L4 headers.
104OVS_VSWITCHD_START(
105 [add-bond br0 bond0 p1 p2 p3 bond_mode=balance-tcp lacp=active \
106 other-config:lacp-time=fast other-config:bond-rebalance-interval=0 --\
107 set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1 -- \
108 set interface p2 type=dummy options:pstream=punix:$OVS_RUNDIR/p2.sock ofport_request=2 -- \
109 set interface p3 type=dummy options:pstream=punix:$OVS_RUNDIR/p3.sock ofport_request=3 -- \
110 add-port br0 p7 -- set interface p7 ofport_request=7 type=dummy -- \
111 add-br br1 -- \
112 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
113 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
114 fail-mode=secure -- \
115 add-bond br1 bond1 p4 p5 p6 bond_mode=balance-tcp lacp=active \
116 other-config:lacp-time=fast other-config:bond-rebalance-interval=0 --\
117 set interface p4 type=dummy options:stream=unix:$OVS_RUNDIR/p1.sock ofport_request=4 -- \
118 set interface p5 type=dummy options:stream=unix:$OVS_RUNDIR/p2.sock ofport_request=5 -- \
119 set interface p6 type=dummy options:stream=unix:$OVS_RUNDIR/p3.sock ofport_request=6 -- \
120 add-port br1 p8 -- set interface p8 ofport_request=8 type=dummy --])
121AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
122])
123AT_CHECK([ovs-ofctl add-flow br0 action=normal])
124AT_CHECK([ovs-ofctl add-flow br1 action=normal])
125AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [megaflows disabled
126], [])
48105e85 127OVS_WAIT_WHILE([ovs-appctl bond/show | grep "may_enable: false"])
adcf00ba
AZ
128ovs-appctl time/stop
129ovs-appctl time/warp 100
130ovs-appctl lacp/show > lacp.txt
131ovs-appctl bond/show > bond.txt
132(
25d6a6a8 133for i in `seq 0 255` ;
adcf00ba 134 do
ea2735d3 135 pkt="in_port(7),eth(src=50:54:00:00:00:05,dst=50:54:00:00:01:00),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=$i),tcp_flags(ack)"
adcf00ba
AZ
136 AT_CHECK([ovs-appctl netdev-dummy/receive p7 $pkt])
137 done
138)
bdba1947 139ovs-appctl time/warp 300 100
adcf00ba
AZ
140AT_CHECK([ovs-appctl dpif/dump-flows br0 |grep tcp > br0_flows.txt])
141AT_CHECK([ovs-appctl dpif/dump-flows br1 |grep tcp > br1_flows.txt])
142# Make sure there is resonable distribution to all three ports.
143# We don't want to make this check precise, in case hash function changes.
fd184489
AZ
144AT_CHECK([test `grep in_port.4 br1_flows.txt |wc -l` -gt 24])
145AT_CHECK([test `grep in_port.5 br1_flows.txt |wc -l` -gt 24])
146AT_CHECK([test `grep in_port.6 br1_flows.txt |wc -l` -gt 24])
adcf00ba
AZ
147OVS_VSWITCHD_STOP()
148AT_CLEANUP
149
29901626 150AT_SETUP([ofproto-dpif - resubmit])
023e1e0a 151OVS_VSWITCHD_START
f7b8e494
JP
152ADD_OF_PORTS([br0], [1], [10], [11], [12], [13], [14], [15],
153 [16], [17], [18], [19], [20], [21])
29901626
BP
154AT_DATA([flows.txt], [dnl
155table=0 in_port=1 priority=1000 icmp actions=output(10),resubmit(2),output(19),resubmit(3),output(21)
156table=0 in_port=2 priority=1500 icmp actions=output(11),resubmit(,1),output(16),resubmit(2,1),output(18)
157table=0 in_port=3 priority=2000 icmp actions=output(20)
158table=1 in_port=1 priority=1000 icmp actions=output(12),resubmit(4,1),output(13),resubmit(3),output(15)
159table=1 in_port=2 priority=1500 icmp actions=output(17),resubmit(,2)
160table=1 in_port=3 priority=1500 icmp actions=output(14),resubmit(,2)
161])
162AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
31a19d69 163AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
29901626
BP
164AT_CHECK([tail -1 stdout], [0],
165 [Datapath actions: 10,11,12,13,14,15,16,17,18,19,20,21
166])
023e1e0a 167OVS_VSWITCHD_STOP
29901626 168AT_CLEANUP
58a89177 169
55599423
JR
170AT_SETUP([ofproto-dpif - goto table])
171OVS_VSWITCHD_START
172ADD_OF_PORTS([br0], [1], [10], [11])
173echo "table=0 in_port=1 actions=output(10),goto_table(1)" > flows.txt
4468099e
EJ
174for i in `seq 1 63`; do echo "table=$i actions=goto_table($(($i+1)))"; done >> flows.txt
175echo "table=64 actions=output(11)" >> flows.txt
55599423
JR
176AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
177AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
178AT_CHECK([tail -1 stdout], [0],
179 [Datapath actions: 10,11
180])
181OVS_VSWITCHD_STOP
182AT_CLEANUP
183
7fdb60a7
SH
184AT_SETUP([ofproto-dpif - write actions])
185OVS_VSWITCHD_START
186ADD_OF_PORTS([br0], [1], [10], [11], [12], [13])
187AT_DATA([flows.txt], [dnl
188table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip_src,output(12)),goto_table(1)
189table=1 ip actions=write_actions(output(13)),goto_table(2)
190table=2 ip actions=set_field:192.168.3.91->ip_src,output(11)
191])
192AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
193AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
ce58df5b 194AT_CHECK([tail -2 stdout], [0],
16194afd 195 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
d23df9a8 196Datapath actions: 10,set(ipv4(src=192.168.3.91)),11,set(ipv4(src=192.168.3.90)),13
7fdb60a7
SH
197])
198OVS_VSWITCHD_STOP
199AT_CLEANUP
200
201AT_SETUP([ofproto-dpif - clear actions])
202OVS_VSWITCHD_START
203ADD_OF_PORTS([br0], [1], [10], [11], [12])
204AT_DATA([flows.txt], [dnl
205table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip_src,output(12)),goto_table(1)
ce58df5b 206table=1 tcp actions=set_field:91->tp_src,output(11),clear_actions
7fdb60a7
SH
207])
208AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
ce58df5b
JR
209AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=6,nw_tos=0,nw_ttl=128,tp_src=8,tp_dst=9'], [0], [stdout])
210AT_CHECK([tail -2 stdout], [0],
16194afd 211 [Megaflow: recirc_id=0,tcp,in_port=1,nw_frag=no,tp_src=8
d23df9a8 212Datapath actions: 10,set(tcp(src=91)),11
7fdb60a7
SH
213])
214OVS_VSWITCHD_STOP
215AT_CLEANUP
216
5a070238
BP
217AT_SETUP([ofproto-dpif - group chaining not supported])
218OVS_VSWITCHD_START
219ADD_OF_PORTS([br0], [1], [10], [11])
220AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,set_field:192.168.3.90->ip_src,group:123,bucket=output:11'],
221 [1], [], [stderr])
222AT_CHECK([STRIP_XIDS stderr | sed 1q], [0],
223 [OFPT_ERROR (OF1.2): OFPGMFC_CHAINING_UNSUPPORTED
224])
225OVS_VSWITCHD_STOP
226AT_CLEANUP
227
f4fb341b
SH
228AT_SETUP([ofproto-dpif - all group in action list])
229OVS_VSWITCHD_START
230ADD_OF_PORTS([br0], [1], [10], [11])
231AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,set_field:192.168.3.90->ip_src,bucket=output:11'])
232AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
233AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
d23df9a8
JR
234# Must match on the source address to be able to restore it's value for
235# the second bucket
ce58df5b 236AT_CHECK([tail -2 stdout], [0],
16194afd 237 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
d23df9a8 238Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
f4fb341b
SH
239])
240OVS_VSWITCHD_STOP
241AT_CLEANUP
242
243AT_SETUP([ofproto-dpif - indirect group in action list])
244OVS_VSWITCHD_START
245ADD_OF_PORTS([br0], [1], [10])
246AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10])
247AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
248AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
249AT_CHECK([tail -1 stdout], [0],
250 [Datapath actions: 10
251])
252OVS_VSWITCHD_STOP
253AT_CLEANUP
254
255AT_SETUP([ofproto-dpif - all group in action set])
256OVS_VSWITCHD_START
257ADD_OF_PORTS([br0], [1], [10], [11])
258AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,set_field:192.168.3.90->ip_src,bucket=output:11'])
259AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
260AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
d23df9a8
JR
261# Must match on the source address to be able to restore it's value for
262# the third bucket
ce58df5b 263AT_CHECK([tail -2 stdout], [0],
16194afd 264 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
d23df9a8 265Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
f4fb341b
SH
266])
267OVS_VSWITCHD_STOP
268AT_CLEANUP
269
270AT_SETUP([ofproto-dpif - indirect group in action set])
271OVS_VSWITCHD_START
272ADD_OF_PORTS([br0], [1], [10])
273AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10])
274AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
275AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
276AT_CHECK([tail -1 stdout], [0],
277 [Datapath actions: 10
278])
279OVS_VSWITCHD_STOP
280AT_CLEANUP
281
fe7e5749
SH
282AT_SETUP([ofproto-dpif - select group])
283OVS_VSWITCHD_START
284ADD_OF_PORTS([br0], [1], [10], [11])
285AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,bucket=output:11'])
286AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
7cb279c2
SH
287
288# Try a bunch of different flows and make sure that they get distributed
289# at least somewhat.
290for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
291 AT_CHECK([ovs-appctl ofproto/trace br0 "in_port=1,dl_src=50:54:00:00:00:07,dl_dst=50:54:00:00:00:0$d,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0"], [0], [stdout])
292 tail -1 stdout >> results
293done
294sort results | uniq -c
295AT_CHECK([sort results | uniq], [0],
fe7e5749 296 [Datapath actions: 10
7cb279c2 297Datapath actions: 11
fe7e5749
SH
298])
299OVS_VSWITCHD_STOP
300AT_CLEANUP
301
302AT_SETUP([ofproto-dpif - select group with watch port])
303OVS_VSWITCHD_START
304ADD_OF_PORTS([br0], [1], [10], [11])
305AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=watch_port:10,output:10,bucket=output:11'])
306AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
307AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:07,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
308AT_CHECK([tail -1 stdout], [0],
309 [Datapath actions: 11
310])
311OVS_VSWITCHD_STOP
312AT_CLEANUP
313
7cb279c2
SH
314AT_SETUP([ofproto-dpif - select group with weight])
315OVS_VSWITCHD_START
316ADD_OF_PORTS([br0], [1], [10], [11], [12])
125bf01d 317AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,bucket=output:11,weight=2000,bucket=output:12,weight=0'])
7cb279c2
SH
318AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
319AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:07,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
320AT_CHECK([tail -1 stdout], [0],
321 [Datapath actions: 11
322])
323OVS_VSWITCHD_STOP
324AT_CLEANUP
325
dd8cd4b4
SH
326AT_SETUP([ofproto-dpif - fast failover group])
327OVS_VSWITCHD_START
328ADD_OF_PORTS([br0], [1], [10], [11])
329AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=ff,bucket=watch_port:10,output:10,bucket=watch_port:11,output:11'])
330AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
331AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
332AT_CHECK([tail -1 stdout], [0],
333 [Datapath actions: drop
334])
335OVS_VSWITCHD_STOP
336AT_CLEANUP
337
b2af3288
AZ
338AT_SETUP([ofproto-dpif - group stats single bucket])
339OVS_VSWITCHD_START
340ADD_OF_PORTS([br0], [1], [10], [11])
341AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,weight=2000,bucket=output:11,weight=0'])
342AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
343(
344for i in `seq 0 2`;
345 do
346 pkt="in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:01:00),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)"
347 AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
348 done
349)
350ovs-appctl time/warp 100
27f57736 351ovs-appctl revalidator/wait
b2af3288
AZ
352AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout])
353AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl
354 group_id=1234,ref_count=0,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=0,byte_count=0
355OFPST_GROUP reply (OF1.2):
356])
357OVS_VSWITCHD_STOP
358AT_CLEANUP
359
360AT_SETUP([ofproto-dpif - group stats all buckets])
361OVS_VSWITCHD_START
362ADD_OF_PORTS([br0], [1], [10], [11])
363AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:11'])
364AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
365(
366for i in `seq 0 2`;
367 do
368 pkt="in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:01:00),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)"
369 AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
370 done
371)
372ovs-appctl time/warp 100
27f57736 373ovs-appctl revalidator/wait
b2af3288
AZ
374AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout])
375AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl
376 group_id=1234,ref_count=0,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=3,byte_count=180
377OFPST_GROUP reply (OF1.2):
378])
379OVS_VSWITCHD_STOP
380AT_CLEANUP
381
58a89177 382AT_SETUP([ofproto-dpif - registers])
023e1e0a 383OVS_VSWITCHD_START
f7b8e494 384ADD_OF_PORTS([br0], [20], [21], [22], [33], [90])
58a89177
EJ
385AT_DATA([flows.txt], [dnl
386in_port=90 actions=resubmit:2,resubmit:3,resubmit:4,resubmit:91
387in_port=91 actions=resubmit:5,resubmit:6,resubmit:7,resubmit:92
e9358af6
EJ
388in_port=92 actions=resubmit:8,resubmit:9,resubmit:10,resubmit:11,resubmit:93
389in_port=93 actions=resubmit:12,resubmit:13,resubmit:14,resubmit:15
390
58a89177
EJ
391in_port=2 actions=load:0x000db000->NXM_NX_REG0[[]]
392in_port=3 actions=load:0xdea->NXM_NX_REG0[[20..31]]
393in_port=4 actions=load:0xeef->NXM_NX_REG0[[0..11]]
394in_port=5 actions=move:NXM_NX_REG0[[]]->NXM_NX_REG1[[]]
395in_port=6 actions=load:0x22222222->NXM_NX_REG2[[]]
396in_port=7 actions=move:NXM_NX_REG1[[20..31]]->NXM_NX_REG2[[0..11]]
397in_port=8 actions=move:NXM_NX_REG1[[0..11]]->NXM_NX_REG2[[20..31]]
398in_port=9,reg0=0xdeadbeef actions=output:20
399in_port=10,reg1=0xdeadbeef actions=output:21
400in_port=11,reg2=0xeef22dea actions=output:22
e9358af6
EJ
401
402dnl Sanilty check all registers
403in_port=12 actions=load:0x10->NXM_NX_REG0[[]],load:0x11->NXM_NX_REG1[[]],load:0x12->NXM_NX_REG2[[]]
404in_port=13 actions=load:0x13->NXM_NX_REG3[[]],load:0x14->NXM_NX_REG4[[]],load:0x15->NXM_NX_REG5[[]]
405in_port=14 actions=load:0x16->NXM_NX_REG6[[]],load:0x17->NXM_NX_REG7[[]]
406in_port=15,reg0=0x10,reg1=0x11,reg2=0x12,reg3=0x13,reg4=0x14,reg5=0x15,reg6=0x16,reg7=0x17 actions=output:33
bd85dac1 407
58a89177
EJ
408])
409AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
50aa28fd 410AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(90),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
58a89177 411AT_CHECK([tail -1 stdout], [0],
e9358af6 412 [Datapath actions: 20,21,22,33
58a89177 413])
023e1e0a 414OVS_VSWITCHD_STOP
58a89177 415AT_CLEANUP
f694937d 416
57fa8167
BP
417dnl Tests that the standardized xregs are mapped onto the legacy OVS registers
418dnl in the manner documented in ovs-ofctl(8).
419AT_SETUP([ofproto-dpif - extended registers])
420OVS_VSWITCHD_START
421ADD_OF_PORTS([br0], [1], [2], [3])
422AT_DATA([flows.txt], [dnl
423table=0 actions=load:0xfedcba9876543210->OXM_OF_PKT_REG1[[]],resubmit(,1)
424table=1,reg2=0xfedcba98,reg3=0x76543210 actions=2
425
426# These low-priority rules shouldn't match. They're here only to make really
427# sure that the test fails if either of the above rules fails to match.
428table=0,priority=0 actions=3
429table=1,priority=0 actions=3
430])
431AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
432AT_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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
433AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
434])
435OVS_VSWITCHD_STOP
436AT_CLEANUP
437
1b0ee636
TG
438AT_SETUP([ofproto-dpif - load and move order])
439OVS_VSWITCHD_START
440ADD_OF_PORTS([br0], [1], [10], [11])
441AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,move:NXM_NX_REG1[[]]->NXM_OF_IP_SRC[[]],bucket=output:11'])
442AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(load:0xffffffff->NXM_NX_REG1[[]],move:NXM_NX_REG1[[]]->NXM_NX_REG2[[]],group:1234)'])
443AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
444AT_CHECK([tail -2 stdout], [0],
16194afd 445 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
d23df9a8 446Datapath actions: set(ipv4(src=255.255.255.255)),10,set(ipv4(src=192.168.0.1)),11
1b0ee636
TG
447])
448OVS_VSWITCHD_STOP
449AT_CLEANUP
450
eb1cbc6b
JT
451dnl Tests that 1.5 copy-field can copy into the standardized xregs.
452AT_SETUP([ofproto-dpif - copy-field into extended registers])
453OVS_VSWITCHD_START
454ADD_OF_PORTS([br0], [1], [2], [3])
455AT_DATA([flows.txt], [dnl
456table=0 actions=move:OXM_OF_ETH_SRC[[0..47]]->OXM_OF_PKT_REG0[[0..47]],goto_table(1)
457table=1,xreg0=0x0000505400000005 actions=2
458
459# These low-priority rules shouldn't match. They're here only to make really
460# sure that the test fails if either of the above rules fails to match.
461table=0,priority=0 actions=3
462table=1,priority=0 actions=3
463])
464AT_CHECK([ovs-ofctl -O OpenFlow15 add-flows br0 flows.txt])
465AT_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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
466AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
467])
468OVS_VSWITCHD_STOP
469AT_CLEANUP
470
2bef8e07
JT
471dnl Tests that 1.5 set-field with mask in the metadata register.
472AT_SETUP([ofproto-dpif - masked set-field into metadata])
473OVS_VSWITCHD_START
474ADD_OF_PORTS([br0], [1], [2], [3])
475AT_DATA([flows.txt], [dnl
476table=0 actions=set_field:0xfafafafa5a5a5a5a->metadata,goto_table(1)
477table=1 actions=set_field:0x6b/0xff->metadata,goto_table(2)
478table=2,metadata=0xfafafafa5a5a5a6b actions=2
479
480# These low-priority rules shouldn't match. They're here only to make really
481# sure that the test fails if either of the above rules fails to match.
482table=0,priority=0 actions=3
483table=1,priority=0 actions=3
484table=2,priority=0 actions=3
485])
486AT_CHECK([ovs-ofctl -O OpenFlow15 add-flows br0 flows.txt])
487AT_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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
488AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
489])
490OVS_VSWITCHD_STOP
491AT_CLEANUP
492
c61f3870
BP
493
494AT_SETUP([ofproto-dpif - actset_output])
495OVS_VSWITCHD_START
496ADD_OF_PORTS(
497 [br0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13])
498AT_DATA([flows.txt], [dnl
3ca3ce0c 499table=0,actset_output=unset actions=write_actions(output(2)),goto_table(1)
c61f3870
BP
500table=1 actions=move:ONFOXM_ET_ACTSET_OUTPUT[[0..31]]->OXM_OF_PKT_REG0[[0..31]],goto_table(2)
501
502# Verify that actset_output got set.
503table=2,priority=20,actset_output=2 actions=4,goto_table(3)
504table=2,priority=10 actions=5,goto_table(3)
505
506# Verify that xreg0 got copied properly from actset_output.
507table=3,priority=20,xreg0=2 actions=6,goto_table(4)
508table=3,priority=10 actions=7,goto_table(4)
509
510# Verify that adding a group action unsets actset_output.
511table=4 actions=write_actions(group(5)),goto_table(5)
512table=5,priority=20,actset_output=unset actions=8,goto_table(6)
513table=5,priority=10 actions=9,goto_table(6)
514
515# Verify that adding another output action doesn't change actset_output
516# (since there's still a group).
517table=6 actions=write_actions(output(3)),goto_table(7)
518table=7,priority=20,actset_output=unset actions=10,goto_table(8)
519table=7,priority=10 actions=11,goto_table(8)
520
521# Verify that clearing the action set, then writing an output action,
522# causes actset_output to be set again.
523table=8,actions=clear_actions,write_actions(output(3),output(2)),goto_table(9)
524table=9,priority=20,actset_output=2 actions=12
525table=9,priority=10 actions=13
526])
527AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows.txt])
528AT_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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
529AT_CHECK([tail -1 stdout], [0], [Datapath actions: 4,6,8,10,12,2
530])
531OVS_VSWITCHD_STOP
532AT_CLEANUP
bd85dac1
AZ
533AT_SETUP([ofproto-dpif - push-pop])
534OVS_VSWITCHD_START
535ADD_OF_PORTS([br0], [20], [21], [22], [33], [90])
536AT_DATA([flows.txt], [dnl
537in_port=90 actions=load:20->NXM_NX_REG0[[0..7]],load:21->NXM_NX_REG1[[0..7]],load:22->NXM_NX_REG2[[0..7]], load:33->NXM_NX_REG3[[0..7]], push:NXM_NX_REG0[[]], push:NXM_NX_REG1[[0..7]],push:NXM_NX_REG2[[0..15]], push:NXM_NX_REG3[[]], resubmit:2, resubmit:3, resubmit:4, resubmit:5
538in_port=2 actions=pop:NXM_NX_REG0[[0..7]],output:NXM_NX_REG0[[]]
539in_port=3 actions=pop:NXM_NX_REG1[[0..7]],output:NXM_NX_REG1[[]]
540in_port=4 actions=pop:NXM_NX_REG2[[0..15]],output:NXM_NX_REG2[[]]
541in_port=5 actions=pop:NXM_NX_REG3[[]],output:NXM_NX_REG3[[]]
542
543])
544AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
50aa28fd 545AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(90),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
bd85dac1
AZ
546AT_CHECK([tail -1 stdout], [0],
547 [Datapath actions: 33,22,21,20
548])
549OVS_VSWITCHD_STOP
550AT_CLEANUP
551
f694937d 552AT_SETUP([ofproto-dpif - output])
023e1e0a 553OVS_VSWITCHD_START
f7b8e494 554ADD_OF_PORTS([br0], [1], [9], [10], [11], [55], [66], [77], [88])
f694937d 555AT_DATA([flows.txt], [dnl
557323cd 556in_port=1 actions=resubmit:2,resubmit:3,resubmit:4,resubmit:5,resubmit:6,resubmit:7,resubmit:8
f694937d
EJ
557in_port=2 actions=output:9
558in_port=3 actions=load:55->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]],load:66->NXM_NX_REG1[[]]
559in_port=4 actions=output:10,output:NXM_NX_REG0[[]],output:NXM_NX_REG1[[]],output:11
560in_port=5 actions=load:77->NXM_NX_REG0[[0..15]],load:88->NXM_NX_REG0[[16..31]]
561in_port=6 actions=output:NXM_NX_REG0[[0..15]],output:NXM_NX_REG0[[16..31]]
562in_port=7 actions=load:0x110000ff->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]]
557323cd 563in_port=8 actions=1,9,load:9->NXM_OF_IN_PORT[[]],1,9
f694937d
EJ
564])
565AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
50aa28fd 566AT_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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
f694937d 567AT_CHECK([tail -1 stdout], [0],
557323cd 568 [Datapath actions: 9,55,10,55,66,11,77,88,9,1
f694937d 569])
023e1e0a 570OVS_VSWITCHD_STOP
f694937d 571AT_CLEANUP
8e9ce036 572
f0fd1a17
PS
573AT_SETUP([ofproto-dpif - dec_ttl])
574OVS_VSWITCHD_START
f7b8e494 575ADD_OF_PORTS([br0], [1], [2], [3], [4])
f0fd1a17
PS
576AT_DATA([flows.txt], [dnl
577table=0 in_port=1 action=dec_ttl,output:2,resubmit(1,1),output:4
578table=1 in_port=1 action=dec_ttl,output:3
579])
580AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
8249a1fe 581AT_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=111,tos=0,ttl=2,frag=no)' -generate], [0], [stdout])
ce58df5b 582AT_CHECK([tail -4 stdout], [0],
16194afd 583 [Megaflow: recirc_id=0,ip,in_port=1,nw_ttl=2,nw_frag=no
d23df9a8 584Datapath actions: set(ipv4(ttl=1)),2,4
6a7e895f
BP
585This flow is handled by the userspace slow path because it:
586 - Sends "packet-in" messages to the OpenFlow controller.
f0fd1a17 587])
8249a1fe 588AT_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=111,tos=0,ttl=3,frag=no)'], [0], [stdout])
ce58df5b 589AT_CHECK([tail -2 stdout], [0],
16194afd 590 [Megaflow: recirc_id=0,ip,in_port=1,nw_ttl=3,nw_frag=no
d23df9a8 591Datapath actions: set(ipv4(ttl=2)),2,set(ipv4(ttl=1)),3,4
f0fd1a17 592])
50aa28fd 593AT_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(0x86dd),ipv6(src=::1,dst=::2,label=0,proto=10,tclass=0x70,hlimit=128,frag=no)'], [0], [stdout])
ce58df5b 594AT_CHECK([tail -2 stdout], [0],
16194afd 595 [Megaflow: recirc_id=0,ipv6,in_port=1,nw_ttl=128,nw_frag=no
d23df9a8 596Datapath actions: set(ipv6(hlimit=127)),2,set(ipv6(hlimit=126)),3,4
f0fd1a17
PS
597])
598
982697a4 599AT_CAPTURE_FILE([ofctl_monitor.log])
77a922c7 600AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
8249a1fe 601AT_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=111,tos=0,ttl=2,frag=no)' -generate], [0], [stdout])
f0fd1a17
PS
602OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
603AT_CHECK([cat ofctl_monitor.log], [0], [dnl
8249a1fe 604NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=34 in_port=1 (via invalid_ttl) data_len=34 (unbuffered)
78c9486d 605ip,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=111,nw_tos=0,nw_ecn=0,nw_ttl=1
f0fd1a17
PS
606])
607OVS_VSWITCHD_STOP
608AT_CLEANUP
609
65bfce4a
SH
610dnl A dec_ttl action at offset 32 in ofpacts will cause the ofpacts
611dnl buffer to be resized just before pushing the id of the dec_ttl action.
612dnl Thus the implementation must account for this by using the
613dnl reallocated buffer rather than the original buffer.
614dnl
615dnl A number of similar rules are added to try and exercise
616dnl xrealloc sufficiently that it returns a different base pointer
617AT_SETUP([ofproto-dpif - dec_ttl without arguments at offset 32 in ofpacts])
618OVS_VSWITCHD_START
619ADD_OF_PORTS([br0], [1])
620(for i in `seq 0 255`; do
621 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,output:1,dec_ttl,controller\n" $i
622 done) > flows.txt
623AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
624OVS_VSWITCHD_STOP
625AT_CLEANUP
626
627dnl A dec_ttl action at offset 32 in ofpacts will cause the ofpacts
628dnl buffer to be resized just before pushing the id of the dec_ttl action.
629dnl Thus the implementation must account for this by using the
630dnl reallocated buffer rather than the original buffer.
631dnl
632dnl A number of similar rules are added to try and exercise
633dnl xrealloc sufficiently that it returns a different base pointer
634AT_SETUP([ofproto-dpif - dec_ttl with arguments at offset 32 in ofpacts])
635OVS_VSWITCHD_START
636ADD_OF_PORTS([br0], [1])
637(for i in `seq 0 255`; do
638 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,output:1,dec_ttl(1),controller\n" $i
639 done) > flows.txt
640AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
641OVS_VSWITCHD_STOP
642AT_CLEANUP
643
644dnl A note action at offset 24 in ofpacts will cause the ofpacts
645dnl buffer to be resized just before pushing the id of the dec_ttl action.
646dnl Thus the implementation must account for this by using the
647dnl reallocated buffer rather than the original buffer.
648dnl
649dnl A number of similar rules are added to try and exercise
650dnl xrealloc sufficiently that it returns a different base pointer
651AT_SETUP([ofproto-dpif - note at offset 24 in ofpacts])
652OVS_VSWITCHD_START
653ADD_OF_PORTS([br0], [1])
654(for i in `seq 0 255`; do
655 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,note:ff,controller\n" $i
656 done) > flows.txt
657AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
658OVS_VSWITCHD_STOP
659AT_CLEANUP
f0fd1a17 660
77750738 661AT_SETUP([ofproto-dpif - output, OFPP_NONE ingress port])
e44768b7
JP
662OVS_VSWITCHD_START
663ADD_OF_PORTS([br0], [1], [2])
77750738 664
77750738
JP
665AT_CHECK([ovs-ofctl add-flow br0 action=normal])
666
667# "in_port" defaults to OFPP_NONE if it's not specified.
72d64e33 668flow="icmp,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,icmp_type=8,icmp_code=0"
77750738 669AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
72d64e33
EJ
670AT_CHECK([tail -1 stdout | sed 's/Datapath actions: //' | tr "," "\n" | sort -n], [0], [dnl
6711
6722
673100
674])
77750738
JP
675
676OVS_VSWITCHD_STOP
677AT_CLEANUP
678
8b36f51e 679AT_SETUP([ofproto-dpif - DSCP])
8b36f51e 680OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy])
72d64e33 681ADD_OF_PORTS([br0], [9])
8b36f51e 682AT_DATA([flows.txt], [dnl
bdda5aca 683actions=output:LOCAL,enqueue:1:1,enqueue:1:2,enqueue:1:2,enqueue:1:1,output:1,mod_nw_tos:0,output:1,output:LOCAL
8b36f51e
EJ
684])
685AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
686AT_CHECK([ovs-vsctl -- \
687 set Port p1 qos=@newqos --\
688 --id=@newqos create QoS type=linux-htb queues=1=@q1,2=@q2 --\
689 --id=@q1 create Queue dscp=1 --\
690 --id=@q2 create Queue dscp=2], [0], [ignore])
50aa28fd 691AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(9),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=1.1.1.1,dst=2.2.2.2,proto=1,tos=0xff,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
ce58df5b 692AT_CHECK([tail -2 stdout], [0],
d23df9a8 693 [Megaflow: recirc_id=0,skb_priority=0,ip,in_port=9,nw_tos=252,nw_frag=no
ce58df5b 694Datapath actions: dnl
e44768b7 695100,dnl
d23df9a8
JR
696set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl
697set(ipv4(tos=0x8/0xfc)),set(skb_priority(0x2)),1,dnl
8b36f51e 6981,dnl
d23df9a8
JR
699set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl
700set(ipv4(tos=0xfc/0xfc)),set(skb_priority(0)),1,dnl
701set(ipv4(tos=0/0xfc)),1,100
8b36f51e
EJ
702])
703OVS_VSWITCHD_STOP
704AT_CLEANUP
705
fd19297b 706AT_SETUP([ofproto-dpif - output/flood flags])
f7b8e494
JP
707OVS_VSWITCHD_START
708ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [7])
fd19297b
EJ
709
710AT_DATA([flows.txt], [dnl
a0fbe94a 711in_port=local actions=local,flood
fd19297b
EJ
712in_port=1 actions=flood
713in_port=2 actions=all
bdda5aca
BP
714in_port=3 actions=output:LOCAL,output:1,output:2,output:3,output:4,output:5,output:6,output:7
715in_port=4 actions=enqueue:LOCAL:1,enqueue:1:1,enqueue:2:1,enqueue:3:2,enqueue:4:1,enqueue:5:1,enqueue:6:1,enqueue:7:1
fd19297b
EJ
716])
717AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
718AT_CHECK([ovs-ofctl mod-port br0 5 noforward])
719AT_CHECK([ovs-ofctl mod-port br0 6 noflood])
720
50aa28fd 721AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(100),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x0900)'], [0], [stdout])
a0fbe94a
AR
722AT_CHECK([tail -1 stdout \
723| sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
7241
7252
7263
7274
7287
729])
730
50aa28fd 731AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x0900)'], [0], [stdout])
fd19297b
EJ
732AT_CHECK([tail -1 stdout \
733| sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
e44768b7 734100
fd19297b
EJ
7352
7363
7374
7387
739])
740
50aa28fd 741AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x0900)'], [0], [stdout])
fd19297b
EJ
742AT_CHECK([tail -1 stdout \
743| sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
fd19297b 7441
e44768b7 745100
fd19297b
EJ
7463
7474
7486
7497
750])
751
50aa28fd 752AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(3),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x0900)'], [0], [stdout])
fd19297b 753AT_CHECK([tail -1 stdout], [0],
e44768b7 754 [Datapath actions: 100,1,2,4,6,7
fd19297b
EJ
755])
756
50aa28fd 757AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(4),eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:02),eth_type(0x0900)'], [0], [stdout])
fd19297b 758AT_CHECK([tail -1 stdout], [0],
1b567fb9 759 [Datapath actions: set(skb_priority(0x1)),100,1,2,set(skb_priority(0x2)),3,set(skb_priority(0x1)),6,7
fd19297b
EJ
760])
761OVS_VSWITCHD_STOP
762AT_CLEANUP
763
6b83a3c5 764AT_SETUP([ofproto-dpif - Default Table Miss - OF1.0 (OFPTC_TABLE_MISS_CONTROLLER)])
6d328fa2
SH
765OVS_VSWITCHD_START([dnl
766 add-port br0 p1 -- set Interface p1 type=dummy
767])
768ON_EXIT([kill `cat ovs-ofctl.pid`])
769
770AT_CAPTURE_FILE([ofctl_monitor.log])
771
772AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
773
774for i in 1 2 3 ; do
ea2735d3 775 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(syn)'
6d328fa2 776done
8bd16974 777OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6d328fa2
SH
778OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
779AT_CHECK([cat ofctl_monitor.log], [0], [dnl
780NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 781tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=syn tcp_csum:0
6d328fa2
SH
782dnl
783NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 784tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=syn tcp_csum:0
6d328fa2
SH
785dnl
786NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 787tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=syn tcp_csum:0
6d328fa2
SH
788])
789
790AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
791AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
792NXST_FLOW reply:
793])
794
795OVS_VSWITCHD_STOP
796AT_CLEANUP
797
6b83a3c5
SH
798AT_SETUP([ofproto-dpif - Default Table Miss - OF1.3 (OFPTC_TABLE_MISS_DROP)])
799OVS_VSWITCHD_START([dnl
800 add-port br0 p1 -- set Interface p1 type=dummy
801])
802ON_EXIT([kill `cat ovs-ofctl.pid`])
803
804AT_CAPTURE_FILE([ofctl_monitor.log])
805AT_CHECK([ovs-ofctl del-flows br0])
806
807AT_CHECK([ovs-ofctl monitor -OOpenFlow13 -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
808
809dnl Test that missed packets are droped
810for i in 1 2 3 ; do
ea2735d3 811 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(ack,syn)'
6b83a3c5
SH
812done
813OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
814
815AT_CHECK([cat ofctl_monitor.log], [0], [dnl
816])
817
818AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
819AT_CHECK([ovs-ofctl -OOpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
820OFPST_FLOW reply (OF1.3):
821])
822
823OVS_VSWITCHD_STOP
824AT_CLEANUP
825
6d328fa2
SH
826AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_CONTROLLER])
827OVS_VSWITCHD_START([dnl
828 add-port br0 p1 -- set Interface p1 type=dummy
829])
830ON_EXIT([kill `cat ovs-ofctl.pid`])
831
832AT_CAPTURE_FILE([ofctl_monitor.log])
833AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=goto_table(1)'])
834
835AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
836
837for i in 1 2 3 ; do
ea2735d3 838 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(urg,rst)'
6d328fa2 839done
8bd16974 840OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6d328fa2
SH
841OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
842AT_CHECK([cat ofctl_monitor.log], [0], [dnl
843OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 844tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0
6d328fa2
SH
845dnl
846OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 847tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0
6d328fa2
SH
848dnl
849OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 850tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0
6d328fa2
SH
851])
852
853AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 854ovs-appctl revalidator/wait
6d328fa2
SH
855AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
856 n_packets=3, n_bytes=180, actions=goto_table:1
857OFPST_FLOW reply (OF1.2):
858])
859
860OVS_VSWITCHD_STOP
861AT_CLEANUP
862
863AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_CONTROLLER])
864OVS_VSWITCHD_START([dnl
865 add-port br0 p1 -- set Interface p1 type=dummy
866])
867ON_EXIT([kill `cat ovs-ofctl.pid`])
868
869AT_CAPTURE_FILE([ofctl_monitor.log])
870AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=resubmit(1,1)'])
871
872AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
873
874for i in 1 2 3 ; do
875 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
876done
877
878OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
879AT_CHECK([cat ofctl_monitor.log], [0], [dnl
880])
881
882AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 883ovs-appctl revalidator/wait
6d328fa2
SH
884AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
885 n_packets=3, n_bytes=180, actions=resubmit(1,1)
886OFPST_FLOW reply (OF1.2):
887])
888
889OVS_VSWITCHD_STOP
890AT_CLEANUP
891
892AT_SETUP([ofproto-dpif - Table Miss - OFPTC_TABLE_MISS_CONTINUE])
893OVS_VSWITCHD_START([dnl
894 add-port br0 p1 -- set Interface p1 type=dummy
895])
896ON_EXIT([kill `cat ovs-ofctl.pid`])
897
898AT_CAPTURE_FILE([ofctl_monitor.log])
899AT_CHECK([ovs-ofctl add-flow br0 'table=1 dl_src=10:11:11:11:11:11 actions=controller'])
900AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
901
902dnl Miss table 0, Hit table 1
903AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
904
905for i in 1 2 3 ; do
906 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=9),tcp_flags(0x010)'
907done
8bd16974 908OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6d328fa2
SH
909OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
910
911AT_CHECK([cat ofctl_monitor.log], [0], [dnl
912NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 913tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
914dnl
915NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 916tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
917dnl
918NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 919tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
920])
921
922dnl Hit table 0, Miss all other tables, sent to controller
923AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
924
925for i in 1 2 3 ; do
926 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
927done
8bd16974 928OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6d328fa2
SH
929OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
930
931AT_CHECK([cat ofctl_monitor.log], [0], [dnl
932NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 933tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
934dnl
935NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 936tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
937dnl
938NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 939tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
940])
941
942AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 943ovs-appctl revalidator/wait
6d328fa2
SH
944AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
945 table=1, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
946OFPST_FLOW reply (OF1.2):
947])
948
949OVS_VSWITCHD_STOP
950AT_CLEANUP
951
952AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_CONTINUE])
953OVS_VSWITCHD_START([dnl
954 add-port br0 p1 -- set Interface p1 type=dummy
955])
956ON_EXIT([kill `cat ovs-ofctl.pid`])
957
958AT_CAPTURE_FILE([ofctl_monitor.log])
959AT_DATA([flows.txt], [dnl
960table=0 actions=goto_table(1)
961table=2 dl_src=10:11:11:11:11:11 actions=controller
962])
963AT_CHECK([ovs-ofctl -OOpenFlow12 add-flows br0 flows.txt])
964AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
965
966dnl Hit table 0, Miss table 1, Hit table 2
967AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
968
969for i in 1 2 3 ; do
970 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=9),tcp_flags(0x010)'
971done
8bd16974 972OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 973OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
6d328fa2
SH
974
975AT_CHECK([cat ofctl_monitor.log], [0], [dnl
976NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 977tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
978dnl
979NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 980tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
981dnl
982NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 983tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
984])
985
986dnl Hit table 1, Miss all other tables, sent to controller
987AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
988
989for i in 1 2 3 ; do
990 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
991done
8bd16974 992OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6d328fa2
SH
993OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
994
995AT_CHECK([cat ofctl_monitor.log], [0], [dnl
996NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 997tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
998dnl
999NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 1000tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
1001dnl
1002NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 1003tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
6d328fa2
SH
1004])
1005
1006AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 1007ovs-appctl revalidator/wait
6d328fa2
SH
1008AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1009 n_packets=6, n_bytes=360, actions=goto_table:1
1010 table=2, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1011OFPST_FLOW reply (OF1.2):
1012])
1013
1014OVS_VSWITCHD_STOP
1015AT_CLEANUP
1016
1017AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_CONTINUE])
1018OVS_VSWITCHD_START([dnl
1019 add-port br0 p1 -- set Interface p1 type=dummy
1020])
1021ON_EXIT([kill `cat ovs-ofctl.pid`])
1022
1023AT_CAPTURE_FILE([ofctl_monitor.log])
1024AT_DATA([flows.txt], [dnl
1025table=0 actions=resubmit(1,1)
1026table=2 dl_src=10:11:11:11:11:11 actions=controller
1027])
1028AT_CHECK([ovs-ofctl -OOpenFlow12 add-flows br0 flows.txt])
1029AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1030
1031dnl Hit table 0, Miss table 1, Dropped
1032AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1033
1034for i in 1 2 3 ; do
1035 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=9),tcp_flags(0x010)'
1036done
0c473314 1037OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
6d328fa2
SH
1038
1039AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1040])
1041
1042dnl Hit table 1, Dropped
1043AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1044
1045for i in 1 2 3 ; do
1046 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
1047done
1048OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1049
1050AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1051])
1052
1053AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 1054ovs-appctl revalidator/wait
6d328fa2
SH
1055AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1056 n_packets=6, n_bytes=360, actions=resubmit(1,1)
1057 table=2, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1058OFPST_FLOW reply (OF1.2):
1059])
1060
1061OVS_VSWITCHD_STOP
1062AT_CLEANUP
1063
1064AT_SETUP([ofproto-dpif - Table Miss - OFPTC_TABLE_MISS_DROP])
1065OVS_VSWITCHD_START([dnl
1066 add-port br0 p1 -- set Interface p1 type=dummy
1067])
1068ON_EXIT([kill `cat ovs-ofctl.pid`])
1069
1070AT_CAPTURE_FILE([ofctl_monitor.log])
1071AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1072
1073AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1074
1075dnl Test that missed packets are droped
1076for i in 1 2 3 ; do
1077 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
1078done
1079OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1080
1081AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1082])
1083
1084AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1085AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
1086NXST_FLOW reply:
1087])
1088
1089OVS_VSWITCHD_STOP
1090AT_CLEANUP
1091
1092AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_DROP])
1093OVS_VSWITCHD_START([dnl
1094 add-port br0 p1 -- set Interface p1 type=dummy
1095])
1096ON_EXIT([kill `cat ovs-ofctl.pid`])
1097
1098AT_CAPTURE_FILE([ofctl_monitor.log])
1099AT_CHECK([ovs-ofctl del-flows br0])
1100AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=goto_table(1)'])
1101AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1102
1103AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1104
1105dnl Test that missed packets are droped
1106for i in 1 2 3 ; do
1107 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
1108done
1109OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1110
1111AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1112])
1113
1114AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 1115ovs-appctl revalidator/wait
6d328fa2
SH
1116AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1117 n_packets=3, n_bytes=180, actions=goto_table:1
1118OFPST_FLOW reply (OF1.2):
1119])
1120
1121OVS_VSWITCHD_STOP
1122AT_CLEANUP
1123
1124AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_DROP])
1125OVS_VSWITCHD_START([dnl
1126 add-port br0 p1 -- set Interface p1 type=dummy
1127])
1128ON_EXIT([kill `cat ovs-ofctl.pid`])
1129
1130AT_CAPTURE_FILE([ofctl_monitor.log])
1131AT_CHECK([ovs-ofctl del-flows br0])
1132AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=resubmit(1,1)'])
1133AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1134
1135AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1136
1137dnl Test that missed packets are droped
1138for i in 1 2 3 ; do
1139 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
1140done
1141OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1142
1143AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1144])
1145
1146AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
27f57736 1147ovs-appctl revalidator/wait
6d328fa2
SH
1148AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1149 n_packets=3, n_bytes=180, actions=resubmit(1,1)
1150OFPST_FLOW reply (OF1.2):
1151])
1152
1153OVS_VSWITCHD_STOP
1154AT_CLEANUP
1155
15056dc8
EJ
1156AT_SETUP([ofproto-dpif - controller])
1157OVS_VSWITCHD_START([dnl
1158 add-port br0 p1 -- set Interface p1 type=dummy
1159])
57c94f35 1160ON_EXIT([kill `cat ovs-ofctl.pid`])
15056dc8
EJ
1161
1162AT_CAPTURE_FILE([ofctl_monitor.log])
1163AT_DATA([flows.txt], [dnl
1164cookie=0x0 dl_src=10:11:11:11:11:11 actions=controller
54834960 1165cookie=0x1 dl_src=20:22:22:22:22:22 actions=controller,resubmit(80,1)
15056dc8
EJ
1166cookie=0x2 dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,controller
1167
54834960
EJ
1168cookie=0x3 table=1 in_port=80 actions=load:1->NXM_NX_REG0[[]],mod_vlan_vid:80,controller,resubmit(81,2)
1169cookie=0x4 table=2 in_port=81 actions=load:2->NXM_NX_REG1[[]],mod_dl_src:80:81:81:81:81:81,controller,resubmit(82,3)
1170cookie=0x5 table=3 in_port=82 actions=load:3->NXM_NX_REG2[[]],mod_dl_dst:82:82:82:82:82:82,controller,resubmit(83,4)
1171cookie=0x6 table=4 in_port=83 actions=load:4->NXM_NX_REG3[[]],mod_nw_src:83.83.83.83,controller,resubmit(84,5)
1172cookie=0x7 table=5 in_port=84 actions=load:5->NXM_NX_REG4[[]],load:6->NXM_NX_TUN_ID[[]],mod_nw_dst:84.84.84.84,controller,resubmit(85,6)
1173cookie=0x8 table=6 in_port=85 actions=mod_tp_src:85,controller,resubmit(86,7)
1174cookie=0x9 table=7 in_port=86 actions=mod_tp_dst:86,controller,controller
78cef7fd 1175cookie=0xa dl_src=40:44:44:44:44:41 actions=mod_vlan_vid:99,mod_vlan_pcp:1,controller
56d72f37 1176cookie=0xd dl_src=80:88:88:88:88:88 arp actions=load:2->OXM_OF_ARP_OP[[]],controller,load:0xc0a88001->OXM_OF_ARP_SPA[[]],controller,load:0x404444444441->OXM_OF_ARP_THA[[]],load:0x01010101->OXM_OF_ARP_SPA[[]],load:0x02020202->OXM_OF_ARP_TPA[[]],controller
15056dc8
EJ
1177])
1178AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1179
1180dnl Flow miss.
77a922c7 1181AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
15056dc8
EJ
1182
1183for i in 1 2 3 ; do
dc235f7f 1184 ovs-appctl netdev-dummy/receive p1 '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=9),tcp_flags(0x010)'
15056dc8 1185done
57c94f35 1186OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1187OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
15056dc8 1188
15056dc8 1189AT_CHECK([cat ofctl_monitor.log], [0], [dnl
f0fd1a17 1190OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 1191tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
15056dc8 1192dnl
f0fd1a17 1193OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 1194tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
15056dc8 1195dnl
f0fd1a17 1196OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 1197tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
15056dc8
EJ
1198])
1199
1200dnl Singleton controller action.
77a922c7 1201AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
15056dc8
EJ
1202
1203for i in 1 2 3 ; do
dc235f7f 1204 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=10),tcp_flags(0x002)'
15056dc8 1205done
57c94f35 1206OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1207OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
15056dc8 1208
15056dc8
EJ
1209AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1210OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1211tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
15056dc8
EJ
1212dnl
1213OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1214tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
15056dc8
EJ
1215dnl
1216OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1217tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
15056dc8
EJ
1218])
1219
1220dnl Modified controller action.
77a922c7 1221AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
15056dc8
EJ
1222
1223for i in 1 2 3 ; do
dc235f7f 1224 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=30:33:33:33:33:33,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=10),tcp_flags(0x001)'
15056dc8 1225done
57c94f35 1226OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1227OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
15056dc8 1228
15056dc8
EJ
1229AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1230OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1231tcp,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=fin tcp_csum:0
15056dc8
EJ
1232dnl
1233OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1234tcp,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=fin tcp_csum:0
15056dc8
EJ
1235dnl
1236OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1237tcp,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=fin tcp_csum:0
15056dc8
EJ
1238])
1239
363dd1d9
JS
1240dnl Modified VLAN controller action.
1241AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1242
1243for i in 1 2 3; do
8249a1fe 1244 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:41,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no)'
363dd1d9 1245done
57c94f35 1246OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1247OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
363dd1d9 1248
363dd1d9
JS
1249AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1250NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1251ip,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:44:41,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
363dd1d9
JS
1252dnl
1253NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1254ip,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:44:41,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
363dd1d9
JS
1255dnl
1256NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1257ip,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:44:41,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
363dd1d9
JS
1258])
1259
349fbdc2
SH
1260dnl Checksum TCP.
1261AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1262
1263for i in 1 ; do
1264 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=20:22:22:22:22:22,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=11),tcp_flags(0x001)'
1265done
1266OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1267ovs-appctl -t ovs-ofctl exit
1268
1269AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1270NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1271tcp,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
349fbdc2
SH
1272dnl
1273NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 in_port=1 reg0=0x1 (via action) data_len=64 (unbuffered)
78c9486d 1274tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
349fbdc2
SH
1275dnl
1276NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 in_port=1 reg0=0x1 reg1=0x2 (via action) data_len=64 (unbuffered)
78c9486d 1277tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
349fbdc2
SH
1278dnl
1279NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=64 (unbuffered)
78c9486d 1280tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
349fbdc2
SH
1281dnl
1282NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=64 (unbuffered)
78c9486d 1283tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:1a03
349fbdc2
SH
1284dnl
1285NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1286tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:3205
349fbdc2
SH
1287dnl
1288NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1289tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=85,tp_dst=11,tcp_flags=fin tcp_csum:31b8
349fbdc2
SH
1290dnl
1291NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1292tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=85,tp_dst=86,tcp_flags=fin tcp_csum:316d
349fbdc2
SH
1293dnl
1294NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1295tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=85,tp_dst=86,tcp_flags=fin tcp_csum:316d
349fbdc2
SH
1296])
1297
1298dnl Checksum UDP.
1299AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1300
1301for i in 1 ; do
1302 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 20 22 22 22 22 22 08 00 45 00 00 1C 00 00 00 00 00 11 00 00 C0 A8 00 01 C0 A8 00 02 00 08 00 0B 00 00 12 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
1303done
1304OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1305ovs-appctl -t ovs-ofctl exit
1306
1307AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1308NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1309udp,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
349fbdc2
SH
1310dnl
1311NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 in_port=1 reg0=0x1 (via action) data_len=64 (unbuffered)
78c9486d 1312udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
349fbdc2
SH
1313dnl
1314NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 in_port=1 reg0=0x1 reg1=0x2 (via action) data_len=64 (unbuffered)
78c9486d 1315udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
349fbdc2
SH
1316dnl
1317NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=64 (unbuffered)
78c9486d 1318udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
349fbdc2
SH
1319dnl
1320NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=64 (unbuffered)
78c9486d 1321udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:2c37
349fbdc2
SH
1322dnl
1323NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1324udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:4439
349fbdc2
SH
1325dnl
1326NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1327udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=11 udp_csum:43ec
349fbdc2
SH
1328dnl
1329NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1330udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 udp_csum:43a1
349fbdc2
SH
1331dnl
1332NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
78c9486d 1333udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 udp_csum:43a1
349fbdc2
SH
1334])
1335
1336dnl Modified ARP controller action.
1337AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1338
1339for i in 1 2 3; do
1340 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=80:88:88:88:88:88,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=192.168.0.1,tip=192.168.0.2,op=1,sha=50:54:00:00:00:05,tha=00:00:00:00:00:00)'
1341done
1342
368a198a 1343OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
349fbdc2
SH
1344OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1345AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1346NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1347arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
349fbdc2 1348NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1349arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
349fbdc2 1350NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1351arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=1.1.1.1,arp_tpa=2.2.2.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
349fbdc2 1352NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1353arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
349fbdc2 1354NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1355arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
349fbdc2 1356NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1357arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=1.1.1.1,arp_tpa=2.2.2.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
349fbdc2 1358NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1359arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
349fbdc2 1360NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1361arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
349fbdc2 1362NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1363arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=1.1.1.1,arp_tpa=2.2.2.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
349fbdc2
SH
1364])
1365
1366AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1367
1368dnl Checksum SCTP.
1369AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1370
1371for i in 1 ; do
1372 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 20 22 22 22 22 22 08 00 45 00 00 24 00 00 00 00 00 84 00 00 C0 A8 00 01 C0 A8 00 02 04 58 08 af 00 00 00 00 d9 d7 91 57 01 00 00 34 cf 28 ec 4e 00 01 40 00 00 0a ff ff b7 53 24 19 00 05 00 08 7f 00 00 01 00 05 00 08 c0 a8 02 07 00 0c 00 06 00 05 00 00 80 00 00 04 c0 00 00 04'
1373done
1374
f7a22c7e 1375AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
349fbdc2
SH
1376OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1377OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1378AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1379NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=98 in_port=1 (via action) data_len=98 (unbuffered)
78c9486d 1380sctp,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
349fbdc2
SH
1381dnl
1382NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=102 in_port=1 reg0=0x1 (via action) data_len=102 (unbuffered)
78c9486d 1383sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
349fbdc2
SH
1384dnl
1385NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=102 in_port=1 reg0=0x1 reg1=0x2 (via action) data_len=102 (unbuffered)
78c9486d 1386sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
349fbdc2
SH
1387dnl
1388NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=102 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=102 (unbuffered)
78c9486d 1389sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
349fbdc2
SH
1390dnl
1391NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=102 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=102 (unbuffered)
78c9486d 1392sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
349fbdc2
SH
1393dnl
1394NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
78c9486d 1395sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
349fbdc2
SH
1396dnl
1397NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
78c9486d 1398sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=2223 sctp_csum:7f12662e
349fbdc2
SH
1399dnl
1400NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
78c9486d 1401sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 sctp_csum:a7e86f67
349fbdc2
SH
1402dnl
1403NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
78c9486d 1404sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 sctp_csum:a7e86f67
349fbdc2
SH
1405])
1406
1407AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
1408 cookie=0x1, n_packets=3, n_bytes=218, dl_src=20:22:22:22:22:22 actions=CONTROLLER:65535,resubmit(80,1)
1409 cookie=0x2, n_packets=3, n_bytes=180, dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,CONTROLLER:65535
1410 cookie=0x3, table=1, n_packets=3, n_bytes=218, in_port=80 actions=load:0x1->NXM_NX_REG0[[]],mod_vlan_vid:80,CONTROLLER:65535,resubmit(81,2)
1411 cookie=0x4, table=2, n_packets=3, n_bytes=218, in_port=81 actions=load:0x2->NXM_NX_REG1[[]],mod_dl_src:80:81:81:81:81:81,CONTROLLER:65535,resubmit(82,3)
1412 cookie=0x5, table=3, n_packets=3, n_bytes=218, in_port=82 actions=load:0x3->NXM_NX_REG2[[]],mod_dl_dst:82:82:82:82:82:82,CONTROLLER:65535,resubmit(83,4)
1413 cookie=0x6, table=4, n_packets=3, n_bytes=218, in_port=83 actions=load:0x4->NXM_NX_REG3[[]],mod_nw_src:83.83.83.83,CONTROLLER:65535,resubmit(84,5)
1414 cookie=0x7, table=5, n_packets=3, n_bytes=218, in_port=84 actions=load:0x5->NXM_NX_REG4[[]],load:0x6->NXM_NX_TUN_ID[[]],mod_nw_dst:84.84.84.84,CONTROLLER:65535,resubmit(85,6)
1415 cookie=0x8, table=6, n_packets=3, n_bytes=218, in_port=85 actions=mod_tp_src:85,CONTROLLER:65535,resubmit(86,7)
1416 cookie=0x9, table=7, n_packets=3, n_bytes=218, in_port=86 actions=mod_tp_dst:86,CONTROLLER:65535,CONTROLLER:65535
1417 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:41 actions=mod_vlan_vid:99,mod_vlan_pcp:1,CONTROLLER:65535
1418 cookie=0xd, n_packets=3, n_bytes=180, arp,dl_src=80:88:88:88:88:88 actions=load:0x2->NXM_OF_ARP_OP[[]],CONTROLLER:65535,load:0xc0a88001->NXM_OF_ARP_SPA[[]],CONTROLLER:65535,load:0x404444444441->NXM_NX_ARP_THA[[]],load:0x1010101->NXM_OF_ARP_SPA[[]],load:0x2020202->NXM_OF_ARP_TPA[[]],CONTROLLER:65535
1419 n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1420NXST_FLOW reply:
1421])
1422
1423OVS_VSWITCHD_STOP
1424AT_CLEANUP
1425
1426AT_SETUP([ofproto-dpif - MPLS handling])
1427OVS_VSWITCHD_START([dnl
1428 add-port br0 p1 -- set Interface p1 type=dummy
1429])
1430ON_EXIT([kill `cat ovs-ofctl.pid`])
1431
1432AT_CAPTURE_FILE([ofctl_monitor.log])
1433AT_DATA([flows.txt], [dnl
1434cookie=0xa dl_src=40:44:44:44:44:42 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],controller
1435cookie=0xa dl_src=41:44:44:44:44:42 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],pop_mpls:0x0800,controller
1436cookie=0xa dl_src=40:44:44:44:44:43 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],controller
1437cookie=0xa dl_src=40:44:44:44:44:44 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],controller
1438cookie=0xa dl_src=40:44:44:44:44:45 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],dec_mpls_ttl,controller
1439cookie=0xa dl_src=40:44:44:44:44:46 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],set_mpls_ttl(10),controller
1440cookie=0xa dl_src=40:44:44:44:44:47 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],dec_mpls_ttl,set_mpls_ttl(10),controller
1441cookie=0xa dl_src=40:44:44:44:44:48 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],load:3->OXM_OF_MPLS_TC[[]],set_mpls_ttl(10),dec_mpls_ttl,controller
1ffd16af 1442cookie=0xa mpls,dl_src=40:44:44:44:44:49 actions=push_mpls:0x8848,load:10->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
349fbdc2
SH
1443cookie=0xb dl_src=50:55:55:55:55:55 dl_type=0x8847 actions=load:1000->OXM_OF_MPLS_LABEL[[]],controller
1444cookie=0xd dl_src=60:66:66:66:66:66 actions=pop_mpls:0x0800,controller
1445cookie=0xc dl_src=70:77:77:77:77:77 actions=push_mpls:0x8848,load:1000->OXM_OF_MPLS_LABEL[[]],load:7->OXM_OF_MPLS_TC[[]],controller
1ffd16af
SH
1446
1447cookie=0xd dl_src=60:66:66:66:00:01 actions=pop_mpls:0x0800,dec_ttl,controller
1448cookie=0xd dl_src=60:66:66:66:00:02 actions=pop_mpls:0x0800,load:0xa000001->OXM_OF_IPV4_DST[[]],controller
1449cookie=0xd dl_src=60:66:66:66:00:03 actions=pop_mpls:0x0800,move:OXM_OF_IPV4_DST[[]]->OXM_OF_IPV4_SRC[[]],controller
1450cookie=0xd dl_src=60:66:66:66:00:04 actions=pop_mpls:0x0800,push:OXM_OF_IPV4_DST[[]],pop:OXM_OF_IPV4_SRC[[]],controller
1451cookie=0xd dl_src=60:66:66:66:00:05 actions=pop_mpls:0x0800,multipath(eth_src,50,modulo_n,256,0,OXM_OF_IPV4_SRC[[0..7]]),controller
1452cookie=0xd dl_src=60:66:66:66:00:06 actions=pop_mpls:0x0800,bundle_load(eth_src,50,hrw,ofport,OXM_OF_IPV4_SRC[[0..15]],slaves:1,2),controller
1453cookie=0xd dl_src=60:66:66:66:00:07 actions=pop_mpls:0x0800,learn(table=1,hard_timeout=60,eth_type=0x800,nw_proto=6,OXM_OF_IPV4_SRC[[]]=OXM_OF_IPV4_DST[[]]),controller
1454
1455cookie=0xd dl_src=60:66:66:66:00:08 actions=pop_mpls:0x0806,resubmit(1,1)
1456cookie=0xd table=1 arp actions=controller
1457
1458cookie=0xd dl_src=60:66:66:66:00:09 actions=pop_mpls:0x0800,mod_nw_tos:48,controller
1459cookie=0xd dl_src=60:66:66:66:00:0a actions=pop_mpls:0x0800,mod_nw_dst:10.0.0.1,controller
1460cookie=0xd dl_src=60:66:66:66:00:0b actions=pop_mpls:0x0800,mod_nw_src:10.0.0.1,controller
1461
1462cookie=0xd dl_src=60:66:66:66:01:00 actions=pop_mpls:0x8848,controller
1463cookie=0xd dl_src=60:66:66:66:01:01 actions=pop_mpls:0x8847,dec_mpls_ttl,controller
1464cookie=0xd dl_src=60:66:66:66:01:02 actions=pop_mpls:0x8848,load:3->OXM_OF_MPLS_TC[[]],controller
1465
1466cookie=0xd dl_src=60:66:66:66:02:00 actions=pop_mpls:0x8847,pop_mpls:0x0800,controller
1467cookie=0xd dl_src=60:66:66:66:02:01 actions=pop_mpls:0x8848,pop_mpls:0x0800,dec_ttl,controller
1468cookie=0xd dl_src=60:66:66:66:02:10 actions=pop_mpls:0x8847,dec_mpls_ttl,pop_mpls:0x0800,dec_ttl,controller
1469
1470cookie=0xd dl_src=60:66:66:66:03:00 actions=pop_mpls:0x8848,pop_mpls:0x8848,controller
1471cookie=0xd dl_src=60:66:66:66:03:01 actions=pop_mpls:0x8847,pop_mpls:0x8847,dec_mpls_ttl,controller
1472cookie=0xd dl_src=60:66:66:66:03:10 actions=pop_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8848,dec_mpls_ttl,controller
1473
1474cookie=0xd dl_src=60:66:66:66:04:00 actions=pop_mpls:0x0800,push_mpls:0x8847,controller
1475cookie=0xd dl_src=60:66:66:66:04:01 actions=pop_mpls:0x0800,push_mpls:0x8848,dec_mpls_ttl,controller
1476cookie=0xd dl_src=60:66:66:66:04:10 actions=pop_mpls:0x0800,dec_ttl,push_mpls:0x8848,dec_mpls_ttl,controller
1477
1478cookie=0xd dl_src=60:66:66:66:05:00 actions=push_mpls:0x8848,pop_mpls:0x8847,controller
1479cookie=0xd dl_src=60:66:66:66:05:01 actions=push_mpls:0x8847,pop_mpls:0x8848,dec_mpls_ttl,controller
1480cookie=0xd dl_src=60:66:66:66:05:10 actions=push_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8847,dec_mpls_ttl,controller
349fbdc2
SH
1481])
1482AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1483
b02475c5
SH
1484dnl Modified MPLS controller action.
1485AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1486
1487for i in 1 2 3; do
791a09be 1488 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:42,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=17,tos=0,ttl=64,frag=no),udp(src=7777,dst=80)'
b02475c5 1489done
57c94f35 1490OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1491OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b02475c5 1492
b02475c5
SH
1493AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1494NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1495mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1496dnl
1497NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1498mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1499dnl
1500NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1501mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1502])
1503
1504dnl Modified MPLS controller action.
1505AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1506
b0a17866 1507for i in 1 2 3; do
8249a1fe 1508 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=41:44:44:44:44:42,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no)'
b0a17866
SH
1509done
1510OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1511OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b0a17866
SH
1512
1513AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1514NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1515ip,in_port=0,vlan_tci=0x0000,dl_src=41:44:44:44:44:42,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
b0a17866
SH
1516dnl
1517NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1518ip,in_port=0,vlan_tci=0x0000,dl_src=41:44:44:44:44:42,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
b0a17866
SH
1519dnl
1520NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1521ip,in_port=0,vlan_tci=0x0000,dl_src=41:44:44:44:44:42,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
b0a17866
SH
1522])
1523
1524dnl Modified MPLS controller action.
1525AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1526
b02475c5
SH
1527dnl in_port(1),eth(src=00:01:02:03:04:05,dst=10:11:12:13:14:15),eth_type(0x8847),mpls(label=100,tc=3,ttl=64,bos=1)
1528
1529for i in 1 2 3; do
1530 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:43,dst=50:54:00:00:00:07),eth_type(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'
1531done
bece9ea7 1532OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1533OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
bece9ea7 1534
b02475c5
SH
1535AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1536NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1537mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:43,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=46912
b02475c5
SH
1538dnl
1539NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1540mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:43,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=46912
b02475c5
SH
1541dnl
1542NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1543mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:43,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=46912
b02475c5
SH
1544])
1545
1546dnl Modified MPLS controller action.
1547AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1548
1549for i in 1 2 3; do
8249a1fe 1550 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:44,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=99,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no))'
b02475c5 1551done
57c94f35 1552OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1553OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b02475c5 1554
b02475c5
SH
1555AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1556NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1557mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=7,dl_src=40:44:44:44:44:44,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1558dnl
1559NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1560mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=7,dl_src=40:44:44:44:44:44,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1561dnl
1562NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1563mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=7,dl_src=40:44:44:44:44:44,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1564])
1565
b676167a
SH
1566dnl Modified MPLS controller action.
1567AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1568
1569for i in 1 2 3; do
8249a1fe 1570 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:45,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no)'
b676167a 1571done
57c94f35 1572OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1573OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b676167a 1574
b676167a
SH
1575AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1576NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1577mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:45,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=63,mpls_bos=1
b676167a
SH
1578dnl
1579NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1580mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:45,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=63,mpls_bos=1
b676167a
SH
1581dnl
1582NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1583mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:45,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=63,mpls_bos=1
b676167a
SH
1584])
1585
0f3f3c3d
SH
1586dnl Modified MPLS controller action.
1587AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1588
1589for i in 1 2 3; do
8249a1fe 1590 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:46,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no)'
0f3f3c3d 1591done
57c94f35 1592OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1593OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
0f3f3c3d 1594
0f3f3c3d
SH
1595AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1596NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1597mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:46,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
0f3f3c3d
SH
1598dnl
1599NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1600mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:46,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
0f3f3c3d
SH
1601dnl
1602NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1603mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:46,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
0f3f3c3d
SH
1604])
1605
1606dnl Modified MPLS controller action.
1607AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1608
1609for i in 1 2 3; do
8249a1fe 1610 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:47,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no)'
0f3f3c3d 1611done
57c94f35 1612OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1613OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
0f3f3c3d 1614
0f3f3c3d
SH
1615AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1616NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1617mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:47,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
0f3f3c3d
SH
1618dnl
1619NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1620mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:47,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
0f3f3c3d
SH
1621dnl
1622NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1623mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:47,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
0f3f3c3d
SH
1624])
1625
1ffd16af
SH
1626AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1627
1628dnl Modified MPLS controller action.
1629AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1630
1631for i in 1 2 3; do
1632 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:49,dst=50:54:00:00:00:07),eth_type(0x8847),mpls(label=10,tc=3,ttl=64,bos=1)'
1633done
1634OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1635ovs-appctl -t ovs-ofctl exit
1636
1637AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1638NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1639mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:49,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=42816
1ffd16af
SH
1640dnl
1641NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1642mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:49,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=42816
1ffd16af
SH
1643dnl
1644NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1645mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:49,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=42816
1ffd16af
SH
1646])
1647
1648AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1649
0f3f3c3d
SH
1650dnl Modified MPLS controller action.
1651AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1652
1653for i in 1 2 3; do
8249a1fe 1654 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:44:48,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=16,tos=0,ttl=64,frag=no)'
0f3f3c3d 1655done
57c94f35 1656OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1657OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
0f3f3c3d 1658
0f3f3c3d
SH
1659AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1660NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1661mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:48,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=9,mpls_bos=1
0f3f3c3d
SH
1662dnl
1663NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1664mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:48,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=9,mpls_bos=1
0f3f3c3d
SH
1665dnl
1666NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1667mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:48,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=9,mpls_bos=1
0f3f3c3d
SH
1668])
1669
b02475c5
SH
1670dnl Modified MPLS actions.
1671AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1672
1673for i in 1 2 3; do
02830175 1674 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:55:55:55:55:55,dst=50:54:00:00:00:07),eth_type(0x8847),mpls(label=100,tc=7,ttl=64,bos=1)'
b02475c5 1675done
57c94f35 1676OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1677OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b02475c5 1678
b02475c5
SH
1679AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1680NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1681mpls,in_port=0,vlan_tci=0x0000,dl_src=50:55:55:55:55:55,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1682dnl
1683NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1684mpls,in_port=0,vlan_tci=0x0000,dl_src=50:55:55:55:55:55,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1685dnl
1686NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 1687mpls,in_port=0,vlan_tci=0x0000,dl_src=50:55:55:55:55:55,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=64,mpls_bos=1
b02475c5
SH
1688])
1689
1690dnl Modified MPLS ipv6 controller action.
1691AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1692
1693for i in 1 2 3; do
1694 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=70:77:77:77:77:77,dst=50:54:00:00:00:07),eth_type(0x86dd),ipv6(src=::1,dst=::2,label=0,proto=10,tclass=0x70,hlimit=128,frag=no)'
1695done
57c94f35 1696OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1697OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b02475c5 1698
b02475c5
SH
1699AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1700NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1701mplsm,in_port=0,vlan_tci=0x0000,dl_src=70:77:77:77:77:77,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=128,mpls_bos=1
b02475c5
SH
1702dnl
1703NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1704mplsm,in_port=0,vlan_tci=0x0000,dl_src=70:77:77:77:77:77,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=128,mpls_bos=1
b02475c5
SH
1705dnl
1706NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 1707mplsm,in_port=0,vlan_tci=0x0000,dl_src=70:77:77:77:77:77,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=128,mpls_bos=1
b02475c5
SH
1708])
1709
1710
1711dnl Modified MPLS pop action.
cff78c88
SH
1712dnl The input is a frame with two MPLS headers which tcpdump -vve shows as:
1713dnl 60:66:66:66:66:66 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
1714dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44)
1715
b02475c5
SH
1716AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1717
1718for i in 1 2 3; do
cff78c88 1719 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 66 66 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 40 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
b02475c5 1720done
cff78c88
SH
1721#for i in 2 3; do
1722# ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=60:66:66:66:66:66,dst=50:54:00:00:00:07),eth_type(0x8847),mpls(label=10,tc=3,ttl=100,bos=1)'
1723#done
57c94f35 1724OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
0c473314 1725OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
b02475c5 1726
b02475c5 1727AT_CHECK([cat ofctl_monitor.log], [0], [dnl
cff78c88 1728NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1729tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:66:66,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
b02475c5 1730dnl
cff78c88 1731NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1732tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:66:66,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
b02475c5 1733dnl
cff78c88 1734NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1735tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:66:66,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
b02475c5
SH
1736])
1737
5c0243a9 1738AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
0d56eaf2 1739
1ffd16af
SH
1740dnl Modified MPLS pop action.
1741dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1742dnl 60:66:66:66:00:01 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1743dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1744dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1745AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1746
1747for i in 1 2 3; do
1748 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 01 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1749done
1750OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1751OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1752
1753AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1754NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1755tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1756dnl
1757NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1758tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1759dnl
1760NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1761tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1762])
1763
1764AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1765
1766dnl Modified MPLS pop action.
1767dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1768dnl 60:66:66:66:00:02 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1769dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1770dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1771AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1772
1773for i in 1 2 3; do
1774 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 02 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1775done
1776OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1777OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1778
1779AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1780NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1781tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:02,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1ffd16af
SH
1782dnl
1783NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1784tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:02,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1ffd16af
SH
1785dnl
1786NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1787tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:02,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1ffd16af
SH
1788])
1789
1790AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1791
1792dnl Modified MPLS pop action.
1793dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1794dnl 60:66:66:66:00:03 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1795dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1796dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1797AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1798
1799for i in 1 2 3; do
1800 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 03 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1801done
1802OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1803OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1804
1805AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1806NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1807tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:03,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1ffd16af
SH
1808dnl
1809NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1810tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:03,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1ffd16af
SH
1811dnl
1812NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1813tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:03,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1ffd16af
SH
1814])
1815
1816AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1817
1818dnl Modified MPLS pop action.
1819dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1820dnl 60:66:66:66:00:04 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1821dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1822dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1823AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1824
1825for i in 1 2 3; do
1826 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 04 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1827done
1828OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1829OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1830
1831AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1832NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1833tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:04,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1ffd16af
SH
1834dnl
1835NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1836tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:04,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1ffd16af
SH
1837dnl
1838NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1839tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:04,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1ffd16af
SH
1840])
1841
1842AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1843
1844dnl Modified MPLS pop action.
1845dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1846dnl 60:66:66:66:00:05 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1847dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1848dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1849AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1850
1851for i in 1 2 3; do
1852 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 05 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1853done
1854OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1855OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1856
1857AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1858NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1859tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.106,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:76db
1ffd16af
SH
1860dnl
1861NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1862tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.106,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:76db
1ffd16af
SH
1863dnl
1864NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1865tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.106,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:76db
1ffd16af
SH
1866])
1867
1868AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1869
1870dnl Modified MPLS pop action.
1871dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1872dnl 60:66:66:66:00:06 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1873dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1874dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1875AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1876
1877for i in 1 2 3; do
1878 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 06 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1879done
1880OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1881OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1882
1883AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1884NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1885tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:06,dl_dst=50:54:00:00:00:07,nw_src=192.168.255.255,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7745
1ffd16af
SH
1886dnl
1887NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1888tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:06,dl_dst=50:54:00:00:00:07,nw_src=192.168.255.255,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7745
1ffd16af
SH
1889dnl
1890NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1891tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:06,dl_dst=50:54:00:00:00:07,nw_src=192.168.255.255,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7745
1ffd16af
SH
1892])
1893
1894AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1895
1896dnl Modified MPLS pop action.
1897dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1898dnl 60:66:66:66:00:07 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1899dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1900dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1901AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1902
1903for i in 1 2 3; do
1904 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 07 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1905done
1906OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1907OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1908
1909AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1910NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1911tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:07,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1912dnl
1913NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1914tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:07,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1915dnl
1916NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1917tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:07,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1918])
1919
1920AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1921
1922dnl Modified MPLS pop action.
1923dnl The input is an ARP frame with a single MPLS label stack entry which tcpdump -vve shows as:
1924dnl 60:66:66:66:00:08 > ff:ff:ff:ff:ff:ff, ethertype MPLS unicast (0x8847), length 46: MPLS (label 20, exp 0, [S], ttl 32)
1925AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1926
1927for i in 1 2 3; do
1928 ovs-appctl netdev-dummy/receive p1 'ff ff ff ff ff ff 60 66 66 66 00 08 88 47 00 01 41 20 00 01 08 00 06 04 00 02 60 66 66 66 00 08 c0 a8 00 01 ff ff ff ff ff ff ff ff ff ff'
1929done
1930OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1931OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1932
1933AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1934NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
78c9486d 1935arp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=255.255.255.255,arp_op=2,arp_sha=60:66:66:66:00:08,arp_tha=ff:ff:ff:ff:ff:ff
1ffd16af
SH
1936dnl
1937NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
78c9486d 1938arp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=255.255.255.255,arp_op=2,arp_sha=60:66:66:66:00:08,arp_tha=ff:ff:ff:ff:ff:ff
1ffd16af
SH
1939dnl
1940NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
78c9486d 1941arp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=255.255.255.255,arp_op=2,arp_sha=60:66:66:66:00:08,arp_tha=ff:ff:ff:ff:ff:ff
1ffd16af
SH
1942])
1943
1944AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1945
1946dnl Modified MPLS pop action.
1947dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1948dnl 60:66:66:66:00:09 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1949dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1950dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1951AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1952
1953for i in 1 2 3; do
1954 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 09 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1955done
1956OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1957OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1958
1959AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1960NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1961tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:09,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=48,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1962dnl
1963NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1964tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:09,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=48,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1965dnl
1966NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1967tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:09,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=48,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
1968])
1969
1970AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1971
1972dnl Modified MPLS pop action.
1973dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1974dnl 60:66:66:66:00:0a > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
1975dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1976dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1977AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1978
1979for i in 1 2 3; do
1980 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 0a 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
1981done
1982OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1983OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1984
1985AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1986NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1987tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0a,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1ffd16af
SH
1988dnl
1989NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1990tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0a,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1ffd16af
SH
1991dnl
1992NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 1993tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0a,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1ffd16af
SH
1994])
1995
1996AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1997
1998dnl Modified MPLS pop action.
1999dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2000dnl 60:66:66:66:00:0b > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2001dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2002dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2003AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2004
2005for i in 1 2 3; do
2006 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 00 0b 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2007done
2008OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2009OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2010
2011AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2012NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2013tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0b,dl_dst=50:54:00:00:00:07,nw_src=10.0.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2ded
1ffd16af
SH
2014dnl
2015NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2016tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0b,dl_dst=50:54:00:00:00:07,nw_src=10.0.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2ded
1ffd16af
SH
2017dnl
2018NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2019tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0b,dl_dst=50:54:00:00:00:07,nw_src=10.0.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2ded
1ffd16af
SH
2020])
2021
2022AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2023
2024dnl Modified MPLS pop action.
2025dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2026dnl 60:66:66:66:01:00 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
2027dnl (label 20, exp 0, [S], ttl 31)
2028dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2029dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2030AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2031
2032for i in 1 2 3; do
2033 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 01 00 88 48 00 01 40 20 00 01 41 1f 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2034done
2035OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2036OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2037
2038AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2039NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2040mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2041dnl
2042NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2043mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2044dnl
2045NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2046mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2047])
2048
2049AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2050
2051dnl Modified MPLS pop action.
2052dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2053dnl 60:66:66:66:01:01 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2054dnl (label 20, exp 0, [S], ttl 31)
2055dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2056dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2057AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2058
2059for i in 1 2 3; do
2060 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 01 01 88 47 00 01 40 20 00 01 41 1f 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2061done
2062OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2063OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2064
2065AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2066NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2067mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
1ffd16af
SH
2068dnl
2069NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2070mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
1ffd16af
SH
2071dnl
2072NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2073mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
1ffd16af
SH
2074])
2075
2076AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2077
2078dnl Modified MPLS pop action.
2079dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2080dnl 60:66:66:66:01:02 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
2081dnl (label 20, exp 0, [S], ttl 31)
2082dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2083dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2084AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2085
2086for i in 1 2 3; do
2087 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 01 02 88 48 00 01 40 20 00 01 41 1f 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2088done
2089OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2090OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2091
2092AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2093NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2094mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:02,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=3,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2095dnl
2096NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2097mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:02,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=3,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2098dnl
2099NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2100mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:02,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=3,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2101])
2102
2103AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2104
2105dnl Modified MPLS pop action.
2106dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2107dnl 60:66:66:66:02:00 > 50:54:00:00:02:00, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2108dnl (label 20, exp 0, [S], ttl 31)
2109dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2110dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2111AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2112
2113for i in 1 2 3; do
2114 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 02 00 88 47 00 01 40 20 00 01 41 1f 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2115done
2116OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2117OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2118
2119AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2120NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2121tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:00,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2122dnl
2123NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2124tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:00,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2125dnl
2126NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2127tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:00,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2128])
2129
2130AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2131
2132dnl Modified MPLS pop action.
2133dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2134dnl 60:66:66:66:02:01 > 50:54:00:00:02:01, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
2135dnl (label 20, exp 0, [S], ttl 31)
2136dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2137dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2138AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2139
2140for i in 1 2 3; do
2141 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 02 01 88 48 00 01 40 20 00 01 41 1f 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2142done
2143OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2144OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2145
2146AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2147NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2148tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2149dnl
2150NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2151tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2152dnl
2153NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2154tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2155])
2156
2157AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2158
2159dnl Modified MPLS pop action.
2160dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2161dnl 60:66:66:66:02:10 > 50:54:00:00:02:10, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2162dnl (label 20, exp 0, [S], ttl 31)
2163dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2164dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2165AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2166
2167for i in 1 2 3; do
2168 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 02 10 88 47 00 01 40 20 00 01 41 1f 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2169done
2170OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2171OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2172
2173AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2174NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2175tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:10,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2176dnl
2177NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2178tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:10,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2179dnl
2180NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2181tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:10,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2182])
2183
2184AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2185
2186dnl Modified MPLS pop action.
2187dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2188dnl 60:66:66:66:03:00 > 50:54:00:00:00:00, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2189dnl (label 20, exp 0, ttl 31)
2190dnl (label 20, exp 0, [S], ttl 30)
2191dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2192dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2193AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2194
2195for i in 1 2 3; do
2196 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 03 00 88 47 00 01 40 20 00 01 40 1f 00 01 41 1e 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2197done
2198OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2199OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2200
2201AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2202NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2203mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
1ffd16af
SH
2204dnl
2205NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2206mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
1ffd16af
SH
2207dnl
2208NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2209mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
1ffd16af
SH
2210])
2211
2212AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2213
2214dnl Modified MPLS pop action.
2215dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2216dnl 60:66:66:66:03:01 > 50:54:00:00:00:00, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
2217dnl (label 20, exp 0, ttl 31)
2218dnl (label 20, exp 0, [S], ttl 30)
2219dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2220dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2221AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2222
2223for i in 1 2 3; do
2224 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 03 01 88 48 00 01 40 20 00 01 40 1f 00 01 41 1e 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2225done
2226OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2227OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2228
2229AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2230NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2231mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
1ffd16af
SH
2232dnl
2233NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2234mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
1ffd16af
SH
2235dnl
2236NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2237mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
1ffd16af
SH
2238])
2239
2240AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2241
2242dnl Modified MPLS pop action.
2243dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2244dnl 60:66:66:66:03:10 > 50:54:00:00:00:00, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2245dnl (label 20, exp 0, ttl 31)
2246dnl (label 20, exp 0, [S], ttl 30)
2247dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2248dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2249AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2250
2251for i in 1 2 3; do
2252 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 03 10 88 47 00 01 40 20 00 01 40 1f 00 01 41 1e 45 00 00 2c 00 00 00 00 ff 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2253done
2254OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2255OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2256
2257AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2258NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2259mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
1ffd16af
SH
2260dnl
2261NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2262mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
1ffd16af
SH
2263dnl
2264NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2265mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
1ffd16af
SH
2266])
2267
2268AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2269
2270dnl Modified MPLS pop action.
2271dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2272dnl 60:66:66:66:04:00 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2273dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2274dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2275AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2276
2277for i in 1 2 3; do
2278 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 04 00 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2279done
2280OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2281OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2282
2283AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2284NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2285mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=255,mpls_bos=1
1ffd16af
SH
2286dnl
2287NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2288mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=255,mpls_bos=1
1ffd16af
SH
2289dnl
2290NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2291mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=255,mpls_bos=1
1ffd16af
SH
2292])
2293
2294AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2295
2296dnl Modified MPLS pop action.
2297dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2298dnl 60:66:66:66:04:01 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2299dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2300dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2301AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2302
2303for i in 1 2 3; do
2304 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 04 01 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2305done
2306OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2307OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2308
2309AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2310NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2311mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:01,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=254,mpls_bos=1
1ffd16af
SH
2312dnl
2313NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2314mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:01,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=254,mpls_bos=1
1ffd16af
SH
2315dnl
2316NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2317mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:01,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=254,mpls_bos=1
1ffd16af
SH
2318])
2319
2320AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2321
2322dnl Modified MPLS pop action.
2323dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2324dnl 60:66:66:66:04:10 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2325dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2326dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2327AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2328
2329for i in 1 2 3; do
2330 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 04 10 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2331done
2332OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2333OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2334
2335AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2336NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2337mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:10,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=253,mpls_bos=1
1ffd16af
SH
2338dnl
2339NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2340mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:10,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=253,mpls_bos=1
1ffd16af
SH
2341dnl
2342NXT_PACKET_IN (xid=0x0): table_id=254 cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2343mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:10,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=253,mpls_bos=1
1ffd16af
SH
2344])
2345
2346AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2347
2348dnl Modified MPLS pop action.
2349dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2350dnl 60:66:66:66:05:00 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2351dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2352dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2353AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2354
2355for i in 1 2 3; do
2356 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 05 00 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2357done
2358OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2359OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2360
2361AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2362NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2363mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=1
1ffd16af
SH
2364dnl
2365NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2366mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=1
1ffd16af
SH
2367dnl
2368NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2369mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=1
1ffd16af
SH
2370])
2371
2372AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2373
2374dnl Modified MPLS pop action.
2375dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2376dnl 60:66:66:66:05:01 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2377dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2378dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2379AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2380
2381for i in 1 2 3; do
2382 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 05 01 88 48 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2383done
2384OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2385OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2386
2387AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2388NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2389mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2390dnl
2391NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2392mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2393dnl
2394NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2395mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2396])
2397
2398AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2399
2400dnl Modified MPLS pop action.
2401dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2402dnl 60:66:66:66:05:10 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2403dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2404dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2405AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2406
2407for i in 1 2 3; do
2408 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 07 60 66 66 66 05 10 88 47 00 01 41 20 45 00 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2409done
2410OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2411OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2412
2413AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2414NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2415mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2416dnl
2417NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2418mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2419dnl
2420NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
78c9486d 2421mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
1ffd16af
SH
2422])
2423
2424AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
f7a22c7e 2425AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore])
1ffd16af 2426
ef0ce8ae 2427AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
b02475c5
SH
2428 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:42 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
2429 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:43 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
2430 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:44 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
b676167a 2431 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:45 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],dec_mpls_ttl,CONTROLLER:65535
0f3f3c3d
SH
2432 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:46 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],set_mpls_ttl(10),CONTROLLER:65535
2433 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:47 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],dec_mpls_ttl,set_mpls_ttl(10),CONTROLLER:65535
2434 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:48 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],set_mpls_ttl(10),dec_mpls_ttl,CONTROLLER:65535
b0a17866 2435 cookie=0xa, n_packets=3, n_bytes=180, dl_src=41:44:44:44:44:42 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],pop_mpls:0x0800,CONTROLLER:65535
1ffd16af 2436 cookie=0xa, n_packets=3, n_bytes=180, mpls,dl_src=40:44:44:44:44:49 actions=push_mpls:0x8848,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
392c30ba 2437 cookie=0xb, n_packets=3, n_bytes=180, mpls,dl_src=50:55:55:55:55:55 actions=load:0x3e8->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
b02475c5 2438 cookie=0xc, n_packets=3, n_bytes=180, dl_src=70:77:77:77:77:77 actions=push_mpls:0x8848,load:0x3e8->OXM_OF_MPLS_LABEL[[]],load:0x7->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
1ffd16af 2439 cookie=0xd, n_packets=3, n_bytes=180, dl_src=60:66:66:66:00:08 actions=pop_mpls:0x0806,resubmit(1,1)
c2d936a4 2440 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:01 actions=pop_mpls:0x0800,dec_ttl,CONTROLLER:65535
1ffd16af
SH
2441 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:02 actions=pop_mpls:0x0800,load:0xa000001->NXM_OF_IP_DST[[]],CONTROLLER:65535
2442 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:03 actions=pop_mpls:0x0800,move:NXM_OF_IP_DST[[]]->NXM_OF_IP_SRC[[]],CONTROLLER:65535
2443 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:04 actions=pop_mpls:0x0800,push:NXM_OF_IP_DST[[]],pop:NXM_OF_IP_SRC[[]],CONTROLLER:65535
2444 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:05 actions=pop_mpls:0x0800,multipath(eth_src,50,modulo_n,256,0,NXM_OF_IP_SRC[[0..7]]),CONTROLLER:65535
2445 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:06 actions=pop_mpls:0x0800,bundle_load(eth_src,50,hrw,ofport,NXM_OF_IP_SRC[[0..15]],slaves:1,2),CONTROLLER:65535
2446 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:07 actions=pop_mpls:0x0800,learn(table=1,hard_timeout=60,eth_type=0x800,nw_proto=6,NXM_OF_IP_SRC[[]]=NXM_OF_IP_DST[[]]),CONTROLLER:65535
2447 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:09 actions=pop_mpls:0x0800,mod_nw_tos:48,CONTROLLER:65535
2448 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:0a actions=pop_mpls:0x0800,mod_nw_dst:10.0.0.1,CONTROLLER:65535
2449 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:0b actions=pop_mpls:0x0800,mod_nw_src:10.0.0.1,CONTROLLER:65535
2450 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:04:00 actions=pop_mpls:0x0800,push_mpls:0x8847,CONTROLLER:65535
2451 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:04:01 actions=pop_mpls:0x0800,push_mpls:0x8848,dec_mpls_ttl,CONTROLLER:65535
c2d936a4 2452 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:04:10 actions=pop_mpls:0x0800,dec_ttl,push_mpls:0x8848,dec_mpls_ttl,CONTROLLER:65535
1ffd16af
SH
2453 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:05:00 actions=push_mpls:0x8848,pop_mpls:0x8847,CONTROLLER:65535
2454 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:05:01 actions=push_mpls:0x8847,pop_mpls:0x8848,dec_mpls_ttl,CONTROLLER:65535
2455 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:05:10 actions=push_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8847,dec_mpls_ttl,CONTROLLER:65535
cff78c88 2456 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:66:66 actions=pop_mpls:0x0800,CONTROLLER:65535
1ffd16af
SH
2457 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:01:00 actions=pop_mpls:0x8848,CONTROLLER:65535
2458 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:01:01 actions=pop_mpls:0x8847,dec_mpls_ttl,CONTROLLER:65535
2459 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:01:02 actions=pop_mpls:0x8848,load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
2460 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:02:00 actions=pop_mpls:0x8847,pop_mpls:0x0800,CONTROLLER:65535
c2d936a4
BP
2461 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:02:01 actions=pop_mpls:0x8848,pop_mpls:0x0800,dec_ttl,CONTROLLER:65535
2462 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:02:10 actions=pop_mpls:0x8847,dec_mpls_ttl,pop_mpls:0x0800,dec_ttl,CONTROLLER:65535
1ffd16af
SH
2463 cookie=0xd, n_packets=3, n_bytes=210, dl_src=60:66:66:66:03:00 actions=pop_mpls:0x8848,pop_mpls:0x8848,CONTROLLER:65535
2464 cookie=0xd, n_packets=3, n_bytes=210, dl_src=60:66:66:66:03:01 actions=pop_mpls:0x8847,pop_mpls:0x8847,dec_mpls_ttl,CONTROLLER:65535
2465 cookie=0xd, n_packets=3, n_bytes=210, dl_src=60:66:66:66:03:10 actions=pop_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8848,dec_mpls_ttl,CONTROLLER:65535
2466 cookie=0xd, table=1, n_packets=3, n_bytes=168, arp actions=CONTROLLER:65535
ef0ce8ae 2467NXST_FLOW reply:
15056dc8
EJ
2468])
2469
2470OVS_VSWITCHD_STOP
8e9ce036 2471AT_CLEANUP
04c956fc 2472
1ffd16af
SH
2473AT_SETUP([ofproto-dpif - MPLS handling with goto_table])
2474OVS_VSWITCHD_START([dnl
2475 add-port br0 p1 -- set Interface p1 type=dummy
2476])
2477ON_EXIT([kill `cat ovs-ofctl.pid`])
2478
2479AT_CAPTURE_FILE([ofctl_monitor.log])
2480AT_DATA([flows.txt], [dnl
2481table=0 mplsm actions=pop_mpls:0x800,goto_table(1)
2482table=1 ip,ip_dscp=8 actions=controller
2483])
2484AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
2485
2486
2487dnl Modified MPLS pop action.
2488dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2489dnl 60:66:66:66:00:08 > 50:54:00:00:00:01, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2490dnl (tos 0x20, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2491dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2492AT_CHECK([ovs-ofctl -O OpenFlow12 monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2493
2494for i in 1 2 3; do
2495 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 01 60 66 66 66 00 08 88 48 00 01 41 20 45 20 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2496done
2497OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2498OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2499
2500AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2501OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2502tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2503dnl
2504OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2505tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2506dnl
2507OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2508tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2509])
2510
2511AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2512
2513AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2514 n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,goto_table:1
2515 table=1, n_packets=3, n_bytes=174, ip,nw_tos=32 actions=CONTROLLER:65535
2516OFPST_FLOW reply (OF1.2):
2517])
2518
2519OVS_VSWITCHD_STOP
2520AT_CLEANUP
2521
2522AT_SETUP([ofproto-dpif - MPLS handling with write_actions])
2523OVS_VSWITCHD_START([dnl
2524 add-port br0 p1 -- set Interface p1 type=dummy
2525])
2526ON_EXIT([kill `cat ovs-ofctl.pid`])
2527
2528dnl N.B: The first (and only) action that accesses L3 data after the
2529dnl pop_mpls action is present in write_actions. This exercises recirculation
2530dnl triggered in write_actions due to a previous action not in write actions.
2531AT_CAPTURE_FILE([ofctl_monitor.log])
2532AT_DATA([flows.txt], [dnl
2533mplsm actions=pop_mpls:0x800,write_actions(dec_ttl,controller)
2534])
2535AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
2536
2537dnl Modified MPLS pop action.
2538dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2539dnl 60:66:66:66:00:08 > 50:54:00:00:00:01, ethertype MPLS multicast (0x8848), length 62: MPLS (label 20, exp 0, [S], ttl 32)
2540dnl (tos 0x20, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2541dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2542AT_CHECK([ovs-ofctl -O OpenFlow12 monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2543
2544for i in 1 2 3; do
2545 ovs-appctl netdev-dummy/receive p1 '50 54 00 00 00 01 60 66 66 66 00 08 88 48 00 01 41 20 45 20 00 2c 00 00 00 00 ff 06 3a 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45'
2546done
2547OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2548OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2549
2550AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2551OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=254 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2552tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2553dnl
2554OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=254 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2555tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2556dnl
2557OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=254 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
78c9486d 2558tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1ffd16af
SH
2559])
2560
2561AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2562
2563AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2564 n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,write_actions(dec_ttl,CONTROLLER:65535)
2565OFPST_FLOW reply (OF1.2):
2566])
2567
2568OVS_VSWITCHD_STOP
2569AT_CLEANUP
527ae97e
SH
2570
2571AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.0)])
2572OVS_VSWITCHD_START([dnl
2573 add-port br0 p1 -- set Interface p1 type=dummy
2574])
2575ON_EXIT([kill `cat ovs-ofctl.pid`])
2576
2577AT_CAPTURE_FILE([ofctl_monitor.log])
2578# A table-miss flow has priority 0 and no match
2579AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2580
2581dnl Singleton controller action.
2582AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2583
2584for i in 1 2 3 ; do
2585 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=10),tcp_flags(0x002)'
2586done
2587OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2588ovs-appctl -t ovs-ofctl exit
2589
2590AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2591OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 2592tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
527ae97e
SH
2593dnl
2594OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 2595tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
527ae97e
SH
2596dnl
2597OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 2598tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
527ae97e
SH
2599])
2600
2601AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
f7a22c7e 2602AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore])
527ae97e
SH
2603
2604AT_CHECK([ovs-ofctl --protocols=OpenFlow10 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2605 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2606NXST_FLOW reply:
2607])
2608
2609OVS_VSWITCHD_STOP
2610AT_CLEANUP
2611
2612
2613AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.3)])
2614OVS_VSWITCHD_START([dnl
2615 add-port br0 p1 -- set Interface p1 type=dummy
2616])
2617ON_EXIT([kill `cat ovs-ofctl.pid`])
2618
2619AT_CAPTURE_FILE([ofctl_monitor.log])
2620# A table-miss flow has priority 0 and no match
2621AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2622
2623dnl Singleton controller action.
2624AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2625
2626for i in 1 2 3 ; do
2627 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=10),tcp_flags(0x002)'
2628done
2629OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2630ovs-appctl -t ovs-ofctl exit
2631
2632AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2633
2634AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2635OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 2636tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
527ae97e
SH
2637dnl
2638OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 2639tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
527ae97e
SH
2640dnl
2641OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
78c9486d 2642tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
ba96552a
SS
2643])
2644
2645AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2646
2647AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2648 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2649OFPST_FLOW reply (OF1.3):
2650])
2651
2652OVS_VSWITCHD_STOP
2653AT_CLEANUP
2654
2655AT_SETUP([ofproto-dpif - table-miss flow with async config (OpenFlow 1.3)])
2656OVS_VSWITCHD_START([dnl
2657 add-port br0 p1 -- set Interface p1 type=dummy
2658])
2659ON_EXIT([kill `cat ovs-ofctl.pid`])
2660
2661AT_CAPTURE_FILE([ofctl_monitor.log])
2662# A table-miss flow has priority 0 and no match
2663AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2664
2665dnl Singleton controller action.
2666AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2667
2668# Become slave (OF 1.3), which should disable everything except port status.
2669ovs-appctl -t ovs-ofctl ofctl/send 041800180000000200000003000000000000000000000001
2670
2671# Use OF 1.3 OFPT_SET_ASYNC to enable OFPR_NO_MATCH for slave only.
2672ovs-appctl -t ovs-ofctl ofctl/send 041c002000000002000000000000000100000000000000000000000000000000
2673
2674for i in 1 2 3 ; do
2675 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=10),tcp_flags(0x002)'
2676done
2677OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2678ovs-appctl -t ovs-ofctl exit
2679
2680AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2681
2682AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2683send: OFPT_ROLE_REQUEST (OF1.3) (xid=0x2): role=slave generation_id=1
2684OFPT_ROLE_REPLY (OF1.3) (xid=0x2): role=slave generation_id=1
2685dnl
2686send: OFPT_SET_ASYNC (OF1.3) (xid=0x2):
2687 master:
2688 PACKET_IN: (off)
2689 PORT_STATUS: (off)
2690 FLOW_REMOVED: (off)
2691
2692 slave:
2693 PACKET_IN: no_match
2694 PORT_STATUS: (off)
2695 FLOW_REMOVED: (off)
2696dnl
2697OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2698tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2699dnl
2700OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2701tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2702dnl
2703OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2704tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
527ae97e
SH
2705])
2706
2707AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2708
2709AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2710 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2711OFPST_FLOW reply (OF1.3):
2712])
2713
2714OVS_VSWITCHD_STOP
2715AT_CLEANUP
2716
807c7989
SS
2717
2718AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.4)])
2719OVS_VSWITCHD_START([dnl
2720 add-port br0 p1 -- set Interface p1 type=dummy
2721])
2722ON_EXIT([kill `cat ovs-ofctl.pid`])
2723
2724AT_CAPTURE_FILE([ofctl_monitor.log])
2725# A table-miss flow has priority 0 and no match
2726AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2727
2728dnl Singleton controller action.
2729AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow14 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2730
2731for i in 1 2 3 ; do
2732 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=10:11:11:11:11:11,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=10),tcp_flags(0x002)'
2733done
2734OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2735ovs-appctl -t ovs-ofctl exit
2736
2737AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2738
2739AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2740OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2741tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2742dnl
2743OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2744tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2745dnl
2746OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2747tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2748])
2749
2750AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2751
2752AT_CHECK([ovs-ofctl --protocols=OpenFlow14 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2753 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2754OFPST_FLOW reply (OF1.4):
2755])
2756
2757OVS_VSWITCHD_STOP
2758AT_CLEANUP
2759
2760
f6c8a6b1
BP
2761AT_SETUP([ofproto-dpif - ARP modification slow-path])
2762OVS_VSWITCHD_START
2763ADD_OF_PORTS([br0], [1], [2])
2764
2765ovs-vsctl -- set Interface p2 type=dummy options:pcap=p2.pcap
2766ovs-ofctl add-flow br0 'in_port=1,arp actions=load:2->OXM_OF_ARP_OP[[]],2,load:0xc0a88001->OXM_OF_ARP_SPA[[]],2,load:0x404444444441->OXM_OF_ARP_THA[[]],2'
2767
2768# Input some packets that should follow the arp modification slow-path.
2769for i in 1 2 3; do
2770 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=80:88:88:88:88:88,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=192.168.0.1,tip=192.168.0.2,op=1,sha=50:54:00:00:00:05,tha=00:00:00:00:00:00)'
2771done
2772AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2773
2774# Check the packets that were output.
2775AT_CHECK([ovs-ofctl parse-pcap p2.pcap], [0], [dnl
78c9486d
JR
2776arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
2777arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
2778arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
2779arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
2780arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
2781arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
2782arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
2783arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
2784arp,in_port=ANY,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
f6c8a6b1
BP
2785])
2786
f6c8a6b1
BP
2787OVS_VSWITCHD_STOP
2788AT_CLEANUP
2789
ecac4ebf 2790AT_SETUP([ofproto-dpif - VLAN handling])
04c956fc 2791OVS_VSWITCHD_START(
023e1e0a
BP
2792 [set Bridge br0 fail-mode=standalone -- \
2793 add-port br0 p1 trunks=10,12 -- \
ecac4ebf 2794 add-port br0 p2 tag=10 -- \
5e9ceccd
BP
2795 add-port br0 p3 tag=12 \
2796 other-config:priority-tags=true -- \
ecac4ebf
BP
2797 add-port br0 p4 tag=12 -- \
2798 add-port br0 p5 vlan_mode=native-tagged tag=10 -- \
2799 add-port br0 p6 vlan_mode=native-tagged tag=10 trunks=10,12 -- \
2800 add-port br0 p7 vlan_mode=native-untagged tag=12 -- \
5e9ceccd
BP
2801 add-port br0 p8 vlan_mode=native-untagged tag=12 trunks=10,12 \
2802 other-config:priority-tags=true -- \
ecac4ebf
BP
2803 set Interface p1 type=dummy -- \
2804 set Interface p2 type=dummy -- \
2805 set Interface p3 type=dummy -- \
2806 set Interface p4 type=dummy -- \
2807 set Interface p5 type=dummy -- \
2808 set Interface p6 type=dummy -- \
2809 set Interface p7 type=dummy -- \
2810 set Interface p8 type=dummy --])
04c956fc 2811
247527db
BP
2812dnl Each of these specifies an in_port by number, a VLAN VID (or "none"),
2813dnl a VLAN PCP (used if the VID isn't "none") and the expected set of datapath
ecac4ebf 2814dnl actions.
04c956fc 2815for tuple in \
e44768b7
JP
2816 "100 none 0 drop" \
2817 "100 0 0 drop" \
2818 "100 0 1 drop" \
2819 "100 10 0 1,5,6,7,8,pop_vlan,2" \
2820 "100 10 1 1,5,6,7,8,pop_vlan,2" \
2821 "100 11 0 5,7" \
2822 "100 11 1 5,7" \
2823 "100 12 0 1,5,6,pop_vlan,3,4,7,8" \
2824 "100 12 1 1,5,6,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
247527db
BP
2825 "1 none 0 drop" \
2826 "1 0 0 drop" \
2827 "1 0 1 drop" \
e44768b7
JP
2828 "1 10 0 5,6,7,8,100,pop_vlan,2" \
2829 "1 10 1 5,6,7,8,100,pop_vlan,2" \
247527db
BP
2830 "1 11 0 drop" \
2831 "1 11 1 drop" \
e44768b7
JP
2832 "1 12 0 5,6,100,pop_vlan,3,4,7,8" \
2833 "1 12 1 5,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
2834 "2 none 0 push_vlan(vid=10,pcp=0),1,5,6,7,8,100" \
2835 "2 0 0 pop_vlan,push_vlan(vid=10,pcp=0),1,5,6,7,8,100" \
2836 "2 0 1 pop_vlan,push_vlan(vid=10,pcp=1),1,5,6,7,8,100" \
247527db
BP
2837 "2 10 0 drop" \
2838 "2 10 1 drop" \
2839 "2 11 0 drop" \
2840 "2 11 1 drop" \
2841 "2 12 0 drop" \
2842 "2 12 1 drop" \
e44768b7
JP
2843 "3 none 0 4,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
2844 "3 0 0 pop_vlan,4,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
2845 "3 0 1 8,pop_vlan,4,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
247527db
BP
2846 "3 10 0 drop" \
2847 "3 10 1 drop" \
2848 "3 11 0 drop" \
2849 "3 11 1 drop" \
2850 "3 12 0 drop" \
2851 "3 12 1 drop" \
e44768b7
JP
2852 "4 none 0 3,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
2853 "4 0 0 pop_vlan,3,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
2854 "4 0 1 3,8,pop_vlan,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
247527db
BP
2855 "4 10 0 drop" \
2856 "4 10 1 drop" \
2857 "4 11 0 drop" \
2858 "4 11 1 drop" \
2859 "4 12 0 drop" \
2860 "4 12 1 drop" \
e44768b7
JP
2861 "5 none 0 2,push_vlan(vid=10,pcp=0),1,6,7,8,100" \
2862 "5 0 0 pop_vlan,2,push_vlan(vid=10,pcp=0),1,6,7,8,100" \
2863 "5 0 1 pop_vlan,2,push_vlan(vid=10,pcp=1),1,6,7,8,100" \
2864 "5 10 0 1,6,7,8,100,pop_vlan,2" \
2865 "5 10 1 1,6,7,8,100,pop_vlan,2" \
2866 "5 11 0 7,100" \
2867 "5 11 1 7,100" \
2868 "5 12 0 1,6,100,pop_vlan,3,4,7,8" \
2869 "5 12 1 1,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
2870 "6 none 0 2,push_vlan(vid=10,pcp=0),1,5,7,8,100" \
2871 "6 0 0 pop_vlan,2,push_vlan(vid=10,pcp=0),1,5,7,8,100" \
2872 "6 0 1 pop_vlan,2,push_vlan(vid=10,pcp=1),1,5,7,8,100" \
2873 "6 10 0 1,5,7,8,100,pop_vlan,2" \
2874 "6 10 1 1,5,7,8,100,pop_vlan,2" \
247527db
BP
2875 "6 11 0 drop" \
2876 "6 11 1 drop" \
e44768b7
JP
2877 "6 12 0 1,5,100,pop_vlan,3,4,7,8" \
2878 "6 12 1 1,5,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
2879 "7 none 0 3,4,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
2880 "7 0 0 pop_vlan,3,4,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
2881 "7 0 1 3,8,pop_vlan,4,push_vlan(vid=12,pcp=1),1,5,6,100" \
2882 "7 10 0 1,5,6,8,100,pop_vlan,2" \
2883 "7 10 1 1,5,6,8,100,pop_vlan,2" \
2884 "7 11 0 5,100" \
2885 "7 11 1 5,100" \
2886 "7 12 0 1,5,6,100,pop_vlan,3,4,8" \
2887 "7 12 1 1,5,6,100,pop_vlan,4,push_vlan(vid=0,pcp=1),3,8" \
2888 "8 none 0 3,4,7,push_vlan(vid=12,pcp=0),1,5,6,100" \
2889 "8 0 0 pop_vlan,3,4,7,push_vlan(vid=12,pcp=0),1,5,6,100" \
2890 "8 0 1 3,pop_vlan,4,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
2891 "8 10 0 1,5,6,7,100,pop_vlan,2" \
2892 "8 10 1 1,5,6,7,100,pop_vlan,2" \
247527db
BP
2893 "8 11 0 drop" \
2894 "8 11 1 drop" \
e44768b7
JP
2895 "8 12 0 1,5,6,100,pop_vlan,3,4,7" \
2896 "8 12 1 1,5,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3"
04c956fc
BP
2897do
2898 set $tuple
2899 in_port=$1
2900 vlan=$2
ecac4ebf
BP
2901 pcp=$3
2902 expected=$4
04c956fc
BP
2903
2904 if test $vlan = none; then
247527db 2905 flow="in_port($in_port),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff),eth_type(0xabcd)"
04c956fc 2906 else
247527db 2907 flow="in_port($in_port),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff),eth_type(0x8100),vlan(vid=$vlan,pcp=$pcp),encap(eth_type(0xabcd))"
04c956fc
BP
2908 fi
2909
395e68ce
BP
2910 echo "----------------------------------------------------------------------"
2911 echo "in_port=$in_port vlan=$vlan pcp=$pcp"
2912
50aa28fd 2913 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
ecac4ebf 2914 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
04c956fc 2915
247527db 2916 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
becffb86 2917 mv stdout expout
247527db 2918 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
04c956fc
BP
2919done
2920
2921OVS_VSWITCHD_STOP
2922AT_CLEANUP
7257b535 2923
56879058
JS
2924AT_SETUP([ofproto-dpif - MPLS handling])
2925OVS_VSWITCHD_START([dnl
2926 add-port br0 p1 -- set Interface p1 type=dummy
2927])
2928ON_EXIT([kill `cat ovs-ofctl.pid`])
2929
2930AT_CAPTURE_FILE([ofctl_monitor.log])
2931AT_DATA([flows.txt], [dnl
2932dl_src=40:44:44:44:00:00 actions=push_mpls:0x8847,controller
63636ee8 2933dl_src=40:44:44:44:00:01,mpls actions=push_mpls:0x8847,controller
0c1625e8 2934dl_src=40:44:44:44:00:02,mpls actions=push_mpls:0x8848,controller
56879058
JS
2935])
2936AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt])
2937
2938dnl In this test, we push an MPLS tag to an ethernet packet.
2939AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
2940
2941for i in 1 2 3; do
2942 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:00:00,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)'
2943done
62022172 2944OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 2945OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
56879058
JS
2946
2947AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
2948OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 2949mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
56879058
JS
295000000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
295100000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
295200000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
295300000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
2954dnl
2955OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 2956mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
56879058
JS
295700000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
295800000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
295900000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
296000000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
2961dnl
2962OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 2963mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
56879058
JS
296400000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
296500000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
296600000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
296700000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
2968])
2969
63636ee8
JS
2970dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
2971dnl copied exactly, except for the BOS bit.
2972AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
2973
2974for i in 1 2 3; do
2975 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:00:01,dst=50:54:00:00:00:07),eth_type(0x8847),mpls(label=10,tc=0,ttl=64,bos=1)'
2976done
62022172 2977OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 2978OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
63636ee8
JS
2979
2980AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
2981OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 2982mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:01,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
63636ee8
JS
298300000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
298400000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
298500000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
298600000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
2987dnl
2988OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 2989mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:01,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
63636ee8
JS
299000000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
299100000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
299200000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
299300000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
2994dnl
2995OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 2996mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:01,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
63636ee8
JS
299700000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
299800000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
299900000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
0c1625e8
SH
300000000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3001])
3002
3003dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
3004dnl copied exactly, except for the BOS bit. The ethertype should be updated
3005dnl to the MPLS ethertype of the MPLS push action which differs to that
3006dnl of the input packet.
3007AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3008
3009for i in 1 2 3; do
3010 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:00:02,dst=50:54:00:00:00:07),eth_type(0x8847),mpls(label=10,tc=0,ttl=64,bos=1)'
3011done
62022172 3012OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c1625e8
SH
3013OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
3014
3015AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3016OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3017mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:02,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
0c1625e8
SH
301800000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
301900000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
302000000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
302100000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3022dnl
3023OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3024mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:02,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
0c1625e8
SH
302500000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
302600000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
302700000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
302800000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3029dnl
3030OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3031mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:02,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
0c1625e8
SH
303200000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
303300000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
303400000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
63636ee8
JS
303500000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3036])
3037
56879058
JS
3038OVS_VSWITCHD_STOP
3039AT_CLEANUP
3040
846e159a
SH
3041AT_SETUP([ofproto-dpif - VLAN+MPLS handling])
3042OVS_VSWITCHD_START([dnl
3043 add-port br0 p1 -- set Interface p1 type=dummy
3044])
3045ON_EXIT([kill `cat ovs-ofctl.pid`])
3046
3047AT_CAPTURE_FILE([ofctl_monitor.log])
3048AT_DATA([flows.txt], [dnl
3049cookie=0xa dl_src=40:44:44:44:54:50 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,controller
3050cookie=0xa dl_src=40:44:44:44:54:51 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,controller
3051cookie=0xa dl_src=40:44:44:44:54:52 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,controller
3052cookie=0xa dl_src=40:44:44:44:54:53 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,controller
3053cookie=0xa dl_src=40:44:44:44:54:54 actions=push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller
3054cookie=0xa dl_src=40:44:44:44:54:55 actions=push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller
3055cookie=0xa dl_src=40:44:44:44:54:56 actions=push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller
3056cookie=0xa dl_src=40:44:44:44:54:57 actions=push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller
3057cookie=0xa dl_src=40:44:44:44:54:58,vlan_tci=0x1000/0x1000 actions=load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller
3058cookie=0xa dl_src=40:44:44:44:54:59,vlan_tci=0x1000/0x1000 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],set_vlan_pcp:1,load:99->OXM_OF_VLAN_VID[[]],controller
3059])
3060AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt])
3061
3062dnl Modified MPLS controller action.
3063dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see
3064dnl both of these in the final flow
3065AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3066
3067for i in 1 2 3; do
3068 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:50,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)'
3069done
62022172 3070OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3071OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3072
3073AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3074OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3075mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
307600000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
307700000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
307800000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
307900000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
308000000040 00 00 00 00
3081dnl
3082OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3083mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
308400000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
308500000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
308600000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
308700000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
308800000040 00 00 00 00
3089dnl
3090OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3091mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
309200000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
309300000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
309400000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
309500000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
309600000040 00 00 00 00
3097])
3098
3099dnl Modified MPLS controller action.
3100dnl In this test, the input packet in vlan-tagged, which should be stripped
3101dnl before we push the MPLS and VLAN tags.
3102AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3103
3104for i in 1 2 3; do
3105 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:51,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))'
3106done
62022172 3107OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3108OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3109
3110AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3111OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3112mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
311300000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
311400000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
311500000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
311600000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3117dnl
3118OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3119mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
312000000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
312100000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
312200000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
312300000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3124dnl
3125OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3126mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
312700000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
312800000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
312900000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
313000000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3131])
3132
3133dnl Modified MPLS controller action.
3134dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see
3135dnl both of these in the final flow
3136AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3137
3138for i in 1 2 3; do
3139 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:52,dst=52: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)'
3140done
62022172 3141OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3142OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3143
3144AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3145OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3146mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
314700000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
314800000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
314900000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
315000000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
315100000040 00 00 00 00
3152dnl
3153OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3154mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
315500000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
315600000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
315700000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
315800000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
315900000040 00 00 00 00
3160dnl
3161OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3162mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
316300000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
316400000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
316500000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
316600000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
316700000040 00 00 00 00
3168])
3169
3170dnl Modified MPLS controller action.
3171dnl In this test, the input packet in vlan-tagged, which should be stripped
3172dnl before we push the MPLS and VLAN tags.
3173AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3174
3175for i in 1 2 3; do
3176 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:53,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))'
3177done
62022172 3178OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3179OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3180
3181AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3182OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3183mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
318400000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
318500000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
318600000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
318700000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3188dnl
3189OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3190mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
319100000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
319200000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
319300000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
319400000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3195dnl
3196OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3197mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
319800000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
319900000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
320000000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
320100000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3202])
3203
3204dnl Modified MPLS controller action.
3205dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these
3206dnl actions are reordered, so we see both of these in the final flow.
3207AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3208
3209for i in 1 2 3; do
3210 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:54,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)'
3211done
62022172 3212OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3213OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3214
3215AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3216OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3217mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
321800000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
321900000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
322000000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
322100000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
322200000040 00 00 00 00
3223dnl
3224OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3225mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
322600000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
322700000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
322800000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
322900000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
323000000040 00 00 00 00
3231dnl
3232OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3233mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
323400000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
323500000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
323600000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
323700000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
323800000040 00 00 00 00
3239])
3240
3241dnl Modified MPLS controller action.
3242dnl In this test, the input packet in vlan-tagged, which should be stripped
3243dnl before we push the MPLS and VLAN tags.
3244AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3245
3246for i in 1 2 3; do
3247 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:55,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))'
3248done
62022172 3249OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
28ae2f37 3250OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
846e159a
SH
3251
3252AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3253OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3254mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
325500000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
325600000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
325700000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
325800000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3259dnl
3260OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3261mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
326200000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
326300000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
326400000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
326500000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3266dnl
3267OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3268mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
326900000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
327000000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
327100000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
327200000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3273])
3274
3275dnl Modified MPLS controller action.
3276dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these
3277dnl actions are reordered, so we see both of these in the final flow.
3278AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3279
3280for i in 1 2 3; do
3281 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:56,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)'
3282done
62022172 3283OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3284OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3285
3286AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3287OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3288mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
328900000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
329000000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
329100000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
329200000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
329300000040 00 00 00 00
3294dnl
3295OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3296mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
329700000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
329800000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
329900000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
330000000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
330100000040 00 00 00 00
3302dnl
3303OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
78c9486d 3304mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
330500000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
330600000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
330700000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
330800000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
330900000040 00 00 00 00
3310])
3311
3312dnl Modified MPLS controller action.
3313dnl In this test, the input packet in vlan-tagged, which should be stripped
3314dnl before we push the MPLS and VLAN tags.
3315AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 -m 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
3316
3317for i in 1 2 3; do
3318 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:57,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))'
3319done
62022172 3320OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3321OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3322
3323AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3324OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3325mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
332600000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
332700000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
332800000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
332900000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3330dnl
3331OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3332mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
333300000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
333400000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
333500000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
333600000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3337dnl
3338OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3339mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
334000000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
334100000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
334200000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
334300000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3344])
3345
3346dnl Modified MPLS controller action.
3347dnl In this test, the input packet in vlan-tagged, which should be stripped
3348dnl before we push the MPLS and VLAN tags.
3349AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3350
3351for i in 1 2 3; do
3352 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:58,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))'
3353done
62022172 3354OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
0c473314 3355OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
846e159a
SH
3356
3357AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3358OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3359mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
336000000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
336100000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
336200000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
336300000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3364dnl
3365OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3366mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
336700000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
336800000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
336900000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
337000000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3371dnl
3372OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3373mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
337400000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
337500000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
337600000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
337700000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3378])
3379
3380dnl Modified MPLS controller action.
3381dnl In this test, the input packet in vlan-tagged, which should be modified
3382dnl before we push MPLS and VLAN tags.
3383AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3384
3385for i in 1 2 3; do
3386 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:59,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))'
3387done
62022172 3388OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
846e159a
SH
3389ovs-appctl -t ovs-ofctl exit
3390
3391AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3392OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3393mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
339400000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
339500000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
339600000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
339700000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3398dnl
3399OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3400mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
340100000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
340200000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
340300000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
340400000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3405dnl
3406OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
78c9486d 3407mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
846e159a
SH
340800000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
340900000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
341000000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
341100000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3412])
3413
3414AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
f7a22c7e 3415AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore])
846e159a
SH
3416AT_CHECK([ovs-ofctl --protocols=OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
3417 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:50 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,CONTROLLER:65535
3418 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:51 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,CONTROLLER:65535
3419 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:52 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,CONTROLLER:65535
3420 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:53 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,CONTROLLER:65535
3421 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:54 actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
3422 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:55 actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
3423 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:56 actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
3424 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:57 actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
3425 cookie=0xa, n_packets=3, n_bytes=180, vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:58 actions=load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
3426 cookie=0xa, n_packets=3, n_bytes=180, vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:59 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],set_field:1->vlan_pcp,load:0x63->OXM_OF_VLAN_VID[[]],CONTROLLER:65535
3427OFPST_FLOW reply (OF1.2):
3428])
3429
3430OVS_VSWITCHD_STOP
3431AT_CLEANUP
3432
b8778a0d 3433AT_SETUP([ofproto-dpif - fragment handling - trace])
023e1e0a 3434OVS_VSWITCHD_START
72d64e33 3435ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
7257b535 3436AT_DATA([flows.txt], [dnl
12e4681c
JR
3437priority=75 tcp ip_frag=no tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:1
3438priority=75 tcp ip_frag=first tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:2
12e4681c
JR
3439priority=50 tcp ip_frag=no actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:4
3440priority=50 tcp ip_frag=first actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:5
b8778a0d 3441priority=50 tcp ip_frag=later actions=output:6
7257b535
BP
3442])
3443AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
3444
a61680c6 3445base_flow="in_port(90),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=128"
7257b535
BP
3446no_flow="$base_flow,frag=no),tcp(src=12345,dst=80)"
3447first_flow="$base_flow,frag=first),tcp(src=12345,dst=80)"
3448later_flow="$base_flow,frag=later)"
3449
3450 # mode no first later
3451for tuple in \
3452 'normal 1 5 6' \
3453 'drop 1 drop drop' \
3454 'nx-match 1 2 6'
3455do
3456 set $tuple
3457 mode=$1
3458 no=$2
3459 first=$3
3460 later=$4
3461
3462 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3463 for type in no first later; do
3464 eval flow=\$${type}_flow exp_output=\$$type
7fd51d39 3465 printf "\n%s\n" "----$mode $type-----"
50aa28fd 3466 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
7fd51d39
BP
3467 : > expout
3468 if test $mode = drop && test $type != no; then
3469 echo 'Packets dropped because they are IP fragments and the fragment handling mode is "drop".' >> expout
12e4681c 3470 echo "Datapath actions: $exp_output" >> expout
b8778a0d 3471 elif test $type = later; then
12e4681c
JR
3472 echo "Datapath actions: $exp_output" >> expout
3473 else
3474 echo "Datapath actions: set(tcp(src=80,dst=80)),$exp_output" >> expout
7fd51d39 3475 fi
7fd51d39 3476 AT_CHECK([grep 'IP fragments' stdout; tail -1 stdout], [0], [expout])
7257b535
BP
3477 done
3478done
023e1e0a 3479OVS_VSWITCHD_STOP
7257b535 3480AT_CLEANUP
848e8809 3481
b8778a0d
JR
3482AT_SETUP([ofproto-dpif - fragment handling - upcall])
3483OVS_VSWITCHD_START
3484ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3485AT_DATA([flows.txt], [dnl
3486priority=75 tcp ip_frag=no tp_dst=80 actions=set_field:81->tcp_dst,output:1
3487priority=75 tcp ip_frag=first tp_dst=80 actions=set_field:81->tcp_dst,output:2
3488priority=50 tcp ip_frag=no actions=set_field:81->tcp_dst,output:4
3489priority=50 tcp ip_frag=first actions=set_field:81->tcp_dst,output:5
3490priority=50 tcp ip_frag=later actions=output:6
3491])
3492AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
3493
3494base_flow="in_port(90),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=128"
3495no_flow="$base_flow,frag=no),tcp(src=12345,dst=80)"
3496first_flow="$base_flow,frag=first),tcp(src=12345,dst=80)"
3497later_flow="$base_flow,frag=later)"
3498
3499AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
3500
3501mode=normal
3502
3503AT_CHECK([ovs-ofctl set-frags br0 $mode])
3504for type in no first later; do
3505 eval flow=\$${type}_flow
3506 printf "\n%s\n" "----$mode $type-----"
3507
3508 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3509done
3510
3511AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3512recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=no),tcp(dst=80), packets:0, bytes:0, used:never, actions:set(tcp(dst=81)),1
3513recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(dst=80), packets:0, bytes:0, used:never, actions:set(tcp(dst=81)),5
3514recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, bytes:0, used:never, actions:6
3515])
3516
3517mode=drop
3518
98bb4286
JS
3519ovs-appctl revalidator/wait
3520AT_CHECK([ovs-appctl revalidator/purge], [0])
b8778a0d
JR
3521AT_CHECK([ovs-ofctl set-frags br0 $mode])
3522for type in no first later; do
3523 eval flow=\$${type}_flow
3524 printf "\n%s\n" "----$mode $type-----"
3525
3526 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3527done
3528
3529AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3530recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=no),tcp(dst=80), packets:0, bytes:0, used:never, actions:set(tcp(dst=81)),1
3531recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=first), packets:0, bytes:0, used:never, actions:drop
3532recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=later), packets:0, bytes:0, used:never, actions:drop
3533])
3534
3535mode=nx-match
3536
98bb4286
JS
3537ovs-appctl revalidator/wait
3538AT_CHECK([ovs-appctl revalidator/purge], [0])
b8778a0d
JR
3539AT_CHECK([ovs-ofctl set-frags br0 $mode])
3540for type in no first later; do
3541 eval flow=\$${type}_flow
3542 printf "\n%s\n" "----$mode $type-----"
3543
3544 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3545done
3546
3547AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3548recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=no),tcp(dst=80), packets:0, bytes:0, used:never, actions:set(tcp(dst=81)),1
3549recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(dst=80), packets:0, bytes:0, used:never, actions:set(tcp(dst=81)),2
3550recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, bytes:0, used:never, actions:6
3551])
3552
3553OVS_VSWITCHD_STOP
3554AT_CLEANUP
3555
3556AT_SETUP([ofproto-dpif - fragment handling - actions])
3557OVS_VSWITCHD_START
3558ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3559
3560AT_CHECK([ovs-ofctl add-flow br0 "tcp,ip_frag=later actions=move:OXM_OF_TCP_DST[[0..7]]->OXM_OF_TCP_SRC[[0..7]],output:1"], [1], [], [stderr])
3561AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3562source field tcp_dst lacks correct prerequisites
3563ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3564])
3565
3566AT_CHECK([ovs-ofctl -O OpenFlow15 add-flow br0 "tcp,ip_frag=later actions=move:OXM_OF_PKT_REG0[[0..7]]->OXM_OF_TCP_SRC[[0..7]],output:1"], [1], [], [stderr])
3567AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3568destination field tcp_src lacks correct prerequisites
3569ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3570])
3571
3572AT_CHECK([ovs-ofctl add-flow br0 "udp,ip_frag=later actions=set_field:8888->udp_src,output:1"], [1], [], [stderr])
3573AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3574set_field udp_src lacks correct prerequisities
3575ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3576])
3577
3578AT_CHECK([ovs-ofctl add-flow br0 "udp,ip_frag=later actions=load:8888->NXM_OF_UDP_DST[[]],output:1"], [1], [], [stderr])
3579AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3580set_field udp_dst lacks correct prerequisities
3581ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3582])
3583
3584AT_CHECK([ovs-ofctl add-flow br0 "sctp,ip_frag=later actions=set_field:8888->sctp_src,output:1"], [1], [], [stderr])
3585AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3586set_field sctp_src lacks correct prerequisities
3587ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3588])
3589
3590AT_CHECK([ovs-ofctl add-flow br0 "sctp,ip_frag=later actions=set_field:8888->sctp_dst,output:1"], [1], [], [stderr])
3591AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3592set_field sctp_dst lacks correct prerequisities
3593ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3594])
3595
3596AT_CHECK([ovs-ofctl add-flow br0 "tcp,ip_frag=later actions=learn(table=1,hard_timeout=60,eth_type=0x800,nw_proto=6,NXM_OF_IP_SRC[[]]=NXM_OF_IP_DST[[]],NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],output:NXM_NX_REG0[[0..15]]),output:1"], [1], [], [stderr])
3597AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3598source field tcp_dst lacks correct prerequisites
3599ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3600])
3601
3602AT_DATA([flows.txt], [dnl
3603priority=75 tcp actions=load:42->OXM_OF_TCP_SRC[[0..7]],output:1
3604])
3605AT_CHECK([ovs-ofctl -O OpenFlow12 replace-flows br0 flows.txt])
3606
3607AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
3608
3609mode=normal
3610
3611AT_CHECK([ovs-ofctl set-frags br0 $mode])
3612for frag in 4000 6000 6008 4010; do
3613 printf "\n%s\n" "----$mode $frag-----"
3614
3615 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 003c 2e24 $frag 40 06 465d ac11370d ac11370b 828b 0016 751e267b 00000000 a002 16d0 1736 0000 02 04 05 b4 04 02 08 0a 2d 25 08 5f 00 00 00 00 01 03 03 07"])
3616done
3617
3618AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3619recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=no),tcp(src=33419), packets:0, bytes:0, used:never, actions:set(tcp(src=33322)),1
3620recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=33419), packets:0, bytes:0, used:never, actions:set(tcp(src=33322)),1
3621recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:74, used:0.001s, actions:1
3622])
3623
98bb4286
JS
3624ovs-appctl revalidator/wait
3625AT_CHECK([ovs-appctl revalidator/purge], [0])
b8778a0d
JR
3626AT_CHECK([ovs-ofctl set-frags br0 $mode])
3627for frag in 4000 6000 6008 4010; do
3628 printf "\n%s\n" "----$mode $frag truncated transport header -----"
3629
3630 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 0018 2e24 $frag 40 06 465d ac11370d ac11370b 828b 0016"])
3631done
3632
3633AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3634recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=no),tcp(src=0), packets:0, bytes:0, used:never, actions:set(tcp(src=42)),1
3635recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=0), packets:0, bytes:0, used:never, actions:set(tcp(src=42)),1
3636recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1
3637])
3638
98bb4286
JS
3639ovs-appctl revalidator/wait
3640AT_CHECK([ovs-appctl revalidator/purge], [0])
b8778a0d
JR
3641AT_CHECK([ovs-ofctl set-frags br0 $mode])
3642for frag in 4000 6000 6001 4002; do
3643 printf "\n%s\n" "----$mode $frag missing transport header-----"
3644
3645 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 0014 2e24 $frag 40 06 465d ac11370d ac11370b"])
3646done
3647
3648AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3649recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=no),tcp(src=0), packets:0, bytes:0, used:never, actions:set(tcp(src=42)),1
3650recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=0), packets:0, bytes:0, used:never, actions:set(tcp(src=42)),1
3651recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1
3652])
3653
3654OVS_VSWITCHD_STOP
3655AT_CLEANUP
3656
848e8809
EJ
3657AT_SETUP([ofproto-dpif - exit])
3658OVS_VSWITCHD_START
f7b8e494 3659ADD_OF_PORTS([br0], [1], [2], [3], [10], [11], [12], [13], [14])
848e8809
EJ
3660AT_DATA([flows.txt], [dnl
3661in_port=1 actions=output:10,exit,output:11
3662in_port=2 actions=output:12,resubmit:1,output:12
3663in_port=3 actions=output:13,resubmit:2,output:14
3664])
3665AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
50aa28fd 3666AT_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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
848e8809
EJ
3667AT_CHECK([tail -1 stdout], [0],
3668 [Datapath actions: 10
3669])
50aa28fd 3670AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
848e8809
EJ
3671AT_CHECK([tail -1 stdout], [0],
3672 [Datapath actions: 12,10
3673])
50aa28fd 3674AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(3),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
848e8809
EJ
3675AT_CHECK([tail -1 stdout], [0],
3676 [Datapath actions: 13,12,10
3677])
3678OVS_VSWITCHD_STOP
3679AT_CLEANUP
c06bba01
JP
3680
3681
3682AT_SETUP([ofproto-dpif - mirroring, select_all])
432fca23
BP
3683OVS_VSWITCHD_START
3684ADD_OF_PORTS([br0], 1, 2, 3)
3685ovs-vsctl \
c06bba01
JP
3686 set Bridge br0 mirrors=@m --\
3687 --id=@p3 get Port p3 --\
432fca23 3688 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
c06bba01 3689
c06bba01
JP
3690AT_DATA([flows.txt], [dnl
3691in_port=1 actions=output:2
3692in_port=2 actions=output:1
3693])
3694AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3695
247527db 3696flow="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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3697AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3698AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3699 [Datapath actions: 2,3
c06bba01
JP
3700])
3701
247527db 3702flow="in_port(2),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3703AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3704AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3705 [Datapath actions: 1,3
c06bba01
JP
3706])
3707
3708OVS_VSWITCHD_STOP
3709AT_CLEANUP
3710
3711
3712AT_SETUP([ofproto-dpif - mirroring, select_src])
432fca23
BP
3713OVS_VSWITCHD_START
3714ADD_OF_PORTS([br0], 1, 2, 3)
3715ovs-vsctl \
c06bba01
JP
3716 set Bridge br0 mirrors=@m --\
3717 --id=@p1 get Port p1 -- --id=@p3 get Port p3 --\
432fca23 3718 --id=@m create Mirror name=mymirror select_src_port=@p1 output_port=@p3
c06bba01 3719
c06bba01
JP
3720AT_DATA([flows.txt], [dnl
3721in_port=1 actions=output:2
3722in_port=2 actions=output:1
3723])
3724AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3725
247527db 3726flow="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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3727AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3728AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3729 [Datapath actions: 2,3
c06bba01
JP
3730])
3731
247527db 3732flow="in_port(2),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3733AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3734AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3735 [Datapath actions: 1
c06bba01
JP
3736])
3737OVS_VSWITCHD_STOP
3738AT_CLEANUP
3739
33158a18 3740AT_SETUP([ofproto-dpif - mirroring, OFPP_NONE ingress port])
432fca23
BP
3741OVS_VSWITCHD_START
3742ADD_OF_PORTS([br0], 1, 2)
3743ovs-vsctl \
33158a18
JP
3744 set Bridge br0 mirrors=@m --\
3745 --id=@p2 get Port p2 --\
432fca23 3746 --id=@m create Mirror name=mymirror select_all=true output_port=@p2
33158a18 3747
33158a18
JP
3748AT_CHECK([ovs-ofctl add-flow br0 action=output:1])
3749
3750# "in_port" defaults to OFPP_NONE if it's not specified.
72d64e33 3751flow="icmp,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_ttl=128,icmp_type=8,icmp_code=0"
33158a18
JP
3752AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
3753AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3754 [Datapath actions: 1,2
33158a18
JP
3755])
3756
3757OVS_VSWITCHD_STOP
3758AT_CLEANUP
3759
c06bba01
JP
3760
3761AT_SETUP([ofproto-dpif - mirroring, select_dst])
432fca23
BP
3762OVS_VSWITCHD_START
3763ADD_OF_PORTS([br0], 1, 2, 3)
3764ovs-vsctl \
c06bba01
JP
3765 set Bridge br0 mirrors=@m --\
3766 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
432fca23 3767 --id=@m create Mirror name=mymirror select_dst_port=@p2 output_port=@p3
c06bba01 3768
c06bba01
JP
3769AT_DATA([flows.txt], [dnl
3770in_port=1 actions=output:2
3771in_port=2 actions=output:1
3772])
3773AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3774
247527db 3775flow="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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3776AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3777AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3778 [Datapath actions: 2,3
c06bba01
JP
3779])
3780
247527db 3781flow="in_port(2),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3782AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3783AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3784 [Datapath actions: 1
c06bba01
JP
3785])
3786
3787OVS_VSWITCHD_STOP
3788AT_CLEANUP
3789
3790
3791AT_SETUP([ofproto-dpif - mirroring, select_vlan])
432fca23
BP
3792OVS_VSWITCHD_START
3793ADD_OF_PORTS([br0], 1, 2, 3)
3794ovs-vsctl \
c06bba01
JP
3795 set Bridge br0 mirrors=@m --\
3796 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
432fca23 3797 --id=@m create Mirror name=mymirror select_all=true select_vlan=11 output_port=@p3
c06bba01 3798
c06bba01
JP
3799AT_DATA([flows.txt], [dnl
3800in_port=1, actions=output:2
3801])
3802AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3803
247527db 3804flow="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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3805AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3806AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3807 [Datapath actions: 2
c06bba01
JP
3808])
3809
247527db 3810flow="in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=10,pcp=0),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0))"
50aa28fd 3811AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3812AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3813 [Datapath actions: 2
c06bba01
JP
3814])
3815
247527db 3816flow="in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=11,pcp=0),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0))"
50aa28fd 3817AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3818AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3819 [Datapath actions: 2,3
c06bba01
JP
3820])
3821
3822OVS_VSWITCHD_STOP
3823AT_CLEANUP
3824
3825
3826AT_SETUP([ofproto-dpif - mirroring, output_port])
432fca23
BP
3827OVS_VSWITCHD_START
3828ADD_OF_PORTS([br0], 1, 2, 3)
3829ovs-vsctl \
c06bba01
JP
3830 set Bridge br0 mirrors=@m --\
3831 --id=@p3 get Port p3 --\
432fca23 3832 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
c06bba01 3833
c06bba01
JP
3834AT_DATA([flows.txt], [dnl
3835in_port=1 actions=mod_vlan_vid:17,output:2
3836in_port=2 actions=output:1
3837])
3838AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3839
247527db 3840flow="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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3841AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3842AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3843 [Datapath actions: push_vlan(vid=17,pcp=0),2,pop_vlan,3
c06bba01
JP
3844])
3845
247527db 3846flow="in_port(2),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3847AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01 3848AT_CHECK_UNQUOTED([tail -1 stdout], [0],
247527db 3849 [Datapath actions: 1,3
c06bba01
JP
3850])
3851
3852OVS_VSWITCHD_STOP
3853AT_CLEANUP
3854
c06bba01 3855AT_SETUP([ofproto-dpif - mirroring, output_vlan])
432fca23
BP
3856OVS_VSWITCHD_START
3857ADD_OF_PORTS([br0], 1, 2)
3858ovs-vsctl \
c06bba01 3859 set Bridge br0 mirrors=@m --\
432fca23 3860 --id=@m create Mirror name=mymirror select_all=true output_vlan=12
c06bba01 3861
c06bba01
JP
3862AT_DATA([flows.txt], [dnl
3863in_port=1 actions=output:2
3864in_port=2 actions=mod_vlan_vid:17,output:1
3865])
3866AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3867
247527db 3868flow="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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3869AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01
JP
3870actual=`tail -1 stdout | sed 's/Datapath actions: //'`
3871
e44768b7 3872expected="2,push_vlan(vid=12,pcp=0),1,2,100"
247527db 3873AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
c06bba01 3874mv stdout expout
247527db 3875AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
c06bba01 3876
247527db 3877flow="in_port(2),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=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)"
50aa28fd 3878AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
c06bba01
JP
3879actual=`tail -1 stdout | sed 's/Datapath actions: //'`
3880
e44768b7 3881expected="push_vlan(vid=17,pcp=0),1,pop_vlan,push_vlan(vid=12,pcp=0),1,2,100"
247527db 3882AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
c06bba01 3883mv stdout expout
247527db 3884AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
c06bba01
JP
3885
3886OVS_VSWITCHD_STOP
3887AT_CLEANUP
b44a10b7 3888
22bb3cbc
AW
3889# Two testcases below are for the ofproto/trace command
3890# The first one tests all correct syntax:
3891# ofproto/trace [dp_name] odp_flow [-generate|packet]
3892# ofproto/trace br_name br_flow [-generate|packet]
3893AT_SETUP([ofproto-dpif - ofproto/trace command 1])
3894OVS_VSWITCHD_START([set bridge br0 fail-mode=standalone])
3895ADD_OF_PORTS([br0], 1, 2, 3)
3896
3897AT_DATA([flows.txt], [dnl
3898in_port=1 actions=output:2
3899in_port=2 actions=output:1
3900])
3901AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3902
c2a77f33 3903odp_flow="in_port(1)"
22bb3cbc 3904br_flow="in_port=1"
0a37839c
GS
3905# Test command: ofproto/trace odp_flow with in_port as a name.
3906AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
3907AT_CHECK([tail -1 stdout], [0], [dnl
3908Datapath actions: 2
3909])
3910
3911odp_flow="in_port(1)"
22bb3cbc
AW
3912# Test command: ofproto/trace odp_flow
3913AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
3914AT_CHECK([tail -1 stdout], [0], [dnl
3915Datapath actions: 2
3916])
3917
3918# Test command: ofproto/trace dp_name odp_flow
3919AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$odp_flow"], [0], [stdout])
3920AT_CHECK([tail -1 stdout], [0], [dnl
3921Datapath actions: 2
3922])
3923# Test commmand: ofproto/trace br_name br_flow
3924AT_CHECK([ovs-appctl ofproto/trace br0 "$br_flow"], [0], [stdout])
3925AT_CHECK([tail -1 stdout], [0], [dnl
3926Datapath actions: 2
3927])
3928
3929# Delete the inserted flows
3930AT_CHECK([ovs-ofctl del-flows br0 "in_port=1"], [0], [stdout])
3931AT_CHECK([ovs-ofctl del-flows br0 "in_port=2"], [0], [stdout])
3932
78c9486d 3933# This section below tests the [-generate] option
22bb3cbc 3934odp_flow="in_port(3),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff)"
78c9486d 3935br_flow="arp,in_port=3,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=ff:ff:ff:ff:ff:ff"
22bb3cbc
AW
3936
3937# Test command: ofproto/trace odp_flow
3938AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
3939# Check for no MAC learning entry
3940AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
3941 port VLAN MAC Age
3942])
3943
3944# Test command: ofproto/trace br_name br_flow
3945AT_CHECK([ovs-appctl ofproto/trace br0 "$br_flow"], [0], [stdout])
3946# Check for no MAC learning entry
3947AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
3948 port VLAN MAC Age
3949])
3950
3951# Test command: ofproto/trace odp_flow -generate
3952AT_CHECK([ovs-appctl ofproto/trace "$odp_flow" -generate], [0], [stdout])
3953# Check for the MAC learning entry
3954AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
3955 port VLAN MAC Age
3956 3 0 50:54:00:00:00:05 ?
3957])
3958
3959# Test command: ofproto/trace dp_name odp_flow -generate
3960AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
3961 "in_port(1),eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:05)" \
3962 -generate], [0], [stdout])
3963# Check for both MAC learning entries
3964AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
3965 port VLAN MAC Age
3966 3 0 50:54:00:00:00:05 ?
3967 1 0 50:54:00:00:00:06 ?
3968])
3969
3970# Test command: ofproto/trace br_name br_flow -generate
3971AT_CHECK([ovs-appctl ofproto/trace br0 \
3972 "in_port=2,dl_src=50:54:00:00:00:07,dl_dst=50:54:00:00:00:06" \
3973 -generate], [0], [stdout])
3974# Check for both MAC learning entries.
3975AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
3976 port VLAN MAC Age
3977 3 0 50:54:00:00:00:05 ?
3978 1 0 50:54:00:00:00:06 ?
3979 2 0 50:54:00:00:00:07 ?
3980])
3981
3982# This section beflow tests the [packet] option
3983# The ovs-tcpundump of packets between port1 and port2
3984pkt1to2="50540000000250540000000108064500001C000100004001F98CC0A80001C0A800020800F7FF00000000"
3985pkt2to1="50540000000150540000000208064500001C000100004001F98CC0A80002C0A800010800F7FF00000000"
3986
3987# Construct the MAC learning table
3988AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
3989 "in_port(1),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff)" \
3990 -generate], [0], [stdout])
3991
3992# Construct the MAC learning table
3993AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
3994 "in_port(2),eth(src=50:54:00:00:00:02,dst=ff:ff:ff:ff:ff:ff)" \
3995 -generate], [0], [stdout])
3996
3997# Test command: ofproto/trace odp_flow packet
3998AT_CHECK([ovs-appctl ofproto/trace \
3999 "in_port(1),skb_priority(1),skb_mark(2)" "$pkt1to2"], [0], [stdout])
4000AT_CHECK([tail -1 stdout], [0], [dnl
4001Datapath actions: 2
4002])
b6f00895 4003AT_CHECK([head -n 2 stdout], [0], [dnl
22bb3cbc 4004Bridge: br0
78c9486d 4005Flow: pkt_mark=0x2,skb_priority=0x1,arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:01,dl_dst=50:54:00:00:00:02,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=0,arp_sha=00:00:00:00:00:00,arp_tha=00:00:00:00:00:00
22bb3cbc
AW
4006])
4007
4008# Test command: ofproto/trace dp_name odp_flow packet
4009AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4010 "in_port(1),skb_priority(1),skb_mark(2)" "$pkt1to2"], [0], [stdout])
4011AT_CHECK([tail -1 stdout], [0], [dnl
4012Datapath actions: 2
4013])
b6f00895 4014AT_CHECK([head -n 2 stdout], [0], [dnl
22bb3cbc 4015Bridge: br0
78c9486d 4016Flow: pkt_mark=0x2,skb_priority=0x1,arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:01,dl_dst=50:54:00:00:00:02,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=0,arp_sha=00:00:00:00:00:00,arp_tha=00:00:00:00:00:00
22bb3cbc
AW
4017])
4018
4019# Test command: ofproto/trace br_name br_flow packet
4020AT_CHECK([ovs-appctl ofproto/trace br0 \
1362e248 4021 "in_port=2,skb_priority=2,pkt_mark=1" "$pkt2to1"], [0], [stdout],[stderr])
22bb3cbc 4022AT_CHECK([tail -1 stdout], [0], [dnl
ed2e7245 4023Datapath actions: 1
22bb3cbc
AW
4024])
4025AT_CHECK([head -n 2 stdout], [0], [dnl
b6f00895 4026Bridge: br0
78c9486d 4027Flow: pkt_mark=0x1,skb_priority=0x2,arp,in_port=2,vlan_tci=0x0000,dl_src=50:54:00:00:00:02,dl_dst=50:54:00:00:00:01,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=0,arp_sha=00:00:00:00:00:00,arp_tha=00:00:00:00:00:00
22bb3cbc
AW
4028])
4029
4030OVS_VSWITCHD_STOP
4031AT_CLEANUP
4032
4033# The second test tests the corner cases
4034AT_SETUP([ofproto-dpif - ofproto/trace command 2])
4035OVS_VSWITCHD_START
4036ADD_OF_PORTS([br0], 1, 2)
4037
4038# Define flows
4039odp_flow="in_port(1),eth(src=50:54:00:00:00:01,dst=50:54:00:00:00:02)"
4040br_flow="in_port=1,dl_src=50:54:00:00:00:01,dl_dst=50:54:00:00:00:02"
4041# Define options
4042generate="-generate"
4043pkt="50540000000250540000000108064500001C000100004001F98CC0A80001C0A800020800F7FF00000000"
4044
4045# Test incorrect command: ofproto/trace wrong_name odp_flow [-generate|packet]
4046m4_foreach(
4047[option],
4048[[],
4049["$generate"],
4050["$pkt"]],
4051[AT_CHECK([ovs-appctl ofproto/trace wrong_name "$odp_flow" option],
4052 [2], [], [stderr])
4053AT_CHECK([tail -2 stderr], [0], [dnl
0a37839c 4054Cannot find the datapath
22bb3cbc
AW
4055ovs-appctl: ovs-vswitchd: server returned an error
4056])])
4057
4058# Test incorrect command: ofproto/trace empty_string odp_flow [-generate|packet]
4059m4_foreach(
4060[option],
4061[[],
4062["$generate"],
4063["$pkt"]],
4064[AT_CHECK([ovs-appctl ofproto/trace "" "$odp_flow" option],
4065 [2], [], [stderr])
4066AT_CHECK([tail -2 stderr], [0], [dnl
0a37839c 4067Cannot find the datapath
22bb3cbc
AW
4068ovs-appctl: ovs-vswitchd: server returned an error
4069])])
4070
4071# Test incorrect command: ofproto/trace nonexist_dp_name odp_flow [-generate|packet]
4072m4_foreach(
4073[option],
4074[[],
4075["$generate"],
4076["$pkt"]],
4077[AT_CHECK([ovs-appctl ofproto/trace ovs-system "$odp_flow" option],
4078 [2], [], [stderr])
4079AT_CHECK([tail -2 stderr], [0], [dnl
0a37839c 4080Cannot find the datapath
22bb3cbc
AW
4081ovs-appctl: ovs-vswitchd: server returned an error
4082])])
4083
4084# Test incorrect command: ofproto/trace br_name odp_flow [-generate|packet]
4085m4_foreach(
4086[option],
4087[[],
4088["$generate"],
4089["$pkt"]],
4090[AT_CHECK([ovs-appctl ofproto/trace br0 "$odp_flow" option],
4091 [2], [], [stderr])
4092AT_CHECK([tail -2 stderr], [0], [dnl
0a37839c 4093Cannot find the datapath
22bb3cbc
AW
4094ovs-appctl: ovs-vswitchd: server returned an error
4095])])
4096
4097# Test incorrect command: ofproto/trace dp_name br_flow [-generate|packet]
4098m4_foreach(
4099[option],
4100[[],
4101["$generate"],
4102["$pkt"]],
4103[AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$br_flow" option],
4104 [2], [], [stderr])
4105AT_CHECK([tail -2 stderr], [0], [dnl
4106Unknown bridge name
4107ovs-appctl: ovs-vswitchd: server returned an error
4108])])
4109
4110# Test incorrect command: ofproto/trace br_flow [-generate|packet]
4111m4_foreach(
4112[option],
4113[[],
4114["$generate"],
4115["$pkt"]],
4116[AT_CHECK([ovs-appctl ofproto/trace "$br_flow" option],
4117 [2], [], [stderr])
4118AT_CHECK([tail -2 stderr], [0], [dnl
4119Must specify bridge name
4120ovs-appctl: ovs-vswitchd: server returned an error
4121])])
4122
4123# Test incorrect command: ofproto/trace dp_name odp_flow garbage_option
4124AT_CHECK([ovs-appctl ofproto/trace \
4125 ovs-dummy "$odp_flow" garbage_option],
4126 [2], [stdout],[stderr])
4127AT_CHECK([tail -2 stderr], [0], [dnl
4128Trailing garbage in packet data
4129ovs-appctl: ovs-vswitchd: server returned an error
4130])
4131
4132# Test incorrect command: ofproto/trace with 4 arguments
4133AT_CHECK([ovs-appctl ofproto/trace \
4134 arg1, arg2, arg3, arg4], [2], [stdout],[stderr])
4135AT_CHECK([tail -2 stderr], [0], [dnl
4136"ofproto/trace" command takes at most 3 arguments
4137ovs-appctl: ovs-vswitchd: server returned an error
4138])
4139
4140# Test incorrect command: ofproto/trace with 0 argument
4141AT_CHECK([ovs-appctl ofproto/trace ], [2], [stdout],[stderr])
4142AT_CHECK([tail -2 stderr], [0], [dnl
4143"ofproto/trace" command requires at least 1 arguments
4144ovs-appctl: ovs-vswitchd: server returned an error
4145])
4146
4147OVS_VSWITCHD_STOP
4148AT_CLEANUP
4149
aee0979b
BP
4150AT_SETUP([ofproto-dpif - ofproto/trace-packet-out])
4151OVS_VSWITCHD_START
4152ADD_OF_PORTS([br0], 1, 2, 3)
4153
4154AT_DATA([flows.txt], [dnl
4155in_port=1 actions=output:2
4156in_port=2 actions=output:1
4157])
4158AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4159
4160AT_CHECK([ovs-appctl ofproto/trace-packet-out br0 in_port=1 'mod_vlan_vid:123,resubmit(,0)'], [0], [stdout])
4161AT_CHECK([tail -1 stdout], [0], [dnl
4162Datapath actions: push_vlan(vid=123,pcp=0),2
4163])
4164
4165OVS_VSWITCHD_STOP
4166AT_CLEANUP
4167
4168
b44a10b7
BP
4169m4_define([OFPROTO_TRACE],
4170 [flow="$2"
4171 AT_CHECK([ovs-appctl ofproto/trace $1 "$flow" $3], [0], [stdout])
4172 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4173 expected="$4"
4174 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected" $5],
4175 [0], [stdout])
4176 mv stdout expout
4177 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual" $5],
4178 [0], [expout])])
4179
4180AT_SETUP([ofproto-dpif - MAC learning])
432fca23
BP
4181OVS_VSWITCHD_START([set bridge br0 fail-mode=standalone])
4182ADD_OF_PORTS([br0], 1, 2, 3)
b44a10b7 4183
b44a10b7
BP
4184arp='eth_type(0x0806),arp(sip=192.168.0.1,tip=192.168.0.2,op=1,sha=50:54:00:00:00:05,tha=00:00:00:00:00:00)'
4185
4186# Trace an ARP packet arriving on p3, to create a MAC learning entry.
4187OFPROTO_TRACE(
50aa28fd 4188 [ovs-dummy],
247527db 4189 [in_port(3),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff),$arp],
b44a10b7 4190 [-generate],
e44768b7 4191 [1,2,100])
b44a10b7
BP
4192
4193# Check for the MAC learning entry.
83664f72 4194AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
b44a10b7 4195 port VLAN MAC Age
247527db 4196 3 0 50:54:00:00:00:05 ?
b44a10b7
BP
4197])
4198
4199# Trace a packet arrival destined for the learned MAC.
4200# (This will also learn a MAC.)
4201OFPROTO_TRACE(
50aa28fd 4202 [ovs-dummy],
247527db 4203 [in_port(1),eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:05),$arp],
b44a10b7 4204 [-generate],
247527db 4205 [3])
b44a10b7
BP
4206
4207# Check for both MAC learning entries.
83664f72 4208AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
b44a10b7 4209 port VLAN MAC Age
247527db
BP
4210 3 0 50:54:00:00:00:05 ?
4211 1 0 50:54:00:00:00:06 ?
b44a10b7
BP
4212])
4213
4214# Trace a packet arrival that updates the first learned MAC entry.
4215OFPROTO_TRACE(
50aa28fd 4216 [ovs-dummy],
247527db 4217 [in_port(2),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff),$arp],
b44a10b7 4218 [-generate],
e44768b7 4219 [1,3,100])
b44a10b7
BP
4220
4221# Check that the MAC learning entry was updated.
83664f72 4222AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
b44a10b7 4223 port VLAN MAC Age
247527db
BP
4224 1 0 50:54:00:00:00:06 ?
4225 2 0 50:54:00:00:00:05 ?
b44a10b7
BP
4226])
4227
4228# Add another bridge.
4229AT_CHECK(
4230 [ovs-vsctl \
4231 -- add-br br1 \
ad28062f
BP
4232 -- set bridge br1 datapath-type=dummy])
4233ADD_OF_PORTS([br1], 4, 5)
b44a10b7
BP
4234
4235# Trace some packet arrivals in br1 to create MAC learning entries there too.
4236OFPROTO_TRACE(
50aa28fd 4237 [ovs-dummy],
247527db 4238 [in_port(4),eth(src=50:54:00:00:00:06,dst=ff:ff:ff:ff:ff:ff),$arp],
b44a10b7 4239 [-generate],
e44768b7 4240 [5,101])
b44a10b7 4241OFPROTO_TRACE(
50aa28fd 4242 [ovs-dummy],
247527db 4243 [in_port(5),eth(src=50:54:00:00:00:07,dst=ff:ff:ff:ff:ff:ff),$arp],
b44a10b7 4244 [-generate],
e44768b7 4245 [4,101])
b44a10b7
BP
4246
4247# Check that the MAC learning entries were added.
83664f72 4248AT_CHECK_UNQUOTED([ovs-appctl fdb/show br1 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
b44a10b7 4249 port VLAN MAC Age
247527db
BP
4250 4 0 50:54:00:00:00:06 ?
4251 5 0 50:54:00:00:00:07 ?
b44a10b7
BP
4252])
4253
4254# Delete port p1 and see that its MAC learning entry disappeared, and
4255# that the MAC learning entry for the same MAC was also deleted from br1.
4256AT_CHECK([ovs-vsctl del-port p1])
83664f72 4257AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
b44a10b7 4258 port VLAN MAC Age
247527db 4259 2 0 50:54:00:00:00:05 ?
b44a10b7 4260])
83664f72 4261AT_CHECK_UNQUOTED([ovs-appctl fdb/show br1 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
b44a10b7 4262 port VLAN MAC Age
247527db 4263 5 0 50:54:00:00:00:07 ?
b44a10b7
BP
4264])
4265
4266OVS_VSWITCHD_STOP
4267AT_CLEANUP
17f7f7e0 4268
c4069512
BP
4269AT_SETUP([ofproto-dpif - MAC table overflow])
4270OVS_VSWITCHD_START(
ad28062f
BP
4271 [set bridge br0 fail-mode=standalone other-config:mac-table-size=10])
4272ADD_OF_PORTS([br0], 1, 2, 3)
c4069512
BP
4273
4274arp='eth_type(0x0806),arp(sip=192.168.0.1,tip=192.168.0.2,op=1,sha=50:54:00:00:00:05,tha=00:00:00:00:00:00)'
4275
4276AT_CHECK([ovs-appctl time/stop])
4277
4278# Trace 10 ARP packets arriving on p3, to create MAC learning entries.
4279for i in 0 1 2 3 4 5 6 7 8 9; do
4280 OFPROTO_TRACE(
50aa28fd 4281 [ovs-dummy],
c4069512
BP
4282 [in_port(3),eth(src=50:54:00:00:00:0$i,dst=ff:ff:ff:ff:ff:ff),$arp],
4283 [-generate],
4284 [1,2,100])
4285 ovs-appctl time/warp 1000
4286done
4287
4288# Check for the MAC learning entries.
4289AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4290 [0], [dnl
4291 3 0 50:54:00:00:00:00
4292 3 0 50:54:00:00:00:01
4293 3 0 50:54:00:00:00:02
4294 3 0 50:54:00:00:00:03
4295 3 0 50:54:00:00:00:04
4296 3 0 50:54:00:00:00:05
4297 3 0 50:54:00:00:00:06
4298 3 0 50:54:00:00:00:07
4299 3 0 50:54:00:00:00:08
4300 3 0 50:54:00:00:00:09
4301 port VLAN MAC Age
4302])
4303
4304# Trace another ARP packet on another MAC.
4305OFPROTO_TRACE(
50aa28fd 4306 [ovs-dummy],
c4069512
BP
4307 [in_port(3),eth(src=50:54:00:00:00:10,dst=ff:ff:ff:ff:ff:ff),$arp],
4308 [-generate],
4309 [1,2,100])
4310
4311# Check that the new one chased the oldest one out of the table.
4312AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/' | sort],
4313 [0], [dnl
4314 3 0 50:54:00:00:00:01 ?
4315 3 0 50:54:00:00:00:02 ?
4316 3 0 50:54:00:00:00:03 ?
4317 3 0 50:54:00:00:00:04 ?
4318 3 0 50:54:00:00:00:05 ?
4319 3 0 50:54:00:00:00:06 ?
4320 3 0 50:54:00:00:00:07 ?
4321 3 0 50:54:00:00:00:08 ?
4322 3 0 50:54:00:00:00:09 ?
4323 3 0 50:54:00:00:00:10 ?
4324 port VLAN MAC Age
4325])
4326OVS_VSWITCHD_STOP
4327AT_CLEANUP
4328
e731d71b
AS
4329# CHECK_SFLOW_SAMPLING_PACKET(LOOPBACK_ADDR, ADDR_WITHOUT_BRACKETS)
4330#
4331# Test that sFlow samples packets correctly using IPv4/IPv6 sFlow collector
4332#
4333# IP_VERSION_TYPE is used in AT_SETUP
4334m4_define([CHECK_SFLOW_SAMPLING_PACKET],
4335 [AT_SETUP([ofproto-dpif - sFlow packet sampling - $2 collector])
0af89118 4336 AT_XFAIL_IF([test "$IS_WIN32" = "yes"])
e731d71b
AS
4337 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
4338
4339 ON_EXIT([kill `cat test-sflow.pid`])
eadd1644 4340 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:$1 > sflow.log], [0], [], [ignore])
e731d71b 4341 AT_CAPTURE_FILE([sflow.log])
b52ecd96 4342 SFLOW_PORT=`parse_listening_port < test-sflow.log`
e731d71b
AS
4343 ovs-appctl time/stop
4344
4345 ADD_OF_PORTS([br0], 1, 2)
4346 ovs-vsctl \
4347 set Interface br0 options:ifindex=1002 -- \
4348 set Interface p1 options:ifindex=1004 -- \
4349 set Interface p2 options:ifindex=1003 -- \
4350 set Bridge br0 sflow=@sf -- \
4351 --id=@sf create sflow targets=\"$1:$SFLOW_PORT\" \
9a9808d7 4352 header=128 sampling=1 polling=1 agent=$LOOPBACK_INTERFACE
e731d71b
AS
4353
4354 dnl open with ARP packets to seed the bridge-learning. The output
4355 dnl ifIndex numbers should be reported predictably after that.
4356 dnl Since we set sampling=1 we should see all of these packets
4357 dnl reported. Sorting the output by data-source and seqNo makes
4358 dnl it deterministic. Ensuring that we send at least two packets
4359 dnl into each port means we get to check the seq nos are
4360 dnl incrementing correctly.
4361 dnl because packets from different ports can be handled by separate
4362 dnl threads, put some sleeps
4363
4364 ovs-appctl netdev-dummy/receive p1 'in_port(2),eth(src=50:54:00:00:00:05,dst=FF:FF:FF:FF:FF:FF),eth_type(0x0806),arp(sip=192.168.0.2,tip=192.168.0.1,op=1,sha=50:54:00:00:00:05,tha=00:00:00:00:00:00)'
4365 sleep 1
4366 ovs-appctl netdev-dummy/receive p2 'in_port(1),eth(src=50:54:00:00:00:07,dst=FF:FF:FF:FF:FF:FF),eth_type(0x0806),arp(sip=192.168.0.1,tip=192.168.0.2,op=1,sha=50:54:00:00:00:07,tha=00:00:00:00:00:00)'
4367 sleep 1
4368 ovs-appctl netdev-dummy/receive p1 'in_port(2),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=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'
4369 sleep 1
4370 ovs-appctl netdev-dummy/receive p2 'in_port(1),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=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0)'
4371 ovs-appctl netdev-dummy/receive p2 'in_port(1),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x86dd),ipv6(src=fe80::1,dst=fe80::2,label=0,proto=10,tclass=0x70,hlimit=128,frag=no)'
4372
4373 dnl sleep long enough to get more than one counter sample
4374 dnl from each datasource so we can check sequence numbers
bdba1947 4375 ovs-appctl time/warp 3000 100
e731d71b
AS
4376 OVS_VSWITCHD_STOP
4377 ovs-appctl -t test-sflow exit
8073dd31 4378
e731d71b 4379 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
8073dd31
NM
4380 /g']], [0], [dnl
4381HEADER
4382 dgramSeqNo=1
743cea45 4383 ds=127.0.0.1>2:1000
8073dd31
NM
4384 fsSeqNo=1
4385 in_vlan=0
4386 in_priority=0
4387 out_vlan=0
4388 out_priority=0
4389 meanSkip=1
4390 samplePool=1
4391 dropEvents=0
743cea45 4392 in_ifindex=1004
8073dd31
NM
4393 in_format=0
4394 out_ifindex=2
4395 out_format=2
4396 hdr_prot=1
4397 pkt_len=64
4398 stripped=4
4399 hdr_len=60
743cea45 4400 hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-05-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-05-C0-A8-00-02-00-00-00-00-00-00-C0-A8-00-01-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
8073dd31
NM
4401HEADER
4402 dgramSeqNo=1
743cea45 4403 ds=127.0.0.1>2:1000
8073dd31
NM
4404 fsSeqNo=2
4405 in_vlan=0
4406 in_priority=0
4407 out_vlan=0
4408 out_priority=0
4409 meanSkip=1
4410 samplePool=2
4411 dropEvents=0
4412 in_ifindex=1003
4413 in_format=0
743cea45
NM
4414 out_ifindex=2
4415 out_format=2
8073dd31
NM
4416 hdr_prot=1
4417 pkt_len=64
4418 stripped=4
4419 hdr_len=60
743cea45 4420 hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-07-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-07-C0-A8-00-01-00-00-00-00-00-00-C0-A8-00-02-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
8073dd31
NM
4421HEADER
4422 dgramSeqNo=1
743cea45 4423 ds=127.0.0.1>2:1000
8073dd31
NM
4424 fsSeqNo=3
4425 in_vlan=0
4426 in_priority=0
4427 out_vlan=0
4428 out_priority=0
4429 meanSkip=1
4430 samplePool=3
4431 dropEvents=0
743cea45 4432 in_ifindex=1004
8073dd31 4433 in_format=0
743cea45 4434 out_ifindex=1003
8073dd31
NM
4435 out_format=0
4436 hdr_prot=1
4437 pkt_len=64
4438 stripped=4
4439 hdr_len=60
743cea45 4440 hdr=50-54-00-00-00-07-50-54-00-00-00-05-08-00-45-00-00-1C-00-00-00-00-40-01-F9-8D-C0-A8-00-01-C0-A8-00-02-08-00-F7-FF-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
8073dd31
NM
4441HEADER
4442 dgramSeqNo=1
743cea45
NM
4443 ds=127.0.0.1>2:1000
4444 fsSeqNo=4
8073dd31
NM
4445 in_vlan=0
4446 in_priority=0
4447 out_vlan=0
4448 out_priority=0
4449 meanSkip=1
743cea45 4450 samplePool=4
8073dd31 4451 dropEvents=0
743cea45 4452 in_ifindex=1003
8073dd31 4453 in_format=0
743cea45
NM
4454 out_ifindex=1004
4455 out_format=0
8073dd31
NM
4456 hdr_prot=1
4457 pkt_len=64
4458 stripped=4
4459 hdr_len=60
743cea45 4460 hdr=50-54-00-00-00-05-50-54-00-00-00-07-08-00-45-00-00-1C-00-00-00-00-40-01-F9-8D-C0-A8-00-02-C0-A8-00-01-00-00-FF-FF-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
8073dd31
NM
4461HEADER
4462 dgramSeqNo=1
743cea45
NM
4463 ds=127.0.0.1>2:1000
4464 fsSeqNo=5
8073dd31
NM
4465 in_vlan=0
4466 in_priority=0
4467 out_vlan=0
4468 out_priority=0
4469 meanSkip=1
743cea45 4470 samplePool=5
8073dd31 4471 dropEvents=0
743cea45 4472 in_ifindex=1003
8073dd31 4473 in_format=0
743cea45 4474 out_ifindex=1004
8073dd31
NM
4475 out_format=0
4476 hdr_prot=1
4477 pkt_len=64
4478 stripped=4
4479 hdr_len=60
52105b67 4480 hdr=50-54-00-00-00-05-50-54-00-00-00-07-86-DD-67-00-00-00-00-00-0A-80-FE-80-00-00-00-00-00-00-00-00-00-00-00-00-00-01-FE-80-00-00-00-00-00-00-00-00-00-00-00-00-00-02-00-00-00-00-00-00
8073dd31
NM
4481])
4482
50b9699f 4483 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'IFCOUNTERS|ERROR|PORTNAME|OPENFLOWPORT' | head -18 | sed 's/ /\
8073dd31
NM
4484 /g']], [0], [dnl
4485IFCOUNTERS
4486 dgramSeqNo=2
4487 ds=127.0.0.1>0:1002
4488 csSeqNo=1
4489 ifindex=1002
4490 type=6
4491 ifspeed=100000000
4492 direction=0
1839c356 4493 status=0
8073dd31
NM
4494 in_octets=0
4495 in_unicasts=0
4496 in_multicasts=0
4497 in_broadcasts=4294967295
4498 in_discards=0
4499 in_errors=0
4500 in_unknownprotos=4294967295
4501 out_octets=120
4502 out_unicasts=2
4503 out_multicasts=4294967295
4504 out_broadcasts=4294967295
4505 out_discards=0
4506 out_errors=0
4507 promiscuous=0
4508IFCOUNTERS
4509 dgramSeqNo=2
4510 ds=127.0.0.1>0:1003
4511 csSeqNo=1
4512 ifindex=1003
4513 type=6
4514 ifspeed=100000000
4515 direction=0
4516 status=0
52105b67 4517 in_octets=138
8073dd31
NM
4518 in_unicasts=3
4519 in_multicasts=0
4520 in_broadcasts=4294967295
4521 in_discards=0
4522 in_errors=0
4523 in_unknownprotos=4294967295
4524 out_octets=120
4525 out_unicasts=2
4526 out_multicasts=4294967295
4527 out_broadcasts=4294967295
4528 out_discards=0
4529 out_errors=0
4530 promiscuous=0
4531IFCOUNTERS
4532 dgramSeqNo=2
4533 ds=127.0.0.1>0:1004
4534 csSeqNo=1
4535 ifindex=1004
4536 type=6
4537 ifspeed=100000000
4538 direction=0
4539 status=0
4540 in_octets=84
4541 in_unicasts=2
4542 in_multicasts=0
4543 in_broadcasts=4294967295
4544 in_discards=0
4545 in_errors=0
4546 in_unknownprotos=4294967295
4547 out_octets=180
4548 out_unicasts=3
4549 out_multicasts=4294967295
4550 out_broadcasts=4294967295
4551 out_discards=0
4552 out_errors=0
4553 promiscuous=0
4554IFCOUNTERS
4555 dgramSeqNo=3
4556 ds=127.0.0.1>0:1002
4557 csSeqNo=2
4558 ifindex=1002
4559 type=6
4560 ifspeed=100000000
4561 direction=0
1839c356 4562 status=0
8073dd31
NM
4563 in_octets=0
4564 in_unicasts=0
4565 in_multicasts=0
4566 in_broadcasts=4294967295
4567 in_discards=0
4568 in_errors=0
4569 in_unknownprotos=4294967295
4570 out_octets=120
4571 out_unicasts=2
4572 out_multicasts=4294967295
4573 out_broadcasts=4294967295
4574 out_discards=0
4575 out_errors=0
4576 promiscuous=0
4577IFCOUNTERS
4578 dgramSeqNo=3
4579 ds=127.0.0.1>0:1003
4580 csSeqNo=2
4581 ifindex=1003
4582 type=6
4583 ifspeed=100000000
4584 direction=0
4585 status=0
52105b67 4586 in_octets=138
8073dd31
NM
4587 in_unicasts=3
4588 in_multicasts=0
4589 in_broadcasts=4294967295
4590 in_discards=0
4591 in_errors=0
4592 in_unknownprotos=4294967295
4593 out_octets=120
4594 out_unicasts=2
4595 out_multicasts=4294967295
4596 out_broadcasts=4294967295
4597 out_discards=0
4598 out_errors=0
4599 promiscuous=0
4600IFCOUNTERS
4601 dgramSeqNo=3
4602 ds=127.0.0.1>0:1004
4603 csSeqNo=2
4604 ifindex=1004
4605 type=6
4606 ifspeed=100000000
4607 direction=0
4608 status=0
4609 in_octets=84
4610 in_unicasts=2
4611 in_multicasts=0
4612 in_broadcasts=4294967295
4613 in_discards=0
4614 in_errors=0
4615 in_unknownprotos=4294967295
4616 out_octets=180
4617 out_unicasts=3
4618 out_multicasts=4294967295
4619 out_broadcasts=4294967295
4620 out_discards=0
4621 out_errors=0
4622 promiscuous=0
50b9699f
NM
4623OPENFLOWPORT
4624 datapath_id=18364758544493064720
4625 port_no=1
4626OPENFLOWPORT
4627 datapath_id=18364758544493064720
4628 port_no=1
4629OPENFLOWPORT
4630 datapath_id=18364758544493064720
4631 port_no=2
4632OPENFLOWPORT
4633 datapath_id=18364758544493064720
4634 port_no=2
4635OPENFLOWPORT
4636 datapath_id=18364758544493064720
4637 port_no=65534
4638OPENFLOWPORT
4639 datapath_id=18364758544493064720
4640 port_no=65534
4641PORTNAME
4642 portName=br0
4643PORTNAME
4644 portName=br0
4645PORTNAME
4646 portName=p1
4647PORTNAME
4648 portName=p1
4649PORTNAME
4650 portName=p2
4651PORTNAME
4652 portName=p2
8073dd31 4653])
e731d71b 4654 AT_CLEANUP])
17f7f7e0 4655
e731d71b
AS
4656CHECK_SFLOW_SAMPLING_PACKET([127.0.0.1], [IPv4])
4657CHECK_SFLOW_SAMPLING_PACKET([[[::1]]], [IPv6])
1e04fcc8 4658
50b9699f
NM
4659dnl Test sFlow LAG structures
4660AT_SETUP([ofproto-dpif - sFlow LACP structures])
80ee73d3 4661AT_SKIP_IF([test "$IS_WIN32" = "yes"])
50b9699f
NM
4662OVS_VSWITCHD_START([dnl
4663 add-bond br0 bond p1 p2 -- \
4664 set Port bond lacp=active bond-mode=active-backup \
4665 other_config:lacp-time="fast" \
4666 other_config:lacp-system-id=11:22:33:44:55:66 \
4667 other_config:lacp-system-priority=54321 -- \
4668 set Interface p1 type=dummy \
4669 other_config:lacp-port-id=11 \
4670 other_config:lacp-port-priority=111 \
4671 other_config:lacp-aggregation-key=3333 -- \
4672 set Interface p2 type=dummy \
4673 other_config:lacp-port-id=22 \
4674 other_config:lacp-port-priority=222 \
4675 other_config:lacp-aggregation-key=3333 ])
4676
4677ON_EXIT([kill `cat test-sflow.pid`])
4678AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
4679AT_CAPTURE_FILE([sflow.log])
4680SFLOW_PORT=`parse_listening_port < test-sflow.log`
4681
4682ovs-appctl time/stop
4683
4684ovs-vsctl \
4685 set Interface p1 options:ifindex=1003 -- \
4686 set Bridge br0 sflow=@sf -- \
4687 --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
4688 header=128 sampling=1 polling=1
4689
4690dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
4691for i in `seq 1 30`; do
4692 ovs-appctl time/warp 100
4693done
4694OVS_VSWITCHD_STOP
4695ovs-appctl -t test-sflow exit
4696AT_CHECK([[sort sflow.log | $EGREP 'LACPCOUNTERS|ERROR' | head -n 1 | sed 's/ /\
4697 /g']], [0], [dnl
4698LACPCOUNTERS
4699 sysID=11:22:33:44:55:66
4700 partnerID=00:00:00:00:00:00
4701 aggID=3333
4702 actorAdmin=0x7
4703 actorOper=0xbf
4704 partnerAdmin=0x0
4705 partnerOper=0x2
4706 LACPUDsRx=0
4707 markerPDUsRx=4294967295
4708 markerRespPDUsRx=4294967295
4709 unknownRx=4294967295
4710 illegalRx=0
4711 LACPUDsTx=1
4712 markerPDUsTx=4294967295
4713 markerRespPDUsTx=4294967295
4714])
4715
4716AT_CLEANUP
4717
e731d71b
AS
4718# CHECK_NETFLOW_EXPIRATION(LOOPBACK_ADDR, IP_VERSION_TYPE)
4719#
4720# Test that basic NetFlow reports flow statistics correctly:
4721# The initial packet of a flow are correctly accounted.
4722# Later packets within a flow are correctly accounted.
4723# Flow actions changing (in this case, due to MAC learning)
4724# cause a record to be sent.
4725#
4726# IP_VERSION_TYPE is used in AT_SETUP
4727m4_define([CHECK_NETFLOW_EXPIRATION],
4728 [AT_SETUP([ofproto-dpif - NetFlow flow expiration - $2 collector])
4729 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
4730 ADD_OF_PORTS([br0], 1, 2)
4731
4732 ovs-appctl time/stop
4733 ON_EXIT([kill `cat test-netflow.pid`])
eadd1644 4734 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
e731d71b 4735 AT_CAPTURE_FILE([netflow.log])
b52ecd96 4736 NETFLOW_PORT=`parse_listening_port < test-netflow.log`
e731d71b
AS
4737
4738 ovs-vsctl \
4739 set Bridge br0 netflow=@nf -- \
4740 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
4741 engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
4742
4743 for delay in 1000 30000; do
4744 ovs-appctl netdev-dummy/receive p1 'in_port(2),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=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'
5788e39f 4745 sleep 1 # ensure the order in which these two packets are processed
e731d71b
AS
4746 ovs-appctl netdev-dummy/receive p2 'in_port(1),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=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0)'
4747
4748 ovs-appctl time/warp $delay
4749 done
17f7f7e0 4750
e731d71b 4751 ovs-appctl time/warp 6000
27f57736 4752 ovs-appctl revalidator/wait
e731d71b
AS
4753 OVS_VSWITCHD_STOP
4754 ovs-appctl -t test-netflow exit
e79a6c83 4755
e731d71b 4756 AT_CHECK([test `grep "192.168.0.1 > 192.168.0.2, if 1 > 65535, 1 pkts, 60 bytes, ICMP 8:0" netflow.log | wc -l` -eq 1])
e79a6c83 4757
e731d71b 4758 AT_CHECK([test `grep "192.168.0.1 > 192.168.0.2, if 1 > 2, 1 pkts, 60 bytes, ICMP 8:0" netflow.log | wc -l` -eq 1])
e79a6c83 4759
e731d71b
AS
4760 combined=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 2 pkts, 120 bytes, ICMP 0:0" netflow.log | wc -l`
4761 separate=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 1 pkts, 60 bytes, ICMP 0:0" netflow.log | wc -l`
4762 AT_CHECK([test $separate = 2 || test $combined = 1], [0])
17f7f7e0 4763
e731d71b 4764 AT_CLEANUP])
17f7f7e0 4765
e731d71b
AS
4766CHECK_NETFLOW_EXPIRATION([127.0.0.1], [IPv4])
4767CHECK_NETFLOW_EXPIRATION([[[::1]]], [IPv6])
1e04fcc8 4768
e731d71b
AS
4769# CHECK_NETFLOW_ACTIVE_EXPIRATION(LOOPBACK_ADDR, IP_VERSION_TYPE)
4770#
4771# Test that basic NetFlow reports active expirations correctly.
4772#
4773# IP_VERSION_TYPE is used in AT_SETUP
4774m4_define([CHECK_NETFLOW_ACTIVE_EXPIRATION],
4775 [AT_SETUP([ofproto-dpif - NetFlow active expiration - $2 collector])
1e04fcc8 4776
e731d71b
AS
4777 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
4778 ADD_OF_PORTS([br0], 1, 2)
17f7f7e0 4779
e731d71b 4780 ON_EXIT([kill `cat test-netflow.pid`])
eadd1644 4781 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
e731d71b 4782 AT_CAPTURE_FILE([netflow.log])
b52ecd96 4783 NETFLOW_PORT=`parse_listening_port < test-netflow.log`
17f7f7e0 4784
e731d71b
AS
4785 ovs-vsctl \
4786 set Bridge br0 netflow=@nf -- \
4787 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
4788 engine_id=1 engine_type=2 active_timeout=10 add-id-to-interface=false
17f7f7e0 4789
e731d71b
AS
4790 AT_CHECK([ovs-appctl time/stop])
4791 n=1
4792 while test $n -le 60; do
4793 n=`expr $n + 1`
17f7f7e0 4794
e731d71b
AS
4795 ovs-appctl netdev-dummy/receive p1 'in_port(2),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=1234,dst=80)'
4796 ovs-appctl netdev-dummy/receive p2 'in_port(1),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=1234)'
17f7f7e0 4797
e731d71b
AS
4798 ovs-appctl time/warp 1000
4799 done
17f7f7e0 4800
e731d71b
AS
4801 ovs-appctl time/warp 10000
4802
27f57736 4803 ovs-appctl revalidator/wait
e731d71b
AS
4804 OVS_VSWITCHD_STOP
4805 ovs-appctl -t test-netflow exit
4806
4807 # Count the number of reported packets:
4808 # - From source to destination before MAC learning kicks in (just one).
4809 # - From source to destination after that.
4810 # - From destination to source.
4811 n_learn=0
4812 n_in=0
4813 n_out=0
4814 n_other=0
4815 n_recs=0
4816 none=0
4817 while read line; do
4818 pkts=`echo "$line" | sed 's/.*, \([[0-9]]*\) pkts,.*/\1/'`
4819 case $pkts in
4820 [[0-9]]*) ;;
4821 *) continue ;;
4822 esac
4823
4824 case $line in
4825 "seq "*": 192.168.0.1 > 192.168.0.2, if 1 > 65535, "*" pkts, "*" bytes, TCP 1234 > 80, time "*)
4826 counter=n_learn
4827 ;;
4828 "seq "*": 192.168.0.1 > 192.168.0.2, if 1 > 2, "*" pkts, "*" bytes, TCP 1234 > 80, time "*)
4829 counter=n_in
4830 ;;
4831 "seq "*": 192.168.0.2 > 192.168.0.1, if 2 > 1, "*" pkts, "*" bytes, TCP 80 > 1234, time "*)
4832 counter=n_out
4833 ;;
4834 *)
4835 counter=n_other
4836 ;;
4837 esac
4838 eval $counter=\`expr \$$counter + \$pkts\`
4839 n_recs=`expr $n_recs + 1`
4840 done < netflow.log
4841
4842 # There should be exactly 1 MAC learning packet,
4843 # exactly 59 other packets in that direction,
4844 # and exactly 60 packets in the other direction.
4845 AT_CHECK([echo $n_learn $n_in $n_out $n_other], [0], [1 59 60 0
4846])
4847
4848 AT_CLEANUP])
4849
4850CHECK_NETFLOW_ACTIVE_EXPIRATION([127.0.0.1], [IPv4])
4851CHECK_NETFLOW_ACTIVE_EXPIRATION([[[::1]]], [IPv6])
f27f2134 4852
23a7d252
JS
4853AT_SETUP([ofproto-dpif - flow stats])
4854OVS_VSWITCHD_START
4855AT_CHECK([ovs-ofctl add-flow br0 "ip,actions=NORMAL"])
4856AT_CHECK([ovs-ofctl add-flow br0 "icmp,actions=NORMAL"])
4857
4858ovs-appctl time/stop
4859
4860for i in `seq 1 10`; do
4861 ovs-appctl netdev-dummy/receive br0 'in_port(0),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)'
4862done
4863
4864ovs-appctl time/warp 1000
27f57736 4865ovs-appctl revalidator/wait
23a7d252 4866
e96a5c24 4867AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
11f9de00 4868AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl
e96a5c24 4869 cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL
11f9de00 4870 cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=600, idle_age=1, ip actions=NORMAL
e96a5c24
JS
4871])
4872OVS_VSWITCHD_STOP
4873AT_CLEANUP
4874
4875AT_SETUP([ofproto-dpif - flow stats, set-n-threads])
4876OVS_VSWITCHD_START
4877AT_CHECK([ovs-ofctl add-flow br0 "ip,actions=NORMAL"])
4878AT_CHECK([ovs-ofctl add-flow br0 "icmp,actions=NORMAL"])
4879
4880ovs-appctl time/stop
4881
4882for i in `seq 1 10`; do
4883 ovs-appctl netdev-dummy/receive br0 'in_port(0),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)'
4884done
4885
4886ovs-appctl time/warp 100
4887AT_CHECK([ovs-vsctl set Open_vSwitch . other-config:n-revalidator-threads=2])
4888ovs-appctl time/warp 1000
4889
23a7d252 4890AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
11f9de00 4891AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl
23a7d252 4892 cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL
11f9de00 4893 cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=600, idle_age=1, ip actions=NORMAL
23a7d252
JS
4894])
4895OVS_VSWITCHD_STOP
4896AT_CLEANUP
4897
f27f2134
BP
4898AT_SETUP([idle_age and hard_age increase over time])
4899OVS_VSWITCHD_START
4900
4901# get_ages DURATION HARD IDLE
4902#
4903# Fetch the flow duration, hard age, and idle age into the variables
4904# whose names are given as arguments. Rounds DURATION down to the
4905# nearest integer. If hard_age doesn't appear in the output, sets
4906# HARD to "none". If idle_age doesn't appear in the output, sets IDLE
4907# to 0.
4908get_ages () {
4909 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
4910
4911 duration=`sed -n 's/.*duration=\([[0-9]]*\)\(\.[[0-9]]*\)\{0,1\}s.*/\1/p' stdout`
4912 AT_CHECK([[expr X"$duration" : 'X[0-9][0-9]*$']], [0], [ignore])
4913 AS_VAR_COPY([$1], [duration])
4914
4915 hard=`sed -n 's/.*hard_age=\([[0-9]]*\),.*/\1/p' stdout`
4916 if test X"$hard" = X; then
4917 hard=none
4918 else
4919 AT_CHECK([[expr X"$hard" : 'X[0-9][0-9]*$']], [0], [ignore])
4920 fi
4921 AS_VAR_COPY([$2], [hard])
4922
4923 idle=`sed -n 's/.*idle_age=\([[0-9]]*\),.*/\1/p' stdout`
4924 if test X"$idle" = X; then
4925 idle=0
4926 else
4927 AT_CHECK([[expr X"$idle" : 'X[0-9][0-9]*$']], [0], [ignore])
4928 fi
4929 AS_VAR_COPY([$3], [idle])
4930}
4931
4932# Add a flow and get its initial hard and idle age.
4933AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=199,idle_timeout=188,actions=drop])
4934get_ages duration1 hard1 idle1
4935
31ef9f51 4936ovs-appctl time/stop
f27f2134
BP
4937# Warp time forward by 10 seconds, then modify the flow's actions.
4938ovs-appctl time/warp 10000
4939get_ages duration2 hard2 idle2
4940AT_CHECK([ovs-ofctl mod-flows br0 actions=flood])
4941
4942# Warp time forward by 10 seconds.
4943ovs-appctl time/warp 10000
4944get_ages duration3 hard3 idle3
4945
4946# Warp time forward 10 more seconds, then pass some packets through the flow,
4947# then warp forward a few more times because idle times are only updated
4948# occasionally.
4949ovs-appctl time/warp 10000
4950ovs-appctl netdev-dummy/receive br0 'in_port(0),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=1234)'
bdba1947 4951ovs-appctl time/warp 3000 1000
c0526804 4952sleep 1
f27f2134
BP
4953get_ages duration4 hard4 idle4
4954
4955printf "duration: %4s => %4s => %4s => %4s\n" $duration1 $duration2 $duration3 $duration4
4956printf "hard_age: %4s => %4s => %4s => %4s\n" $hard1 $hard2 $hard3 $hard4
4957printf "idle_age: %4s => %4s => %4s => %4s\n" $idle1 $idle2 $idle3 $idle4
4958
4959# Duration should increase steadily over time.
4960AT_CHECK([test $duration1 -lt $duration2])
4961AT_CHECK([test $duration2 -lt $duration3])
4962AT_CHECK([test $duration3 -lt $duration4])
4963
4964# Hard age should be "none" initially because it's the same as flow_duration,
4965# then it should increase.
4966AT_CHECK([test $hard1 = none])
4967AT_CHECK([test $hard2 = none])
4968AT_CHECK([test $hard3 != none])
4969AT_CHECK([test $hard4 != none])
4970AT_CHECK([test $hard3 -lt $hard4])
4971
4972# Idle age should increase from 1 to 2 to 3, then decrease.
4973AT_CHECK([test $idle1 -lt $idle2])
4974AT_CHECK([test $idle2 -lt $idle3])
4975AT_CHECK([test $idle3 -gt $idle4])
4976
4977# Check some invariant relationships.
4978AT_CHECK([test $duration1 = $idle1])
4979AT_CHECK([test $duration2 = $idle2])
4980AT_CHECK([test $duration3 = $idle3])
4981AT_CHECK([test $idle3 -gt $hard3])
4982AT_CHECK([test $idle4 -lt $hard4])
4983AT_CHECK([test $hard4 -lt $duration4])
4984
4985OVS_VSWITCHD_STOP
4986AT_CLEANUP
0e553d9c
BP
4987
4988AT_SETUP([ofproto-dpif - fin_timeout])
4989OVS_VSWITCHD_START
b5c1a5df 4990ovs-appctl time/stop
0e553d9c
BP
4991AT_CHECK([ovs-ofctl add-flow br0 'idle_timeout=60,actions=fin_timeout(idle_timeout=5)'])
4992AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
4993[NXST_FLOW reply:
4994 idle_timeout=60, actions=fin_timeout(idle_timeout=5)
4995])
31ef9f51 4996
0e553d9c
BP
4997# Check that a TCP SYN packet does not change the timeout. (Because
4998# flow stats updates are mainly what implements the fin_timeout
4999# feature, we warp forward a couple of times to ensure that flow stats
5000# run before re-checking the flow table.)
323cc924 5001AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f908004500003c2e2440004006465dac11370dac11370b828b0016751e267b00000000a00216d017360000020405b40402080a2d25085f0000000001030307])
0e553d9c
BP
5002AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped
5003warped
5004])
27f57736 5005ovs-appctl revalidator/wait
0e553d9c
BP
5006AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5007[NXST_FLOW reply:
5008 n_packets=1, n_bytes=74, idle_timeout=60, actions=fin_timeout(idle_timeout=5)
5009])
5010# Check that a TCP FIN packet does change the timeout.
323cc924 5011AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f90800451000342e3e40004006463bac11370dac11370b828b0016751e319dfc96399b801100717ae800000101080a2d250a9408579588])
0e553d9c
BP
5012AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped
5013warped
5014])
5015AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5016[NXST_FLOW reply:
5017 n_packets=2, n_bytes=140, idle_timeout=5, actions=fin_timeout(idle_timeout=5)
5018])
5019OVS_VSWITCHD_STOP
5020AT_CLEANUP
27022416
JP
5021
5022AT_SETUP([ofproto-dpif - ovs-appctl dpif/dump-dps])
5023OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy])
5024ADD_OF_PORTS([br0], [1], [2])
5025ADD_OF_PORTS([br1], [3])
5026
5027AT_CHECK([ovs-appctl dpif/dump-dps], [0], [dnl
5028dummy@br0
5029dummy@br1
5030])
5031OVS_VSWITCHD_STOP
5032AT_CLEANUP
5033
5034AT_SETUP([ofproto-dpif - ovs-appctl dpif/show])
5035OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy])
5036ADD_OF_PORTS([br0], [1], [2])
5037ADD_OF_PORTS([br1], [3])
5038
5039AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dc54ef36 5040dummy@ovs-dummy: hit:0 missed:0
e79a6c83 5041 br0:
dc54ef36
EJ
5042 br0 65534/100: (dummy)
5043 p1 1/1: (dummy)
5044 p2 2/2: (dummy)
e79a6c83 5045 br1:
dc54ef36
EJ
5046 br1 65534/101: (dummy)
5047 p3 3/3: (dummy)
27022416
JP
5048])
5049OVS_VSWITCHD_STOP
5050AT_CLEANUP
5051
5052AT_SETUP([ofproto-dpif - ovs-appctl dpif/dump-flows])
054e5aa6 5053# bump max-idle to avoid the flows being reclaimed behind us
27022416 5054OVS_VSWITCHD_START([add-br br1 -- \
054e5aa6
YT
5055 set bridge br1 datapath-type=dummy fail-mode=secure -- \
5056 set Open_vSwitch . other_config:max-idle=10000])
27022416
JP
5057ADD_OF_PORTS([br0], [1], [2])
5058ADD_OF_PORTS([br1], [3])
5059
323cc924
BP
5060AT_CHECK([ovs-appctl netdev-dummy/receive p1 '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=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5061AT_CHECK([ovs-appctl netdev-dummy/receive p2 '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=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0)'])
5062AT_CHECK([ovs-appctl netdev-dummy/receive p3 'in_port(3),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
27f57736 5063ovs-appctl revalidator/wait
70e5ed6f 5064AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
16194afd
DDP
5065recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5066recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
27022416
JP
5067])
5068
70e5ed6f 5069AT_CHECK([ovs-appctl dpif/dump-flows br1 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
16194afd 5070recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
27022416
JP
5071])
5072
70e5ed6f 5073AT_CHECK([ovs-appctl dpif/dump-flows -m br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
16194afd
DDP
5074skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(p1),eth(src=50:54:00:00:00:05/00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:00:00),eth_type(0x0800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.0.2/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:0, bytes:0, used:never, actions:drop
5075skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(p2),eth(src=50:54:00:00:00:07/00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:00:00),eth_type(0x0800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=0/0,code=0/0), packets:0, bytes:0, used:never, actions:drop
04b541df
GS
5076])
5077
70e5ed6f 5078AT_CHECK([ovs-appctl dpif/dump-flows -m br1 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
16194afd 5079skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(p3),eth(src=50:54:00:00:00:09/00:00:00:00:00:00,dst=50:54:00:00:00:0a/00:00:00:00:00:00),eth_type(0x0800),ipv4(src=10.0.0.2/0.0.0.0,dst=10.0.0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:0, bytes:0, used:never, actions:drop
04b541df
GS
5080])
5081
27022416
JP
5082OVS_VSWITCHD_STOP
5083AT_CLEANUP
5084
50c1efc9 5085AT_SETUP([ofproto-dpif - MPLS actions that result in a userspace action])
8bfd0fda
BP
5086OVS_VSWITCHD_START([dnl
5087 add-port br0 p1 -- set Interface p1 type=dummy
5088])
623540e4 5089AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
8bfd0fda
BP
5090ON_EXIT([kill `cat ovs-ofctl.pid`])
5091
5092AT_CAPTURE_FILE([ofctl_monitor.log])
5093AT_DATA([flows.txt], [dnl
5094dl_src=60:66:66:66:66:00 actions=push_mpls:0x8847,controller
5095dl_src=60:66:66:66:66:01 actions=pop_mpls:0x8849,controller
5096])
5097AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5098
5099dnl Packet is sent to userspace because a MPLS push or pop action is applied to
47fb7f71 5100dnl a packet with 2 MPLS LSEs but dpif-netdev can't handle any labels.
8bfd0fda 5101dnl
47fb7f71 5102dnl The input is a frame with two MPLS labels which tcpdump -vve shows as:
8bfd0fda 5103dnl 60:66:66:66:66:00 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 74: MPLS (label 20, exp 0, ttl 32)
8bfd0fda
BP
5104dnl (label 20, exp 0, [S], ttl 32)
5105dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44, bad cksum 3b78 (->f978)!)
5106dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
5107
5108for dl_src in 00 01; do
47fb7f71 5109 AT_CHECK([ovs-appctl netdev-dummy/receive p1 "505400000007 6066666666$dl_src 8847 00014020 00014120 45 00 00 2c 00 00 00 00 40 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45"])
e3b9e3aa
YT
5110done
5111sleep 1 # wait for the datapath flow installed
70e5ed6f 5112AT_CHECK_UNQUOTED([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
22d38fca
JR
5113recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:00,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5114recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:01,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
8bfd0fda 5115])
8bfd0fda
BP
5116
5117OVS_VSWITCHD_STOP
5118AT_CLEANUP
5119
5120
50c1efc9 5121AT_SETUP([ofproto-dpif - MPLS actions that result in a drop])
8bfd0fda
BP
5122OVS_VSWITCHD_START([dnl
5123 add-port br0 p1 -- set Interface p1 type=dummy
5124])
623540e4 5125AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
8bfd0fda
BP
5126ON_EXIT([kill `cat ovs-ofctl.pid`])
5127
5128AT_CAPTURE_FILE([ofctl_monitor.log])
5129AT_DATA([flows.txt], [dnl
5130dl_src=60:66:66:66:66:00 actions=push_mpls:0x8847,controller
5131dl_src=60:66:66:66:66:01 actions=pop_mpls:0x8849,controller
5132])
5133AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5134
5135dnl Packet is dropped because an MPLS PUSH action is applied to a packet with
5136dnl 4 MPLS LSEs but ovs-vswtichd can only handle up to 3 MPLS LSEs and thus
47fb7f71 5137dnl can't determine the resulting MPLS label after MPLS push/pop actions.
8bfd0fda
BP
5138dnl
5139dnl The input is a frame with two MPLS headers which tcpdump -vve shows as:
5140dnl 60:66:66:66:66:01 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 74: MPLS (label 20, exp 0, ttl 32)
5141dnl (label 20, exp 0, ttl 32)
5142dnl (label 20, exp 0, ttl 32)
5143dnl (label 20, exp 0, [S], ttl 32)
5144dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44, bad cksum 3b78 (->f978)!)
5145dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
8bfd0fda 5146
47fb7f71
JS
5147for dl_src in 00 01; do
5148 AT_CHECK([ovs-appctl netdev-dummy/receive p1 "505400000007 6066666666$dl_src 8847 00014020 00014120 45 00 00 2c 00 00 00 00 40 06 3b 78 c0 a8 00 01 c0 a8 00 02 00 50 00 00 00 00 00 2a 00 00 00 2a 50 00 27 10 77 44 00 00 48 4f 47 45"])
e3b9e3aa
YT
5149done
5150sleep 1 # wait for the datapath flow installed
70e5ed6f 5151AT_CHECK_UNQUOTED([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
22d38fca
JR
5152recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:00,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5153recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:01,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
8bfd0fda
BP
5154])
5155
5156OVS_VSWITCHD_STOP
5157AT_CLEANUP
5158
0a740f48
EJ
5159AT_SETUP([ofproto-dpif - patch ports])
5160OVS_VSWITCHD_START([add-br br1 \
5161-- set bridge br1 datapath-type=dummy fail-mode=secure \
5162-- add-port br1 pbr1 -- set int pbr1 type=patch options:peer=pbr0 \
5163-- add-port br0 pbr0 -- set int pbr0 type=patch options:peer=pbr1])
5164
5165ADD_OF_PORTS([br0], [2])
5166ADD_OF_PORTS([br1], [3])
5167
64bb477f
JS
5168AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
5169], [])
aef0491b 5170AT_CHECK([ovs-appctl time/stop])
623540e4 5171AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
9fc0165a 5172
0a740f48
EJ
5173AT_CHECK([ovs-ofctl add-flow br0 actions=LOCAL,output:1,output:2])
5174AT_CHECK([ovs-ofctl add-flow br1 actions=LOCAL,output:1,output:3])
5175
5176for i in $(seq 1 10); do
5177 ovs-appctl netdev-dummy/receive br0 'in_port(100),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=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'
3b401f9b
BP
5178 if [[ $i -eq 1 ]]; then
5179 sleep 1
5180 fi
0a740f48
EJ
5181done
5182
5183for i in $(seq 1 5); do
5184 ovs-appctl netdev-dummy/receive br1 'in_port(101),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=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'
3b401f9b
BP
5185 if [[ $i -eq 1 ]]; then
5186 sleep 1
5187 fi
0a740f48
EJ
5188done
5189
0a8763fc
EJ
5190AT_CHECK([ovs-appctl time/warp 500], [0],
5191[warped
735d7efb 5192])
732207ad 5193sleep 1 # wait for log writer
735d7efb 5194
0a740f48 5195AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dc54ef36 5196dummy@ovs-dummy: hit:13 missed:2
e79a6c83 5197 br0:
dc54ef36
EJ
5198 br0 65534/100: (dummy)
5199 p2 2/2: (dummy)
5200 pbr0 1/none: (patch: peer=pbr1)
e79a6c83 5201 br1:
dc54ef36
EJ
5202 br1 65534/101: (dummy)
5203 p3 3/3: (dummy)
5204 pbr1 1/none: (patch: peer=pbr0)
0a740f48
EJ
5205])
5206
70e5ed6f 5207AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
16194afd
DDP
5208recirc_id=0,ip,in_port=100,nw_frag=no, actions:101,3,2
5209recirc_id=0,ip,in_port=101,nw_frag=no, actions:100,2,3
c2a77f33
JS
5210])
5211
70e5ed6f 5212AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(100).*packets:9' | STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
16194afd 5213skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(100),eth(src=50:54:00:00:00:05/00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:00:00),eth_type(0x0800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.0.2/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:9, bytes:540, used:0.0s, actions:101,3,2
c2a77f33 5214])
70e5ed6f 5215AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(101).*packets:4' | STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
16194afd 5216skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(101),eth(src=50:54:00:00:00:07/00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:00:00),eth_type(0x0800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0), packets:4, bytes:240, used:0.0s, actions:100,2,3
0a740f48
EJ
5217])
5218
5219AT_CHECK([ovs-ofctl dump-ports br0 pbr0], [0], [dnl
5220OFPST_PORT reply (xid=0x4): 1 ports
5221 port 1: rx pkts=5, bytes=300, drop=0, errs=0, frame=0, over=0, crc=0
5222 tx pkts=10, bytes=600, drop=0, errs=0, coll=0
5223])
5224
5225AT_CHECK([ovs-ofctl dump-ports br1 pbr1], [0], [dnl
5226OFPST_PORT reply (xid=0x4): 1 ports
5227 port 1: rx pkts=10, bytes=600, drop=0, errs=0, frame=0, over=0, crc=0
5228 tx pkts=5, bytes=300, drop=0, errs=0, coll=0
5229])
5230
5231OVS_VSWITCHD_STOP
5232AT_CLEANUP
655ab909 5233
65e0be10
BP
5234AT_SETUP([ofproto-dpif - port duration])
5235OVS_VSWITCHD_START([set Bridge br0 protocols=OpenFlow13])
5236ADD_OF_PORTS([br0], 1, 2)
5237
31ef9f51 5238ovs-appctl time/stop
65e0be10
BP
5239ovs-appctl time/warp 10000
5240
5241AT_CHECK([ovs-ofctl -O openflow13 dump-ports br0], [0], [stdout])
125bf01d 5242AT_CHECK([sed -n 's/=[[0-9]][[0-9]]\(\.[[0-9]][[0-9]]*\)\{0,1\}s/=?s/p' stdout], [0],
65e0be10 5243[dnl
65e0be10 5244 duration=?s
65e0be10 5245 duration=?s
65e0be10
BP
5246 duration=?s
5247])
5248OVS_VSWITCHD_STOP
5249AT_CLEANUP
bcd2633a
JP
5250
5251dnl ----------------------------------------------------------------------
5252AT_BANNER([ofproto-dpif -- megaflows])
5253
bcd2633a
JP
5254AT_SETUP([ofproto-dpif megaflow - port classification])
5255OVS_VSWITCHD_START
623540e4 5256AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5257ADD_OF_PORTS([br0], [1], [2])
5258AT_DATA([flows.txt], [dnl
5259table=0 in_port=1 actions=output(2)
5260])
5261AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5262AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
53555f51 5263sleep 1
bcd2633a 5264AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5265sleep 1
c2a77f33 5266AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd 5267recirc_id=0,ip,in_port=1,nw_frag=no, actions: <del>
bcd2633a
JP
5268])
5269OVS_VSWITCHD_STOP
5270AT_CLEANUP
5271
5272AT_SETUP([ofproto-dpif megaflow - L2 classification])
5273OVS_VSWITCHD_START
623540e4 5274AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5275ADD_OF_PORTS([br0], [1], [2])
5276AT_DATA([flows.txt], [dnl
5277table=0 in_port=1,dl_src=50:54:00:00:00:09 actions=output(2)
5278])
5279AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5280AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5281AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5282sleep 1
c2a77f33 5283AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5284recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5285recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b/ff:ff:00:00:00:02,nw_frag=no, actions: <del>
bcd2633a
JP
5286])
5287OVS_VSWITCHD_STOP
5288AT_CLEANUP
5289
5290AT_SETUP([ofproto-dpif megaflow - L3 classification])
5291OVS_VSWITCHD_START
623540e4 5292AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a 5293ADD_OF_PORTS([br0], [1], [2])
13751fd8 5294AT_CHECK([ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=t0 prefixes=nw_dst,nw_src], [0], [ignore], [])
bcd2633a
JP
5295AT_DATA([flows.txt], [dnl
5296table=0 in_port=1,icmp,nw_src=10.0.0.4 actions=output(2)
5297])
5298AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5299AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5300AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5301sleep 1
c2a77f33 5302AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5303recirc_id=0,icmp,in_port=1,nw_src=10.0.0.4,nw_frag=no, actions: <del>
5304recirc_id=0,ip,in_port=1,nw_src=10.0.0.2/0.0.0.2,nw_frag=no, actions: <del>
bcd2633a
JP
5305])
5306OVS_VSWITCHD_STOP
5307AT_CLEANUP
5308
13751fd8
JR
5309AT_SETUP([ofproto-dpif megaflow - IPv6 classification])
5310OVS_VSWITCHD_START
623540e4 5311AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
13751fd8
JR
5312ADD_OF_PORTS([br0], [1], [2])
5313AT_CHECK([ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=t0 prefixes=ipv6_dst,ipv6_src], [0], [ignore], [])
5314AT_DATA([flows.txt], [dnl
5315table=0 in_port=1,ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output(2)
5316])
5317AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5318AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x86dd),ipv6(src=2001:db8:3c4d:1:2:3:4:5,dst=fe80::2,label=0,proto=10,tclass=0x70,hlimit=128,frag=no)'])
5319AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x86dd),ipv6(src=2001:db8:3c4d:5:4:3:2:1,dst=2001:db8:3c4d:1:2:3:4:1,label=0,proto=99,tclass=0x70,hlimit=64,frag=no)'])
ae692725 5320sleep 1
c2a77f33 5321AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5322recirc_id=0,ipv6,in_port=1,ipv6_src=2001:db8:3c4d:1:2:3:4:5,nw_frag=no, actions: <del>
5323recirc_id=0,ipv6,in_port=1,ipv6_src=2001:db8:3c4d:5:4:3:2:1/ffff:ffff:0:4::,nw_frag=no, actions: <del>
13751fd8
JR
5324])
5325OVS_VSWITCHD_STOP
5326AT_CLEANUP
5327
bcd2633a
JP
5328AT_SETUP([ofproto-dpif megaflow - L4 classification])
5329OVS_VSWITCHD_START
623540e4 5330AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5331ADD_OF_PORTS([br0], [1], [2])
5332AT_DATA([flows.txt], [dnl
5333table=0 in_port=1,icmp,icmp_type=8 actions=output(2)
5334])
5335AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5336AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
53555f51 5337sleep 1
bcd2633a 5338AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
53555f51 5339sleep 1
c2a77f33 5340AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd 5341recirc_id=0,icmp,in_port=1,nw_frag=no,icmp_type=0x8/0xff, actions: <del>
bcd2633a
JP
5342])
5343OVS_VSWITCHD_STOP
5344AT_CLEANUP
5345
5346AT_SETUP([ofproto-dpif megaflow - normal])
5347OVS_VSWITCHD_START
623540e4 5348AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5349ADD_OF_PORTS([br0], [1], [2])
5350AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5351AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5352AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5353sleep 1
c2a77f33 5354AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5355recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions: <del>
5356recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions: <del>
bcd2633a
JP
5357])
5358OVS_VSWITCHD_STOP
5359AT_CLEANUP
5360
5361AT_SETUP([ofproto-dpif megaflow - mpls])
5362OVS_VSWITCHD_START
623540e4 5363AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5364ADD_OF_PORTS([br0], [1], [2])
5365AT_DATA([flows.txt], [dnl
5366table=0 dl_src=50:54:00:00:00:09 actions=push_mpls:0x8847,2
5367table=0 dl_src=50:54:00:00:00:0b actions=pop_mpls:0x0800,2
5368])
5369AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5370AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'])
5371AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0a),eth_type(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'])
ae692725 5372sleep 1
c2a77f33 5373AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
22d38fca
JR
5374recirc_id=0,mpls,in_port=1,dl_src=50:54:00:00:00:09,mpls_label=11,mpls_tc=3,mpls_ttl=64,mpls_bos=1, actions: <del>
5375recirc_id=0,mpls,in_port=1,dl_src=50:54:00:00:00:0b,mpls_bos=1, actions: <del>
bcd2633a
JP
5376])
5377OVS_VSWITCHD_STOP
5378AT_CLEANUP
5379
e731d71b
AS
5380# CHECK_MEGAFLOW_NETFLOW(LOOPBACK_ADDR, IP_VERSION_TYPE)
5381#
5382# IP_VERSION_TYPE is used in AT_SETUP
5383m4_define([CHECK_MEGAFLOW_NETFLOW],
5384 [AT_SETUP([ofproto-dpif megaflow - netflow - $2 collector])
5385 OVS_VSWITCHD_START
623540e4 5386 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
e731d71b
AS
5387 ADD_OF_PORTS([br0], [1], [2])
5388
5389 dnl NetFlow configuration disables wildcarding relevant fields
5390 ON_EXIT([kill `cat test-netflow.pid`])
eadd1644 5391 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
e731d71b 5392 AT_CAPTURE_FILE([netflow.log])
b52ecd96 5393 NETFLOW_PORT=`parse_listening_port < test-netflow.log`
e731d71b
AS
5394 ovs-vsctl \
5395 set Bridge br0 netflow=@nf -- \
5396 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
5397 engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
5398
5399 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5400 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5401 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5402 sleep 1
c2a77f33 5403 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5404recirc_id=0,icmp,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_frag=no,icmp_type=0x8/0xff,icmp_code=0x0/0xff, actions: <del>
5405recirc_id=0,icmp,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_src=10.0.0.4,nw_dst=10.0.0.3,nw_tos=0,nw_frag=no,icmp_type=0x8/0xff,icmp_code=0x0/0xff, actions: <del>
bcd2633a 5406])
e731d71b
AS
5407 OVS_VSWITCHD_STOP
5408 AT_CLEANUP])
5409
5410CHECK_MEGAFLOW_NETFLOW([127.0.0.1], [IPv4])
5411CHECK_MEGAFLOW_NETFLOW([[[::1]]], [IPv6])
bcd2633a
JP
5412
5413AT_SETUP([ofproto-dpif megaflow - normal, active-backup bonding])
5414OVS_VSWITCHD_START(
5415 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \
5416 add-bond br0 bond0 p2 p3 bond_mode=active-backup -- \
5417 set interface p2 type=dummy ofport_request=2 -- \
5418 set interface p3 type=dummy ofport_request=3])
5419AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
5420])
623540e4 5421AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5422
5423AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5424AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5425AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5426sleep 1
c2a77f33 5427AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5428recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions: <del>
5429recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions: <del>
bcd2633a
JP
5430])
5431OVS_VSWITCHD_STOP
5432AT_CLEANUP
5433
5434AT_SETUP([ofproto-dpif megaflow - normal, balance-slb bonding])
5435OVS_VSWITCHD_START(
5436 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \
5437 add-bond br0 bond0 p2 p3 bond_mode=balance-slb -- \
5438 set interface p2 type=dummy ofport_request=2 -- \
5439 set interface p3 type=dummy ofport_request=3])
5440AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
5441])
623540e4 5442AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5443
5444AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5445AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5446AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5447sleep 1
c2a77f33 5448AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5449recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions: <del>
5450recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions: <del>
bcd2633a
JP
5451])
5452OVS_VSWITCHD_STOP
5453AT_CLEANUP
5454
5455AT_SETUP([ofproto-dpif megaflow - normal, balance-tcp bonding])
5456# Create bond0 on br0 with interfaces p0 and p1
5457# and bond1 on br1 with interfaces p2 and p3
5458# with p0 patched to p2 and p1 patched to p3.
5459OVS_VSWITCHD_START(
5460 [add-bond br0 bond0 p0 p1 bond_mode=balance-tcp lacp=active \
5461 other-config:lacp-time=fast \
5462 other-config:bond-rebalance-interval=0 -- \
5463 set interface p0 type=patch options:peer=p2 ofport_request=1 -- \
5464 set interface p1 type=patch options:peer=p3 ofport_request=2 -- \
5465 add-br br1 -- \
5466 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
5467 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
5468 fail-mode=secure -- \
5469 add-bond br1 bond1 p2 p3 bond_mode=balance-tcp lacp=active \
5470 other-config:lacp-time=fast \
5471 other-config:bond-rebalance-interval=0 -- \
5472 set interface p2 type=patch options:peer=p0 ofport_request=3 -- \
5473 set interface p3 type=patch options:peer=p1 ofport_request=4 --])
5474
5475AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
5476])
623540e4 5477AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5478ADD_OF_PORTS([br0], [7])
5479AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5480AT_CHECK([ovs-ofctl add-flow br1 action=normal])
31ef9f51 5481ovs-appctl time/stop
bcd2633a
JP
5482ovs-appctl time/warp 5000
5483AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5484AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
53555f51 5485sleep 1
c2a77f33 5486AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5487recirc_id=0,ip,in_port=7,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions: <del>
5488recirc_id=0,ip,in_port=7,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions: <del>
bcd2633a
JP
5489])
5490OVS_VSWITCHD_STOP
5491AT_CLEANUP
5492
5493AT_SETUP([ofproto-dpif megaflow - resubmit port action])
5494OVS_VSWITCHD_START
623540e4 5495AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5496ADD_OF_PORTS([br0], [1], [2])
5497AT_DATA([flows.txt], [dnl
5498table=0 in_port=1,ip actions=resubmit(90)
5499table=0 in_port=90,dl_src=50:54:00:00:00:09 actions=output(2)
5500])
5501AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5502AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5503AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5504sleep 1
c2a77f33 5505AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5506recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5507recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b/ff:ff:00:00:00:02,nw_frag=no, actions: <del>
bcd2633a
JP
5508])
5509OVS_VSWITCHD_STOP
5510AT_CLEANUP
5511
5512AT_SETUP([ofproto-dpif megaflow - resubmit table action])
5513OVS_VSWITCHD_START
623540e4 5514AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5515ADD_OF_PORTS([br0], [1], [2])
5516AT_DATA([flows.txt], [dnl
5517table=0 in_port=1,ip actions=resubmit(,1)
5518table=1 dl_src=50:54:00:00:00:09 actions=output(2)
5519])
5520AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5521AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5522AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=
55231,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5524sleep 1
c2a77f33 5525AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5526recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5527recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
bcd2633a
JP
5528])
5529OVS_VSWITCHD_STOP
5530AT_CLEANUP
5531
5532AT_SETUP([ofproto-dpif megaflow - goto_table action])
5533OVS_VSWITCHD_START
623540e4 5534AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5535ADD_OF_PORTS([br0], [1], [2])
5536AT_DATA([flows.txt], [dnl
5537table=0 in_port=1,ip actions=goto_table(1)
5538table=1 dl_src=50:54:00:00:00:09 actions=output(2)
5539])
5540AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
5541AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5542AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5543sleep 1
c2a77f33 5544AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5545recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5546recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
bcd2633a
JP
5547])
5548OVS_VSWITCHD_STOP
5549AT_CLEANUP
5550
5551AT_SETUP([ofproto-dpif megaflow - mirroring, select_all])
5552OVS_VSWITCHD_START
623540e4 5553AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5554ADD_OF_PORTS([br0], [1], [2], [3])
5555ovs-vsctl \
5556 set Bridge br0 mirrors=@m --\
5557 --id=@p3 get Port p3 --\
5558 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
5559
5560AT_DATA([flows.txt], [dnl
5561in_port=1 actions=output:2
5562])
5563AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5564AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
53555f51 5565sleep 1
bcd2633a 5566AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5567sleep 1
c2a77f33 5568AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd 5569recirc_id=0,ip,in_port=1,nw_frag=no, actions: <del>
bcd2633a
JP
5570])
5571OVS_VSWITCHD_STOP
5572AT_CLEANUP
5573
5574AT_SETUP([ofproto-dpif megaflow - mirroring, select_vlan])
5575OVS_VSWITCHD_START
623540e4 5576AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5577ADD_OF_PORTS([br0], [1], [2], [3])
5578ovs-vsctl \
5579 set Bridge br0 mirrors=@m --\
5580 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
5581 --id=@m create Mirror name=mymirror select_all=true select_vlan=11 output_port=@p3
5582
5583AT_DATA([flows.txt], [dnl
5584in_port=1 actions=output:2
5585])
5586AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5587AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x8100),vlan(vid=11,pcp=7),encap(eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0))'])
5588AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5589sleep 1
c2a77f33 5590AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5591recirc_id=0,ip,in_port=1,dl_vlan=11,nw_frag=no, actions: <del>
5592recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,nw_frag=no, actions: <del>
bcd2633a
JP
5593])
5594OVS_VSWITCHD_STOP
5595AT_CLEANUP
5596
5597AT_SETUP([ofproto-dpif megaflow - move action])
5598OVS_VSWITCHD_START
623540e4 5599AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5600ADD_OF_PORTS([br0], [1], [2])
5601AT_DATA([flows.txt], [dnl
5602table=0 in_port=1 ip,actions=move:NXM_OF_IP_SRC[[]]->NXM_NX_REG0[[]],resubmit(90)
5603table=0 in_port=90 ip,actions=move:NXM_NX_REG0[[]]->NXM_NX_REG1[[]],resubmit(91)
5604table=0 in_port=91 reg0=0x0a000002,actions=output(2)
5605])
5606AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5607AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5608AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5609sleep 1
c2a77f33 5610AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5611recirc_id=0,ip,in_port=1,nw_src=10.0.0.2,nw_frag=no, actions: <del>
5612recirc_id=0,ip,in_port=1,nw_src=10.0.0.4,nw_frag=no, actions: <del>
bcd2633a
JP
5613])
5614OVS_VSWITCHD_STOP
5615AT_CLEANUP
5616
5617AT_SETUP([ofproto-dpif megaflow - push action])
5618OVS_VSWITCHD_START
623540e4 5619AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5620ADD_OF_PORTS([br0], [1], [2])
5621AT_DATA([flows.txt], [dnl
5622table=0 in_port=1 ip,actions=push:NXM_OF_IP_SRC[[]],output(2)
5623])
5624AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5625AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5626AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5627sleep 1
c2a77f33 5628AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5629recirc_id=0,ip,in_port=1,nw_src=10.0.0.2,nw_frag=no, actions: <del>
5630recirc_id=0,ip,in_port=1,nw_src=10.0.0.4,nw_frag=no, actions: <del>
bcd2633a
JP
5631])
5632OVS_VSWITCHD_STOP
5633AT_CLEANUP
5634
5635AT_SETUP([ofproto-dpif megaflow - learning])
5636OVS_VSWITCHD_START
623540e4 5637AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
bcd2633a
JP
5638ADD_OF_PORTS([br0], [1], [2])
5639AT_DATA([flows.txt], [dnl
5640table=0 in_port=1 actions=load:2->NXM_NX_REG0[[0..15]],learn(table=1,priority=65535,NXM_OF_ETH_SRC[[]],NXM_OF_VLAN_TCI[[0..11]],output:NXM_NX_REG0[[0..15]]),output:2
5641])
5642AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
31ef9f51 5643ovs-appctl time/stop
956f2bf0
BP
5644# We send each packet twice because the first packet in each flow causes the
5645# flow table to change and thus revalidations, which (depending on timing)
5646# can keep a megaflow from being installed. The revalidations are done by
5647# the second iteration, allowing the flows to be installed.
5648for i in 1 2; do
5649 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5650 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5651 ovs-appctl time/warp 100
5652done
ae692725 5653sleep 1
bcd2633a 5654dnl The original flow is missing due to a revalidation.
c2a77f33 5655AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5656recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x0fff,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5657recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x0fff,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
bcd2633a
JP
5658])
5659OVS_VSWITCHD_STOP
5660AT_CLEANUP
d4f4a9b2
JP
5661
5662AT_SETUP([ofproto-dpif megaflow - tunnels])
5663OVS_VSWITCHD_START(
2c0ea78f 5664 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1])
623540e4 5665AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
2c0ea78f
GS
5666AT_CHECK([ovs-vsctl add-port br0 p2 -- set Interface p2 type=gre \
5667 options:remote_ip=1.1.1.1 ofport_request=2 options:key=flow])
5668AT_CHECK([ovs-vsctl add-port br0 p3 -- set Interface p3 type=dummy \
5669 ofport_request=3])
5670AT_CHECK([ovs-vsctl add-port br0 p4 -- set Interface p4 type=gre \
5671 options:remote_ip=1.1.1.2 options:tos=inherit options:ttl=inherit \
5672 ofport_request=4 options:key=flow])
d4f4a9b2
JP
5673AT_DATA([flows.txt], [dnl
5674in_port=1,actions=output(2)
5675in_port=3,actions=output(4)
5676])
5677AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5678dnl ECN bits are always copied out, but don't use 0x3 (CE), since that
5679dnl will cause the packet to be dropped.
5680AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0xfd,ttl=128,frag=no),icmp(type=8,code=0)'])
53555f51 5681sleep 1
d4f4a9b2
JP
5682AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0x1,ttl=64,frag=no),icmp(type=8,code=0)'])
5683AT_CHECK([ovs-appctl netdev-dummy/receive p3 'in_port(3),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0xfd,ttl=128,frag=no),icmp(type=8,code=0)'])
53555f51 5684sleep 1
d4f4a9b2 5685AT_CHECK([ovs-appctl netdev-dummy/receive p3 'in_port(3),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0x1,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5686sleep 1
c2a77f33 5687AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5688recirc_id=0,ip,in_port=1,nw_ecn=1,nw_frag=no, actions: <del>
5689recirc_id=0,ip,in_port=3,nw_tos=0,nw_ecn=1,nw_ttl=64,nw_frag=no, actions: <del>
5690recirc_id=0,ip,in_port=3,nw_tos=252,nw_ecn=1,nw_ttl=128,nw_frag=no, actions: <del>
1dd35f8a
JP
5691])
5692OVS_VSWITCHD_STOP
5693AT_CLEANUP
5694
5695AT_SETUP([ofproto-dpif megaflow - dec_ttl])
5696OVS_VSWITCHD_START
623540e4 5697AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
1dd35f8a 5698ADD_OF_PORTS([br0], [1], [2])
13751fd8 5699AT_CHECK([ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=t0 prefixes=nw_dst,nw_src], [0], [ignore], [])
1dd35f8a
JP
5700AT_DATA([flows.txt], [dnl
5701table=0 in_port=1,icmp,nw_src=10.0.0.4 actions=dec_ttl,output(2)
5702])
5703AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5704AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5705AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5706sleep 1
c2a77f33 5707AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
16194afd
DDP
5708recirc_id=0,icmp,in_port=1,nw_src=10.0.0.4,nw_ttl=64,nw_frag=no, actions: <del>
5709recirc_id=0,ip,in_port=1,nw_src=10.0.0.2/0.0.0.2,nw_frag=no, actions: <del>
d4f4a9b2
JP
5710])
5711OVS_VSWITCHD_STOP
5712AT_CLEANUP
74cc3969 5713
f74e7df7
JP
5714AT_SETUP([ofproto-dpif megaflow - set dl_dst])
5715OVS_VSWITCHD_START
623540e4 5716AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
f74e7df7
JP
5717ADD_OF_PORTS([br0], [1], [2])
5718AT_DATA([flows.txt], [dnl
5719table=0 in_port=1 actions=mod_dl_dst(50:54:00:00:00:0a),output(2)
5720])
5721AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5722AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5723AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
ae692725 5724sleep 1
d23df9a8
JR
5725dnl The first packet is essentially a no-op, as the new destination MAC is the
5726dnl same as the original. The second entry actually updates the destination
5727dnl MAC.
70e5ed6f 5728AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
16194afd
DDP
5729recirc_id=0,ip,in_port=1,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions:2
5730recirc_id=0,ip,in_port=1,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions:set(eth(dst=50:54:00:00:00:0a)),2
f74e7df7
JP
5731])
5732OVS_VSWITCHD_STOP
5733AT_CLEANUP
5734
8c301900
JR
5735AT_SETUP([ofproto-dpif megaflow - disabled])
5736OVS_VSWITCHD_START
623540e4 5737AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
8c301900
JR
5738ADD_OF_PORTS([br0], [1], [2])
5739AT_DATA([flows.txt], [dnl
5740table=0 in_port=1,ip,nw_dst=10.0.0.1 actions=output(2)
5741table=0 in_port=1,ip,nw_dst=10.0.0.3 actions=drop
5742])
e79a6c83 5743AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [megaflows disabled
8c301900 5744], [])
64bb477f
JS
5745AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
5746], [])
8c301900
JR
5747AT_CHECK([ovs-appctl vlog/set dpif_netdev:dbg], [0], [], [])
5748AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5749for i in 1 2 3 4; do
5750 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5751 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
53555f51
YT
5752 if [[ $i -eq 1 ]]; then
5753 sleep 1
5754 fi
8c301900 5755done
ae692725 5756sleep 1
70e5ed6f 5757AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
78c9486d
JR
5758pkt_mark=0,recirc_id=0,skb_priority=0,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0, actions:2
5759pkt_mark=0,recirc_id=0,skb_priority=0,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_src=10.0.0.4,nw_dst=10.0.0.3,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0, actions:drop
c2a77f33 5760])
70e5ed6f 5761AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_DUMP | grep 'packets:3'], [0], [dnl
7d170098 5762skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:3, bytes:180, used:0.0s, actions:2
7d170098 5763skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:3, bytes:180, used:0.0s, actions:drop
8c301900
JR
5764])
5765OVS_VSWITCHD_STOP
5766AT_CLEANUP
5767
74cc3969
BP
5768AT_SETUP([ofproto-dpif - datapath port number change])
5769OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
5770ADD_OF_PORTS([br0], 1)
5771
5772# Trace a flow that should output to p1.
5773AT_CHECK([ovs-appctl ofproto/trace br0 in_port=LOCAL,dl_src=10:20:30:40:50:60],
5774 [0], [stdout])
5775AT_CHECK([tail -1 stdout], [0], [Datapath actions: 1
5776])
5777
5778# Change p1's port number to 5.
5779AT_CHECK([ovs-appctl dpif-dummy/change-port-number ovs-dummy p1 5])
5780
5781# Trace a flow that should output to p1 in its new location.
5782AT_CHECK([ovs-appctl ofproto/trace br0 in_port=LOCAL,dl_src=10:20:30:40:50:60],
5783 [0], [stdout])
5784AT_CHECK([tail -1 stdout], [0], [Datapath actions: 5
5785])
5786OVS_VSWITCHD_STOP
5787AT_CLEANUP
2d344ba5
AW
5788
5789# Tests the bundling with various bfd and cfm configurations.
5790AT_SETUP([ofproto - bundle with variable bfd/cfm config])
5791OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
5792 add-bond br0 br0bond p0 p2 bond-mode=active-backup -- \
5793 add-bond br1 br1bond p1 p3 bond-mode=active-backup -- \
5794 set Interface p1 type=patch options:peer=p0 ofport_request=2 -- \
5795 set Interface p3 type=patch options:peer=p2 ofport_request=4 -- \
5796 set Interface p0 type=patch options:peer=p1 ofport_request=1 -- \
5797 set Interface p2 type=patch options:peer=p3 ofport_request=3 -- \
5798 set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 -- \
5799 set Interface p0 cfm_mpid=1 -- \
5800 set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
5801
5802ovs-appctl time/stop
5803# advance the clock to stablize everything.
bdba1947 5804ovs-appctl time/warp 5000 100
2d344ba5
AW
5805# cfm/show should show 'recv' fault.
5806AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
5807 fault: recv
5808])
5809# bfd/show should show 'up'.
5810AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
5811 Local Session State: up
5812 Remote Session State: up
5813 Local Session State: up
5814 Remote Session State: up
5815])
5816# bond/show should show 'may-enable: true' for all slaves.
5817AT_CHECK([ovs-appctl bond/show | sed -n '/^.*may_enable:.*/p'], [0], [dnl
5818 may_enable: true
5819 may_enable: true
5820 may_enable: true
5821 may_enable: true
5822])
5823
5824# now disable the bfd on p1.
5825AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false])
5826# advance the clock to stablize everything.
bdba1947 5827ovs-appctl time/warp 5000 100
2d344ba5
AW
5828# cfm/show should show 'recv' fault.
5829AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
5830 fault: recv
5831])
5832# bfd/show should show 'down'.
5833AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
5834 Local Session State: down
5835 Remote Session State: down
5836])
5837# bond/show should show 'may-enable: false' for p0.
125bf01d 5838AT_CHECK([ovs-appctl bond/show br0bond | sed -n '/^.*may_enable:.*/p'], [0], [dnl
2d344ba5
AW
5839 may_enable: false
5840 may_enable: true
2d344ba5
AW
5841])
5842
5843# now enable the bfd on p1 and disable bfd on p0.
5844AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true])
5845AT_CHECK([ovs-vsctl set Interface p0 bfd:enable=false])
5846# advance the clock to stablize everything.
bdba1947 5847ovs-appctl time/warp 5000 100
2d344ba5
AW
5848# cfm/show should show 'recv' fault.
5849AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
5850 fault: recv
5851])
5852# bfd/show should show 'down'.
5853AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
5854 Local Session State: down
5855 Remote Session State: down
5856])
5857# bond/show should show 'may-enable: false' for p0 and p1.
5858AT_CHECK([ovs-appctl bond/show | sed -n '/^.*may_enable:.*/p'], [0], [dnl
5859 may_enable: false
5860 may_enable: true
5861 may_enable: false
5862 may_enable: true
5863])
5864
e441a806
AW
5865OVS_VSWITCHD_STOP
5866AT_CLEANUP
5867
5868AT_SETUP([ofproto-dpif - ofproto-dpif-monitor 1])
5869OVS_VSWITCHD_START([add-port br0 p0 -- set interface p0 type=gre options:remote_ip=1.2.3.4])
5870
5871# enable bfd on p0.
5872AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true])
5873# check log.
1335a8d5 5874OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
e441a806
AW
5875# disable bfd on p0.
5876AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false])
5877# check log.
1335a8d5 5878OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
e441a806
AW
5879AT_CHECK([cat ovs-vswitchd.log | sed -e '/^.*ofproto_dpif_monitor.*$/d' > ovs-vswitchd.log])
5880
5881# enable cfm on p0.
5882AT_CHECK([ovs-vsctl set interface p0 cfm_mpid=10])
5883# check log.
1335a8d5 5884OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
e441a806
AW
5885# disable cfm on p0.
5886AT_CHECK([ovs-vsctl remove interface p0 cfm_mpid 10])
5887# check log.
1335a8d5 5888OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
e441a806
AW
5889AT_CHECK([cat ovs-vswitchd.log | sed -e '/^.*ofproto_dpif_monitor.*$/d' > ovs-vswitchd.log])
5890
5891# enable both bfd and cfm on p0.
5892AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true cfm_mpid=10])
5893# check log.
1335a8d5 5894OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
e441a806
AW
5895# disable bfd on p0.
5896AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false])
5897# check log, there should not be the log of thread terminated.
738cd849 5898AT_CHECK([sed -n "s/^.*|ofproto_dpif_monitor(monitor[[0-9]]*)|INFO|\(.* terminated\)$/\1/p" ovs-vswitchd.log], [0], [dnl
e441a806
AW
5899])
5900# reenable bfd on p0.
5901AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true])
5902# check log, should still be on log of thread created.
738cd849 5903AT_CHECK([sed -n "s/^.*|ofproto_dpif_monitor(monitor[[0-9]]*)|INFO|\(.* created\)$/\1/p" ovs-vswitchd.log], [0], [dnl
e441a806
AW
5904monitor thread created
5905])
5906# disable bfd and cfm together.
5907AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false -- remove interface p0 cfm_mpid 10])
5908# check log.
1335a8d5 5909OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
e441a806
AW
5910
5911OVS_VSWITCHD_STOP
5912AT_CLEANUP
5913
5914# this test helps avoid the deadlock between the main thread and monitor thread.
5915AT_SETUP([ofproto-dpif - ofproto-dpif-monitor 2])
5916OVS_VSWITCHD_START
5917
5918for i in `seq 1 199`
5919do
5920 AT_CHECK([ovs-vsctl add-port br0 p$i -- set interface p$i type=gre options:remote_ip=1.2.3.4 options:key=$i bfd:enable=true])
5921done
5922
98cf638b
AW
5923OVS_VSWITCHD_STOP
5924AT_CLEANUP
98b07853
BP
5925\f
5926AT_BANNER([ofproto-dpif - flow translation resource limits])
5927
5928AT_SETUP([ofproto-dpif - infinite resubmit])
5929OVS_VSWITCHD_START
5930AT_CHECK([ovs-ofctl add-flow br0 actions=resubmit:1,resubmit:2,output:3])
222820c6 5931AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'eth_dst=ff:ff:ff:ff:ff:ff'],
98b07853
BP
5932 [0], [stdout])
5933AT_CHECK([tail -1 stdout], [0], [Datapath actions: drop
5934])
5935AT_CHECK([grep -c 'resubmit actions recursed over 64 times' ovs-vswitchd.log],
5936 [0], [1
5937])
5938OVS_VSWITCHD_STOP(["/resubmit actions recursed/d"])
5939AT_CLEANUP
5940
5941AT_SETUP([ofproto-dpif - exponential resubmit chain])
5942OVS_VSWITCHD_START
5943ADD_OF_PORTS([br0], 1)
5944(for i in `seq 1 64`; do
5945 j=`expr $i + 1`
5946 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
5947 done
5948 echo "in_port=65, actions=local") > flows
5949 AT_CHECK([ovs-ofctl add-flows br0 flows])
222820c6 5950AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
98b07853
BP
5951AT_CHECK([grep -c 'over 4096 resubmit actions' ovs-vswitchd.log], [0], [1
5952])
5953OVS_VSWITCHD_STOP(["/over.*resubmit actions/d"])
5954AT_CLEANUP
5955
5956AT_SETUP([ofproto-dpif - too many output actions])
5957OVS_VSWITCHD_START
5958ADD_OF_PORTS([br0], 1)
5959(for i in `seq 1 12`; do
5960 j=`expr $i + 1`
5961 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
5962 done
5963 echo "in_port=13, actions=local,local,local,local,local,local,local,local") > flows
542024c4 5964AT_CHECK([ovs-ofctl add-flows br0 flows])
222820c6 5965AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
0f032e95
BP
5966AT_CHECK([grep -c -e '- Uses action(s) not supported by datapath' stdout],
5967 [0], [1
98b07853 5968])
0f032e95 5969AT_CHECK([grep -c 'resubmits yielded over 64 kB of actions' ovs-vswitchd.log], [0], [1
542024c4 5970])
0f032e95 5971OVS_VSWITCHD_STOP(["/resubmits yielded over 64 kB of actions/d"])
98b07853
BP
5972AT_CLEANUP
5973
5974AT_SETUP([ofproto-dpif - stack too deep])
5975OVS_VSWITCHD_START
5976ADD_OF_PORTS([br0], 1)
5977(for i in `seq 1 12`; do
5978 j=`expr $i + 1`
5979 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
5980 done
5981 push="push:NXM_NX_REG0[[]]"
5982 echo "in_port=13, actions=$push,$push,$push,$push,$push,$push,$push,$push") > flows
5983 AT_CHECK([ovs-ofctl add-flows br0 flows])
222820c6 5984AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
98b07853
BP
5985AT_CHECK([grep -c 'resubmits yielded over 64 kB of stack' ovs-vswitchd.log], [0], [1
5986])
5987OVS_VSWITCHD_STOP(["/resubmits yielded over 64 kB of stack/d"])
5988AT_CLEANUP
d611866c
SH
5989
5990
2608616d 5991AT_SETUP([ofproto-dpif packet-out controller])
d611866c
SH
5992OVS_VSWITCHD_START
5993ADD_OF_PORTS([br0], 1, 2)
5994
5995AT_CHECK([ovs-ofctl add-flow br0 'dl_dst=50:54:00:00:00:0a actions=controller'])
5996
5997AT_CAPTURE_FILE([ofctl_monitor.log])
5998AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
5999
6000for i in 1 2 3; do
6001 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER controller '50540000000a5054000000091234'])
6002done
6003
6004OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6005AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6006NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
78c9486d 6007in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6008dnl
6009NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
78c9486d 6010in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6011dnl
6012NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
78c9486d 6013in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6014])
6015
6016AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
6017 dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6018NXST_FLOW reply:
6019])
6020
3c1bb396
BP
6021(echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6022 table 0:
6023 active=1, lookup=0, matched=0"
d611866c
SH
6024 x=1
6025 while test $x -lt 254; do
3c1bb396
BP
6026 echo "
6027 table $x:
6028 active=0, lookup=0, matched=0"
d611866c
SH
6029 x=`expr $x + 1`
6030 done) > expout
6031AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6032
6033OVS_VSWITCHD_STOP
6034AT_CLEANUP
6035
2608616d 6036AT_SETUP([ofproto-dpif packet-out controller (patch port)])
d611866c
SH
6037OVS_VSWITCHD_START(
6038 [-- \
6039 add-port br0 p1 -- \
6040 set interface p1 type=patch options:peer=p2 -- \
6041 add-br br1 -- \
6042 set bridge br1 datapath-type=dummy -- \
6043 set bridge br1 fail-mode=secure -- \
6044 set bridge br1 protocols='[OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13]' -- \
6045 add-port br1 p2 -- \
6046 set interface p2 type=patch options:peer=p1 --])
6047
6048AT_CAPTURE_FILE([ofctl_monitor.log])
6049AT_CHECK([ovs-ofctl monitor br1 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6050
6051for i in 1 2 3; do
6052 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER output:1 '50540000000a5054000000091234'])
6053done
6054
6055OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6056AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6057NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
78c9486d 6058in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6059dnl
6060NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
78c9486d 6061in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6062dnl
6063NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
78c9486d 6064in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6065])
6066
3c1bb396 6067(printf "OFPST_TABLE reply (OF1.3) (xid=0x2):"
d611866c
SH
6068 x=0
6069 while test $x -lt 254; do
3c1bb396
BP
6070 echo "
6071 table $x:
6072 active=0, lookup=0, matched=0"
d611866c
SH
6073 x=`expr $x + 1`
6074 done) > expout
6075AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6076
3c1bb396
BP
6077(echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6078 table 0:
6079 active=0, lookup=3, matched=0"
d611866c
SH
6080 x=1
6081 while test $x -lt 254; do
3c1bb396
BP
6082 echo "
6083 table $x:
6084 active=0, lookup=0, matched=0"
d611866c
SH
6085 x=`expr $x + 1`
6086 done) > expout
6087AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br1 ], [0], [expout])
6088
6089OVS_VSWITCHD_STOP
6090AT_CLEANUP
6091
6092
2608616d 6093AT_SETUP([ofproto-dpif packet-out goto_table])
d611866c
SH
6094OVS_VSWITCHD_START
6095ADD_OF_PORTS([br0], 1, 2)
6096
6097AT_DATA([flows.txt], [dnl
6098table=0 dl_dst=50:54:00:00:00:0a actions=goto_table(1)
6099table=1 dl_dst=50:54:00:00:00:0a actions=controller
6100])
6101AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows.txt])
6102
6103AT_CAPTURE_FILE([ofctl_monitor.log])
6104AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6105
6106for i in 1 2 3; do
6107 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x1234)'
6108done
6109
6110OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6111OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6112AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6113NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 6114in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6115dnl
6116NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 6117in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6118dnl
6119NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 6120in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6121])
6122
6123AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
f7a22c7e 6124AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore])
d611866c
SH
6125
6126AT_CHECK([ovs-ofctl -O OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
6127 n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=goto_table:1
6128 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6129OFPST_FLOW reply (OF1.3):
6130])
6131
3c1bb396
BP
6132(echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6133 table 0:
6134 active=1, lookup=3, matched=3
6135
6136 table 1:
6137 active=1, lookup=3, matched=3"
d611866c
SH
6138 x=2
6139 while test $x -lt 254; do
3c1bb396
BP
6140 echo "
6141 table $x:
6142 active=0, lookup=0, matched=0"
d611866c
SH
6143 x=`expr $x + 1`
6144 done) > expout
6145AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6146
6147OVS_VSWITCHD_STOP
6148AT_CLEANUP
6149
6150
2608616d 6151AT_SETUP([ofproto-dpif packet-out table-miss (continue)])
d611866c
SH
6152OVS_VSWITCHD_START
6153ADD_OF_PORTS([br0], 1, 2)
6154
3c1bb396
BP
6155AT_CHECK([ovs-ofctl -O OpenFlow11 add-flow br0 'table=1 dl_dst=50:54:00:00:00:0a actions=controller'])
6156AT_CHECK([ovs-ofctl -O OpenFlow11 mod-table br0 all continue])
d611866c
SH
6157
6158AT_CAPTURE_FILE([ofctl_monitor.log])
6159AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6160
6161for i in 1 2 3; do
6162 ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x1234)'
6163done
6164
6165OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6166OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6167AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6168NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 6169in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6170dnl
6171NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 6172in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6173dnl
6174NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
78c9486d 6175in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
d611866c
SH
6176])
6177
6178AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
f7a22c7e 6179AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore])
d611866c 6180
3c1bb396 6181AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip | sort], [0], [dnl
d611866c 6182 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
3c1bb396 6183OFPST_FLOW reply (OF1.1):
d611866c
SH
6184])
6185
3c1bb396
BP
6186(echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6187 table 0:
6188 active=0, lookup=3, matched=0
6189
6190 table 1:
6191 active=1, lookup=3, matched=3"
d611866c
SH
6192 x=2
6193 while test $x -lt 254; do
3c1bb396
BP
6194 echo "
6195 table $x:
6196 active=0, lookup=0, matched=0"
d611866c
SH
6197 x=`expr $x + 1`
6198 done) > expout
6199AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6200
6201OVS_VSWITCHD_STOP
6202AT_CLEANUP
b0e2ec32
JR
6203
6204AT_SETUP([ofproto-dpif - ICMPv6])
6205OVS_VSWITCHD_START
6206ADD_OF_PORTS([br0], 1)
6207
6208AT_CAPTURE_FILE([ofctl_monitor.log])
6209
6210AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6211
6212ovs-appctl netdev-dummy/receive p1 '0060970769ea0000860580da86dd6000000000203afffe80000000000000020086fffe0580dafe80000000000000026097fffe0769ea870068bd00000000fe80000000000000026097fffe0769ea01010000860580da'
6213
6214OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6215
6216AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6217NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via no_match) data_len=86 (unbuffered)
78c9486d 6218icmp6,in_port=0,vlan_tci=0x0000,dl_src=00:00:86:05:80:da,dl_dst=00:60:97:07:69:ea,ipv6_src=fe80::200:86ff:fe05:80da,ipv6_dst=fe80::260:97ff:fe07:69ea,ipv6_label=0x00000,nw_tos=0,nw_ecn=0,nw_ttl=255,icmp_type=135,icmp_code=0,nd_target=fe80::260:97ff:fe07:69ea,nd_sll=00:00:86:05:80:da,nd_tll=00:00:00:00:00:00
b0e2ec32
JR
6219])
6220
6221OVS_VSWITCHD_STOP
6222AT_CLEANUP