1 AT_BANNER([ofproto-dpif])
3 AT_SETUP([ofproto-dpif - revalidator/wait])
5 AT_CHECK([ovs-appctl revalidator/wait])
9 AT_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.
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 -- \
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 \
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 --])
25 WAIT_FOR_DUMMY_PORTS([p3], [p4])
26 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
28 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
29 AT_CHECK([ovs-ofctl add-flow br1 action=normal])
30 ovs-appctl netdev-dummy/set-admin-state up
31 ovs-appctl time/warp 100
32 ovs-appctl netdev-dummy/set-admin-state p2 down
34 ovs-appctl time/warp 100
35 AT_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)'])
36 AT_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)'])
37 ovs-appctl time/warp 100
38 ovs-appctl netdev-dummy/set-admin-state p2 up
39 ovs-appctl netdev-dummy/set-admin-state p1 down
40 ovs-appctl time/warp 100
41 AT_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)'])
42 AT_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)'])
43 ovs-appctl time/warp 200 100
45 AT_CHECK([cat ovs-vswitchd.log | grep 'in_port=[[348]]' | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
46 recirc_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>
47 recirc_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>
48 recirc_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>
49 recirc_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>
50 recirc_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>
51 recirc_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>
56 AT_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.
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 -- \
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 \
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 --])
75 WAIT_FOR_DUMMY_PORTS([p4], [p5], [p6])
76 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
77 AT_CHECK([ovs-ofctl add-flow br1 action=normal])
78 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
81 ovs-appctl time/warp 100
83 for i in `seq 0 100 |xargs printf '%02x\n'`;
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])
89 ovs-appctl time/warp 100
90 AT_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.
93 AT_CHECK([test `egrep 'in_port\(4\)' br1_flows.txt |wc -l` -gt 3])
94 AT_CHECK([test `egrep 'in_port\(5\)' br1_flows.txt |wc -l` -gt 3])
95 AT_CHECK([test `egrep 'in_port\(6\)' br1_flows.txt |wc -l` -gt 3])
99 AT_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.
103 # Send some traffic, make sure the traffic are spread based on L4 headers.
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 -- \
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 --])
121 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
123 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
124 AT_CHECK([ovs-ofctl add-flow br1 action=normal])
125 AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [megaflows disabled
127 OVS_WAIT_WHILE([ovs-appctl bond/show | grep "may_enable: false"])
129 ovs-appctl time/warp 100
130 ovs-appctl lacp/show > lacp.txt
131 ovs-appctl bond/show > bond.txt
133 for i in `seq 0 255` ;
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)"
136 AT_CHECK([ovs-appctl netdev-dummy/receive p7 $pkt])
139 ovs-appctl time/warp 300 100
140 AT_CHECK([ovs-appctl dpif/dump-flows br0 |grep tcp > br0_flows.txt])
141 AT_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.
144 AT_CHECK([test `grep in_port.4 br1_flows.txt |wc -l` -gt 24])
145 AT_CHECK([test `grep in_port.5 br1_flows.txt |wc -l` -gt 24])
146 AT_CHECK([test `grep in_port.6 br1_flows.txt |wc -l` -gt 24])
151 # Makes sure recirculation does not change the way packet is handled.
152 AT_SETUP([ofproto-dpif - balance-tcp bonding, different recirc flow ])
154 [add-bond br0 bond0 p1 p2 bond_mode=balance-tcp lacp=active \
155 other-config:lacp-time=fast other-config:bond-rebalance-interval=0 -- \
156 set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1 -- \
157 set interface p2 type=dummy options:pstream=punix:$OVS_RUNDIR/p2.sock ofport_request=2 -- \
159 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
160 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
161 fail-mode=standalone -- \
162 add-bond br1 bond1 p3 p4 bond_mode=balance-tcp lacp=active \
163 other-config:lacp-time=fast other-config:bond-rebalance-interval=0 -- \
164 set interface p3 type=dummy options:stream=unix:$OVS_RUNDIR/p1.sock ofport_request=3 -- \
165 set interface p4 type=dummy options:stream=unix:$OVS_RUNDIR/p2.sock ofport_request=4 -- \
166 add-port br1 br1- -- set interface br1- type=patch options:peer=br1+ ofport_request=100 -- \
168 set bridge br-int other-config:hwaddr=aa:77:aa:77:00:00 -- \
169 set bridge br-int datapath-type=dummy other-config:datapath-id=1235 \
170 fail-mode=secure -- \
171 add-port br-int br1+ -- set interface br1+ type=patch options:peer=br1- ofport_request=101 -- \
172 add-port br-int p5 -- set interface p5 ofport_request=5 type=dummy
174 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
177 # Waits for all ifaces enabled.
178 OVS_WAIT_UNTIL([test `ovs-appctl bond/show | grep -- "may_enable: true" | wc -l` -ge 4])
180 # The dl_vlan flow should not be ever matched,
181 # since recirculation should not change the flow handling.
182 AT_DATA([flows.txt], [dnl
183 table=0 priority=1 in_port=5 actions=mod_vlan_vid:1,output(101)
184 table=0 priority=2 in_port=5 dl_vlan=1 actions=drop
186 AT_CHECK([ovs-ofctl add-flows br-int flows.txt])
188 # Sends a packet to trigger recirculation.
189 AT_CHECK([ovs-appctl netdev-dummy/receive p5 "in_port(5),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)"])
191 # Collects flow stats.
192 AT_CHECK([ovs-appctl revalidator/purge], [0])
194 # Checks the flow stats in br1, should only be one flow with non-zero
195 # 'n_packets' from internal table.
196 AT_CHECK([ovs-appctl bridge/dump-flows br1 | ofctl_strip | grep -- "n_packets" | grep -- "table_id" | sed -e 's/output:[[0-9]][[0-9]]*/output/'] , [0], [dnl
197 table_id=254, n_packets=1, n_bytes=64, priority=20,recirc_id=0x0,dp_hash=0x0/0xff,actions=output
200 # Checks the flow stats in br-int, should be only one match.
201 AT_CHECK([ovs-ofctl dump-flows br-int | ofctl_strip | sort], [0], [dnl
202 n_packets=1, n_bytes=60, priority=1,in_port=5 actions=mod_vlan_vid:1,output:101
203 priority=2,in_port=5,dl_vlan=1 actions=drop
210 AT_SETUP([ofproto-dpif - resubmit])
212 ADD_OF_PORTS([br0], [1], [10], [11], [12], [13], [14], [15],
213 [16], [17], [18], [19], [20], [21])
214 AT_DATA([flows.txt], [dnl
215 table=0 in_port=1 priority=1000 icmp actions=output(10),resubmit(2),output(19),resubmit(3),output(21)
216 table=0 in_port=2 priority=1500 icmp actions=output(11),resubmit(,1),output(16),resubmit(2,1),output(18)
217 table=0 in_port=3 priority=2000 icmp actions=output(20)
218 table=1 in_port=1 priority=1000 icmp actions=output(12),resubmit(4,1),output(13),resubmit(3),output(15)
219 table=1 in_port=2 priority=1500 icmp actions=output(17),resubmit(,2)
220 table=1 in_port=3 priority=1500 icmp actions=output(14),resubmit(,2)
222 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
223 AT_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])
224 AT_CHECK([tail -1 stdout], [0],
225 [Datapath actions: 10,11,12,13,14,15,16,17,18,19,20,21
230 AT_SETUP([ofproto-dpif - goto table])
232 ADD_OF_PORTS([br0], [1], [10], [11])
233 echo "table=0 in_port=1 actions=output(10),goto_table(1)" > flows.txt
234 for i in `seq 1 63`; do echo "table=$i actions=goto_table($(($i+1)))"; done >> flows.txt
235 echo "table=64 actions=output(11)" >> flows.txt
236 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
237 AT_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])
238 AT_CHECK([tail -1 stdout], [0],
239 [Datapath actions: 10,11
244 AT_SETUP([ofproto-dpif - write actions])
246 ADD_OF_PORTS([br0], [1], [10], [11], [12], [13])
247 AT_DATA([flows.txt], [dnl
248 table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip_src,output(12)),goto_table(1)
249 table=1 ip actions=write_actions(output(13)),goto_table(2)
250 table=2 ip actions=set_field:192.168.3.91->ip_src,output(11)
252 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
253 AT_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])
254 AT_CHECK([tail -2 stdout], [0],
255 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
256 Datapath actions: 10,set(ipv4(src=192.168.3.91)),11,set(ipv4(src=192.168.3.90)),13
261 AT_SETUP([ofproto-dpif - modify IPv6 Neighbor Solitication (ND)])
263 ADD_OF_PORTS([br0], [1], [10], [11], [12], [13])
264 AT_DATA([flows.txt], [dnl
265 table=0 in_port=1,icmp6,icmpv6_type=135 actions=output(10),write_actions(set_field:fe80::3->nd_target,set_field:aa:aa:aa:aa:aa:aa->nd_sll,output(12)),goto_table(1)
266 table=1 icmp6 actions=write_actions(output(13)),goto_table(2)
267 table=2 in_port=1,icmp6,icmpv6_type=135 actions=set_field:fe80::4->nd_target,set_field:cc:cc:cc:cc:cc:cc->nd_sll,output(11)
269 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
270 AT_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,icmp6,ipv6_src=fe80::1,ipv6_dst=fe80::2,nw_tos=0,nw_ttl=128,icmpv6_type=135,nd_target=fe80::2020,nd_sll=66:55:44:33:22:11'], [0], [stdout])
271 AT_CHECK([tail -4 stdout], [0],
272 [Megaflow: recirc_id=0,icmp6,in_port=1,nw_frag=no,icmp_type=0x87/0xff,icmp_code=0x0/0xff,nd_target=fe80::2020,nd_sll=66:55:44:33:22:11
273 Datapath actions: 10,set(nd(target=fe80::4,sll=cc:cc:cc:cc:cc:cc)),11,set(nd(target=fe80::3,sll=aa:aa:aa:aa:aa:aa)),13
274 This flow is handled by the userspace slow path because it:
275 - Uses action(s) not supported by datapath.
280 AT_SETUP([ofproto-dpif - clear actions])
282 ADD_OF_PORTS([br0], [1], [10], [11], [12])
283 AT_DATA([flows.txt], [dnl
284 table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip_src,output(12)),goto_table(1)
285 table=1 tcp actions=set_field:91->tp_src,output(11),clear_actions
287 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
288 AT_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])
289 AT_CHECK([tail -2 stdout], [0],
290 [Megaflow: recirc_id=0,tcp,in_port=1,nw_frag=no,tp_src=8
291 Datapath actions: 10,set(tcp(src=91)),11
296 AT_SETUP([ofproto-dpif - group chaining])
298 ADD_OF_PORTS([br0], [1], [10], [11])
299 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=set_field:192.168.3.90->ip_src,group:123,bucket=output:11'])
300 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=123,type=all,bucket=output:10'])
301 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
302 AT_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])
303 AT_CHECK([tail -1 stdout], [0],
304 [Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
309 AT_SETUP([ofproto-dpif - all group in action list])
311 ADD_OF_PORTS([br0], [1], [10], [11])
312 AT_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'])
313 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
314 AT_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])
315 # Must match on the source address to be able to restore it's value for
317 AT_CHECK([tail -2 stdout], [0],
318 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
319 Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
324 AT_SETUP([ofproto-dpif - indirect group in action list])
326 ADD_OF_PORTS([br0], [1], [10])
327 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10])
328 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
329 AT_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])
330 AT_CHECK([tail -1 stdout], [0],
331 [Datapath actions: 10
336 AT_SETUP([ofproto-dpif - group actions have no effect afterwards])
338 ADD_OF_PORTS([br0], [1], [10])
339 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=set_field:192.168.3.90->ip_src,output:10'])
340 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234,output:10'])
341 AT_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])
342 AT_CHECK([tail -1 stdout], [0],
343 [Datapath actions: set(ipv4(src=192.168.3.90,dst=192.168.0.2)),10,set(ipv4(src=192.168.0.1,dst=192.168.0.2)),10
348 AT_SETUP([ofproto-dpif - all group in action set])
350 ADD_OF_PORTS([br0], [1], [10], [11])
351 AT_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'])
352 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
353 AT_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])
354 # Must match on the source address to be able to restore it's value for
356 AT_CHECK([tail -2 stdout], [0],
357 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
358 Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
363 AT_SETUP([ofproto-dpif - indirect group in action set])
365 ADD_OF_PORTS([br0], [1], [10])
366 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10])
367 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
368 AT_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])
369 AT_CHECK([tail -1 stdout], [0],
370 [Datapath actions: 10
375 AT_SETUP([ofproto-dpif - select group])
377 ADD_OF_PORTS([br0], [1], [10], [11])
378 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,bucket=output:11'])
379 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
381 # Try a bunch of different flows and make sure that they get distributed
383 for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
384 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])
385 tail -1 stdout >> results
387 sort results | uniq -c
388 AT_CHECK([sort results | uniq], [0],
389 [Datapath actions: 10
395 AT_SETUP([ofproto-dpif - select group with watch port])
397 ADD_OF_PORTS([br0], [1], [10], [11])
398 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=watch_port:10,output:10,bucket=output:11'])
399 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
400 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: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])
401 AT_CHECK([tail -1 stdout], [0],
402 [Datapath actions: 11
407 AT_SETUP([ofproto-dpif - select group with weight])
409 ADD_OF_PORTS([br0], [1], [10], [11], [12])
410 AT_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'])
411 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
412 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: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])
413 AT_CHECK([tail -1 stdout], [0],
414 [Datapath actions: 11
419 AT_SETUP([ofproto-dpif - select group with hash selection method])
421 ADD_OF_PORTS([br0], [1], [10], [11])
422 AT_CHECK([ovs-ofctl -O OpenFlow15 add-group br0 'group_id=1234,type=select,selection_method=hash,fields=eth_dst,bucket=output:10,bucket=output:11'])
423 AT_CHECK([ovs-ofctl -O OpenFlow15 add-flow br0 'ip actions=write_actions(group:1234)'])
425 # Try a bunch of different flows and make sure that they get distributed
427 for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
428 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])
429 tail -1 stdout >> results
431 sort results | uniq -c
432 AT_CHECK([sort results | uniq], [0],
433 [Datapath actions: 10
438 # Try a bunch of different flows and make sure that they are not distributed
439 # as they only vary a field that is not hashed
440 for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
441 AT_CHECK([ovs-appctl ofproto/trace br0 "in_port=1,dl_src=50:54:00:00:00:$d,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])
442 tail -1 stdout >> results
444 sort results | uniq -c
445 AT_CHECK([sort results | uniq], [0],
446 [Datapath actions: 10
452 AT_SETUP([ofproto-dpif - fast failover group])
454 ADD_OF_PORTS([br0], [1], [10], [11])
455 AT_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'])
456 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
457 AT_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])
458 AT_CHECK([tail -1 stdout], [0],
459 [Datapath actions: drop
464 AT_SETUP([ofproto-dpif - group stats single bucket])
466 ADD_OF_PORTS([br0], [1], [10], [11])
467 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,weight=2000,bucket=output:11,weight=0'])
468 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
472 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)"
473 AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
476 AT_CHECK([ovs-appctl revalidator/purge], [0])
477 AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout])
478 AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl
479 group_id=1234,ref_count=1,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=0,byte_count=0
480 OFPST_GROUP reply (OF1.2):
485 AT_SETUP([ofproto-dpif - group stats all buckets])
487 ADD_OF_PORTS([br0], [1], [10], [11])
488 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:11'])
489 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
493 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)"
494 AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
497 AT_CHECK([ovs-appctl revalidator/purge], [0])
498 AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout])
499 AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl
500 group_id=1234,ref_count=1,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=3,byte_count=180
501 OFPST_GROUP reply (OF1.2):
506 AT_SETUP([ofproto-dpif - registers])
508 ADD_OF_PORTS([br0], [20], [21], [22], [33], [90])
509 AT_DATA([flows.txt], [dnl
510 in_port=90 actions=resubmit:2,resubmit:3,resubmit:4,resubmit:91
511 in_port=91 actions=resubmit:5,resubmit:6,resubmit:7,resubmit:92
512 in_port=92 actions=resubmit:8,resubmit:9,resubmit:10,resubmit:11,resubmit:93
513 in_port=93 actions=resubmit:12,resubmit:13,resubmit:14,resubmit:15
515 in_port=2 actions=load:0x000db000->NXM_NX_REG0[[]]
516 in_port=3 actions=load:0xdea->NXM_NX_REG0[[20..31]]
517 in_port=4 actions=load:0xeef->NXM_NX_REG0[[0..11]]
518 in_port=5 actions=move:NXM_NX_REG0[[]]->NXM_NX_REG1[[]]
519 in_port=6 actions=load:0x22222222->NXM_NX_REG2[[]]
520 in_port=7 actions=move:NXM_NX_REG1[[20..31]]->NXM_NX_REG2[[0..11]]
521 in_port=8 actions=move:NXM_NX_REG1[[0..11]]->NXM_NX_REG2[[20..31]]
522 in_port=9,reg0=0xdeadbeef actions=output:20
523 in_port=10,reg1=0xdeadbeef actions=output:21
524 in_port=11,reg2=0xeef22dea actions=output:22
526 dnl Sanilty check all registers
527 in_port=12 actions=load:0x10->NXM_NX_REG0[[]],load:0x11->NXM_NX_REG1[[]],load:0x12->NXM_NX_REG2[[]]
528 in_port=13 actions=load:0x13->NXM_NX_REG3[[]],load:0x14->NXM_NX_REG4[[]],load:0x15->NXM_NX_REG5[[]]
529 in_port=14 actions=load:0x16->NXM_NX_REG6[[]],load:0x17->NXM_NX_REG7[[]]
530 in_port=15,reg0=0x10,reg1=0x11,reg2=0x12,reg3=0x13,reg4=0x14,reg5=0x15,reg6=0x16,reg7=0x17 actions=output:33
533 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
534 AT_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])
535 AT_CHECK([tail -1 stdout], [0],
536 [Datapath actions: 20,21,22,33
541 dnl Tests that the standardized xregs are mapped onto the legacy OVS registers
542 dnl in the manner documented in ovs-ofctl(8).
543 AT_SETUP([ofproto-dpif - extended registers])
545 ADD_OF_PORTS([br0], [1], [2], [3])
546 AT_DATA([flows.txt], [dnl
547 table=0 actions=load:0xfedcba9876543210->OXM_OF_PKT_REG1[[]],resubmit(,1)
548 table=1,reg2=0xfedcba98,reg3=0x76543210 actions=2
550 # These low-priority rules shouldn't match. They're here only to make really
551 # sure that the test fails if either of the above rules fails to match.
552 table=0,priority=0 actions=3
553 table=1,priority=0 actions=3
555 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
556 AT_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])
557 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
562 AT_SETUP([ofproto-dpif - load and move order])
564 ADD_OF_PORTS([br0], [1], [10], [11])
565 AT_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'])
566 AT_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)'])
567 AT_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])
568 AT_CHECK([tail -2 stdout], [0],
569 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
570 Datapath actions: set(ipv4(src=255.255.255.255)),10,set(ipv4(src=192.168.0.1)),11
575 dnl Tests that 1.5 copy-field can copy into the standardized xregs.
576 AT_SETUP([ofproto-dpif - copy-field into extended registers])
578 ADD_OF_PORTS([br0], [1], [2], [3])
579 AT_DATA([flows.txt], [dnl
580 table=0 actions=move:OXM_OF_ETH_SRC[[0..47]]->OXM_OF_PKT_REG0[[0..47]],goto_table(1)
581 table=1,xreg0=0x0000505400000005 actions=2
583 # These low-priority rules shouldn't match. They're here only to make really
584 # sure that the test fails if either of the above rules fails to match.
585 table=0,priority=0 actions=3
586 table=1,priority=0 actions=3
588 AT_CHECK([ovs-ofctl -O OpenFlow15 add-flows br0 flows.txt])
589 AT_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])
590 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
595 dnl Tests that 1.5 set-field with mask in the metadata register.
596 AT_SETUP([ofproto-dpif - masked set-field into metadata])
598 ADD_OF_PORTS([br0], [1], [2], [3])
599 AT_DATA([flows.txt], [dnl
600 table=0 actions=set_field:0xfafafafa5a5a5a5a->metadata,goto_table(1)
601 table=1 actions=set_field:0x6b/0xff->metadata,goto_table(2)
602 table=2,metadata=0xfafafafa5a5a5a6b actions=2
604 # These low-priority rules shouldn't match. They're here only to make really
605 # sure that the test fails if either of the above rules fails to match.
606 table=0,priority=0 actions=3
607 table=1,priority=0 actions=3
608 table=2,priority=0 actions=3
610 AT_CHECK([ovs-ofctl -O OpenFlow15 add-flows br0 flows.txt])
611 AT_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])
612 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
618 AT_SETUP([ofproto-dpif - actset_output])
621 [br0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13])
622 AT_DATA([flows.txt], [dnl
623 table=0,actset_output=unset actions=write_actions(output(2)),goto_table(1)
624 table=1 actions=move:ONFOXM_ET_ACTSET_OUTPUT[[0..31]]->OXM_OF_PKT_REG0[[0..31]],goto_table(2)
626 # Verify that actset_output got set.
627 table=2,priority=20,actset_output=2 actions=4,goto_table(3)
628 table=2,priority=10 actions=5,goto_table(3)
630 # Verify that xreg0 got copied properly from actset_output.
631 table=3,priority=20,xreg0=2 actions=6,goto_table(4)
632 table=3,priority=10 actions=7,goto_table(4)
634 # Verify that adding a group action unsets actset_output,
635 # even if output follows group.
636 table=4 actions=write_actions(group(5),output(10)),goto_table(5)
637 table=5,priority=20,actset_output=unset actions=8,goto_table(6)
638 table=5,priority=10 actions=9,goto_table(6)
640 # Verify that adding another output action doesn't change actset_output
641 # (since there's still a group).
642 table=6 actions=write_actions(output(3)),goto_table(7)
643 table=7,priority=20,actset_output=unset actions=10,goto_table(8)
644 table=7,priority=10 actions=11,goto_table(8)
646 # Verify that clearing the action set, then writing an output action,
647 # causes actset_output to be set again.
648 table=8,actions=clear_actions,write_actions(output(3),output(2)),goto_table(9)
649 table=9,priority=20,actset_output=2 actions=12
650 table=9,priority=10 actions=13
652 AT_CHECK([ovs-ofctl -O OpenFlow13 add-group br0 'group_id=5,type=all,bucket=output:1'])
653 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows.txt])
654 AT_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])
655 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 4,6,8,10,12,2
659 AT_SETUP([ofproto-dpif - push-pop])
661 ADD_OF_PORTS([br0], [20], [21], [22], [33], [90])
662 AT_DATA([flows.txt], [dnl
663 in_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
664 in_port=2 actions=pop:NXM_NX_REG0[[0..7]],output:NXM_NX_REG0[[]]
665 in_port=3 actions=pop:NXM_NX_REG1[[0..7]],output:NXM_NX_REG1[[]]
666 in_port=4 actions=pop:NXM_NX_REG2[[0..15]],output:NXM_NX_REG2[[]]
667 in_port=5 actions=pop:NXM_NX_REG3[[]],output:NXM_NX_REG3[[]]
670 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
671 AT_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])
672 AT_CHECK([tail -1 stdout], [0],
673 [Datapath actions: 33,22,21,20
678 AT_SETUP([ofproto-dpif - output])
680 ADD_OF_PORTS([br0], [1], [9], [10], [11], [55], [66], [77], [88])
681 AT_DATA([flows.txt], [dnl
682 in_port=1 actions=resubmit:2,resubmit:3,resubmit:4,resubmit:5,resubmit:6,resubmit:7,resubmit:8
683 in_port=2 actions=output:9
684 in_port=3 actions=load:55->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]],load:66->NXM_NX_REG1[[]]
685 in_port=4 actions=output:10,output:NXM_NX_REG0[[]],output:NXM_NX_REG1[[]],output:11
686 in_port=5 actions=load:77->NXM_NX_REG0[[0..15]],load:88->NXM_NX_REG0[[16..31]]
687 in_port=6 actions=output:NXM_NX_REG0[[0..15]],output:NXM_NX_REG0[[16..31]]
688 in_port=7 actions=load:0x110000ff->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]]
689 in_port=8 actions=1,9,load:9->NXM_OF_IN_PORT[[]],1,9
691 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
692 AT_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])
693 AT_CHECK([tail -1 stdout], [0],
694 [Datapath actions: 9,55,10,55,66,11,77,88,9,1
699 AT_SETUP([ofproto-dpif - dec_ttl])
701 ADD_OF_PORTS([br0], [1], [2], [3], [4])
702 AT_DATA([flows.txt], [dnl
703 table=0 in_port=1 action=dec_ttl,output:2,resubmit(1,1),output:4
704 table=1 in_port=1 action=dec_ttl,output:3
706 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
707 AT_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])
708 AT_CHECK([tail -4 stdout], [0],
709 [Megaflow: recirc_id=0,ip,in_port=1,nw_ttl=2,nw_frag=no
710 Datapath actions: set(ipv4(ttl=1)),2,4
711 This flow is handled by the userspace slow path because it:
712 - Sends "packet-in" messages to the OpenFlow controller.
714 AT_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])
715 AT_CHECK([tail -2 stdout], [0],
716 [Megaflow: recirc_id=0,ip,in_port=1,nw_ttl=3,nw_frag=no
717 Datapath actions: set(ipv4(ttl=2)),2,set(ipv4(ttl=1)),3,4
719 AT_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])
720 AT_CHECK([tail -2 stdout], [0],
721 [Megaflow: recirc_id=0,ipv6,in_port=1,nw_ttl=128,nw_frag=no
722 Datapath actions: set(ipv6(hlimit=127)),2,set(ipv6(hlimit=126)),3,4
725 AT_CAPTURE_FILE([ofctl_monitor.log])
726 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
727 AT_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])
728 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
729 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
730 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=34 in_port=1 (via invalid_ttl) data_len=34 (unbuffered)
731 ip,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
736 dnl A dec_ttl action at offset 32 in ofpacts will cause the ofpacts
737 dnl buffer to be resized just before pushing the id of the dec_ttl action.
738 dnl Thus the implementation must account for this by using the
739 dnl reallocated buffer rather than the original buffer.
741 dnl A number of similar rules are added to try and exercise
742 dnl xrealloc sufficiently that it returns a different base pointer
743 AT_SETUP([ofproto-dpif - dec_ttl without arguments at offset 32 in ofpacts])
745 ADD_OF_PORTS([br0], [1])
746 (for i in `seq 0 255`; do
747 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,output:1,dec_ttl,controller\n" $i
749 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
753 dnl A dec_ttl action at offset 32 in ofpacts will cause the ofpacts
754 dnl buffer to be resized just before pushing the id of the dec_ttl action.
755 dnl Thus the implementation must account for this by using the
756 dnl reallocated buffer rather than the original buffer.
758 dnl A number of similar rules are added to try and exercise
759 dnl xrealloc sufficiently that it returns a different base pointer
760 AT_SETUP([ofproto-dpif - dec_ttl with arguments at offset 32 in ofpacts])
762 ADD_OF_PORTS([br0], [1])
763 (for i in `seq 0 255`; do
764 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,output:1,dec_ttl(1),controller\n" $i
766 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
770 dnl A note action at offset 24 in ofpacts will cause the ofpacts
771 dnl buffer to be resized just before pushing the id of the dec_ttl action.
772 dnl Thus the implementation must account for this by using the
773 dnl reallocated buffer rather than the original buffer.
775 dnl A number of similar rules are added to try and exercise
776 dnl xrealloc sufficiently that it returns a different base pointer
777 AT_SETUP([ofproto-dpif - note at offset 24 in ofpacts])
779 ADD_OF_PORTS([br0], [1])
780 (for i in `seq 0 255`; do
781 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,note:ff,controller\n" $i
783 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
787 AT_SETUP([ofproto-dpif - output, OFPP_NONE ingress port])
789 ADD_OF_PORTS([br0], [1], [2])
791 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
793 # "in_port" defaults to OFPP_NONE if it's not specified.
794 flow="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"
795 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
796 AT_CHECK([tail -1 stdout | sed 's/Datapath actions: //' | tr "," "\n" | sort -n], [0], [dnl
805 AT_SETUP([ofproto-dpif - DSCP])
806 OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy])
807 ADD_OF_PORTS([br0], [9])
808 AT_DATA([flows.txt], [dnl
809 actions=output:LOCAL,enqueue:1:1,enqueue:1:2,enqueue:1:2,enqueue:1:1,output:1,mod_nw_tos:0,output:1,output:LOCAL
811 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
812 AT_CHECK([ovs-vsctl -- \
813 set Port p1 qos=@newqos --\
814 --id=@newqos create QoS type=linux-htb queues=1=@q1,2=@q2 --\
815 --id=@q1 create Queue dscp=1 --\
816 --id=@q2 create Queue dscp=2], [0], [ignore])
817 AT_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])
818 AT_CHECK([tail -2 stdout], [0],
819 [Megaflow: recirc_id=0,skb_priority=0,ip,in_port=9,nw_tos=252,nw_frag=no
820 Datapath actions: dnl
822 set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl
823 set(ipv4(tos=0x8/0xfc)),set(skb_priority(0x2)),1,dnl
825 set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl
826 set(ipv4(tos=0xfc/0xfc)),set(skb_priority(0)),1,dnl
827 set(ipv4(tos=0/0xfc)),1,100
832 AT_SETUP([ofproto-dpif - output/flood flags])
834 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [7])
836 AT_DATA([flows.txt], [dnl
837 in_port=local actions=local,flood
838 in_port=1 actions=flood
839 in_port=2 actions=all
840 in_port=3 actions=output:LOCAL,output:1,output:2,output:3,output:4,output:5,output:6,output:7
841 in_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
843 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
844 AT_CHECK([ovs-ofctl mod-port br0 5 noforward])
845 AT_CHECK([ovs-ofctl mod-port br0 6 noflood])
847 AT_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])
848 AT_CHECK([tail -1 stdout \
849 | sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
857 AT_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])
858 AT_CHECK([tail -1 stdout \
859 | sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
867 AT_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])
868 AT_CHECK([tail -1 stdout \
869 | sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
878 AT_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])
879 AT_CHECK([tail -1 stdout], [0],
880 [Datapath actions: 100,1,2,4,6,7
883 AT_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])
884 AT_CHECK([tail -1 stdout], [0],
885 [Datapath actions: set(skb_priority(0x1)),100,1,2,set(skb_priority(0x2)),3,set(skb_priority(0x1)),6,7
890 AT_SETUP([ofproto-dpif - Default Table Miss - OF1.0 (OFPTC_TABLE_MISS_CONTROLLER)])
891 OVS_VSWITCHD_START([dnl
892 add-port br0 p1 -- set Interface p1 type=dummy
894 on_exit 'kill `cat ovs-ofctl.pid`'
896 AT_CAPTURE_FILE([ofctl_monitor.log])
898 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
901 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)'
903 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
904 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
905 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
906 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
907 tcp,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
909 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
910 tcp,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
912 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
913 tcp,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
916 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
917 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
924 AT_SETUP([ofproto-dpif - Default Table Miss - OF1.3 (OFPTC_TABLE_MISS_DROP)])
925 OVS_VSWITCHD_START([dnl
926 add-port br0 p1 -- set Interface p1 type=dummy
928 on_exit 'kill `cat ovs-ofctl.pid`'
930 AT_CAPTURE_FILE([ofctl_monitor.log])
931 AT_CHECK([ovs-ofctl del-flows br0])
933 AT_CHECK([ovs-ofctl monitor -OOpenFlow13 -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
935 dnl Test that missed packets are droped
937 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)'
939 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
941 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
944 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
945 AT_CHECK([ovs-ofctl -OOpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
946 OFPST_FLOW reply (OF1.3):
952 AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_CONTROLLER])
953 OVS_VSWITCHD_START([dnl
954 add-port br0 p1 -- set Interface p1 type=dummy
956 on_exit 'kill `cat ovs-ofctl.pid`'
958 AT_CAPTURE_FILE([ofctl_monitor.log])
959 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=goto_table(1)'])
961 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
964 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)'
966 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
967 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
968 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
969 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
970 tcp,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
972 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
973 tcp,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
975 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
976 tcp,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
979 AT_CHECK([ovs-appctl revalidator/purge], [0])
980 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
981 n_packets=3, n_bytes=180, actions=goto_table:1
982 OFPST_FLOW reply (OF1.2):
988 AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_CONTROLLER])
989 OVS_VSWITCHD_START([dnl
990 add-port br0 p1 -- set Interface p1 type=dummy
992 on_exit 'kill `cat ovs-ofctl.pid`'
994 AT_CAPTURE_FILE([ofctl_monitor.log])
995 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=resubmit(1,1)'])
997 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1000 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)'
1003 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1004 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1007 AT_CHECK([ovs-appctl revalidator/purge], [0])
1008 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1009 n_packets=3, n_bytes=180, actions=resubmit(1,1)
1010 OFPST_FLOW reply (OF1.2):
1016 AT_SETUP([ofproto-dpif - Table Miss - OFPTC_TABLE_MISS_CONTINUE])
1017 OVS_VSWITCHD_START([dnl
1018 add-port br0 p1 -- set Interface p1 type=dummy
1020 on_exit 'kill `cat ovs-ofctl.pid`'
1022 AT_CAPTURE_FILE([ofctl_monitor.log])
1023 AT_CHECK([ovs-ofctl add-flow br0 'table=1 dl_src=10:11:11:11:11:11 actions=controller'])
1024 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1026 dnl Miss table 0, Hit table 1
1027 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1030 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)'
1032 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1033 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1035 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1036 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1037 tcp,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
1039 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1040 tcp,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
1042 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1043 tcp,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
1046 dnl Hit table 0, Miss all other tables, sent to controller
1047 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1050 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)'
1052 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1053 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1055 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1056 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1057 tcp,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
1059 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1060 tcp,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
1062 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1063 tcp,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
1066 AT_CHECK([ovs-appctl revalidator/purge], [0])
1067 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1068 table=1, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1069 OFPST_FLOW reply (OF1.2):
1075 AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_CONTINUE])
1076 OVS_VSWITCHD_START([dnl
1077 add-port br0 p1 -- set Interface p1 type=dummy
1079 on_exit 'kill `cat ovs-ofctl.pid`'
1081 AT_CAPTURE_FILE([ofctl_monitor.log])
1082 AT_DATA([flows.txt], [dnl
1083 table=0 actions=goto_table(1)
1084 table=2 dl_src=10:11:11:11:11:11 actions=controller
1086 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flows br0 flows.txt])
1087 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1089 dnl Hit table 0, Miss table 1, Hit table 2
1090 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1093 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)'
1095 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1096 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1098 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1099 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1100 tcp,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
1102 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1103 tcp,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
1105 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1106 tcp,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
1109 dnl Hit table 1, Miss all other tables, sent to controller
1110 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1113 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)'
1115 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1116 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1118 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1119 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1120 tcp,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
1122 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1123 tcp,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
1125 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1126 tcp,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
1129 AT_CHECK([ovs-appctl revalidator/purge], [0])
1130 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1131 n_packets=6, n_bytes=360, actions=goto_table:1
1132 table=2, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1133 OFPST_FLOW reply (OF1.2):
1139 AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_CONTINUE])
1140 OVS_VSWITCHD_START([dnl
1141 add-port br0 p1 -- set Interface p1 type=dummy
1143 on_exit 'kill `cat ovs-ofctl.pid`'
1145 AT_CAPTURE_FILE([ofctl_monitor.log])
1146 AT_DATA([flows.txt], [dnl
1147 table=0 actions=resubmit(1,1)
1148 table=2 dl_src=10:11:11:11:11:11 actions=controller
1150 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flows br0 flows.txt])
1151 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1153 dnl Hit table 0, Miss table 1, Dropped
1154 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1157 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)'
1159 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1161 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1164 dnl Hit table 1, Dropped
1165 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1168 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)'
1170 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1172 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1175 AT_CHECK([ovs-appctl revalidator/purge], [0])
1176 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1177 n_packets=6, n_bytes=360, actions=resubmit(1,1)
1178 table=2, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1179 OFPST_FLOW reply (OF1.2):
1185 AT_SETUP([ofproto-dpif - Table Miss - OFPTC_TABLE_MISS_DROP])
1186 OVS_VSWITCHD_START([dnl
1187 add-port br0 p1 -- set Interface p1 type=dummy
1189 on_exit 'kill `cat ovs-ofctl.pid`'
1191 AT_CAPTURE_FILE([ofctl_monitor.log])
1192 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1194 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1196 dnl Test that missed packets are droped
1198 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)'
1200 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1202 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1205 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1206 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
1213 AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_DROP])
1214 OVS_VSWITCHD_START([dnl
1215 add-port br0 p1 -- set Interface p1 type=dummy
1217 on_exit 'kill `cat ovs-ofctl.pid`'
1219 AT_CAPTURE_FILE([ofctl_monitor.log])
1220 AT_CHECK([ovs-ofctl del-flows br0])
1221 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=goto_table(1)'])
1222 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1224 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1226 dnl Test that missed packets are droped
1228 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)'
1230 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1232 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1235 AT_CHECK([ovs-appctl revalidator/purge], [0])
1236 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1237 n_packets=3, n_bytes=180, actions=goto_table:1
1238 OFPST_FLOW reply (OF1.2):
1244 AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_DROP])
1245 OVS_VSWITCHD_START([dnl
1246 add-port br0 p1 -- set Interface p1 type=dummy
1248 on_exit 'kill `cat ovs-ofctl.pid`'
1250 AT_CAPTURE_FILE([ofctl_monitor.log])
1251 AT_CHECK([ovs-ofctl del-flows br0])
1252 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=resubmit(1,1)'])
1253 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1255 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1257 dnl Test that missed packets are droped
1259 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)'
1261 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1263 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1266 AT_CHECK([ovs-appctl revalidator/purge], [0])
1267 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1268 n_packets=3, n_bytes=180, actions=resubmit(1,1)
1269 OFPST_FLOW reply (OF1.2):
1275 AT_SETUP([ofproto-dpif - controller])
1276 OVS_VSWITCHD_START([dnl
1277 add-port br0 p1 -- set Interface p1 type=dummy
1279 on_exit 'kill `cat ovs-ofctl.pid`'
1281 AT_CAPTURE_FILE([ofctl_monitor.log])
1282 AT_DATA([flows.txt], [dnl
1283 cookie=0x0 dl_src=10:11:11:11:11:11 actions=controller
1284 cookie=0x1 dl_src=20:22:22:22:22:22 actions=controller,resubmit(80,1)
1285 cookie=0x2 dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,controller
1287 cookie=0x3 table=1 in_port=80 actions=load:1->NXM_NX_REG0[[]],mod_vlan_vid:80,controller,resubmit(81,2)
1288 cookie=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)
1289 cookie=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)
1290 cookie=0x6 table=4 in_port=83 actions=load:4->NXM_NX_REG3[[]],mod_nw_src:83.83.83.83,controller,resubmit(84,5)
1291 cookie=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)
1292 cookie=0x8 table=6 in_port=85 actions=mod_tp_src:85,controller,resubmit(86,7)
1293 cookie=0x9 table=7 in_port=86 actions=mod_tp_dst:86,controller,controller
1294 cookie=0xa dl_src=40:44:44:44:44:41 actions=mod_vlan_vid:99,mod_vlan_pcp:1,controller
1295 cookie=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
1297 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1300 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1303 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)'
1305 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1306 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1308 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1309 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1310 tcp,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
1312 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1313 tcp,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
1315 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1316 tcp,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
1319 dnl Singleton controller action.
1320 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1323 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)'
1325 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1326 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1328 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1329 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1330 tcp,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
1332 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1333 tcp,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
1335 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1336 tcp,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
1339 dnl Modified controller action.
1340 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1343 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)'
1345 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1346 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1348 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1349 OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1350 tcp,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
1352 OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1353 tcp,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
1355 OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1356 tcp,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
1359 dnl Modified VLAN controller action.
1360 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1363 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)'
1365 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1366 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1368 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1369 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1370 ip,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
1372 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1373 ip,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
1375 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1376 ip,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
1380 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1383 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)'
1385 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1386 ovs-appctl -t ovs-ofctl exit
1388 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1389 NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1390 tcp,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
1392 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 reg0=0x1,in_port=1 (via action) data_len=64 (unbuffered)
1393 tcp,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
1395 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 reg0=0x1,reg1=0x2,in_port=1 (via action) data_len=64 (unbuffered)
1396 tcp,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
1398 NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,in_port=1 (via action) data_len=64 (unbuffered)
1399 tcp,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
1401 NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,in_port=1 (via action) data_len=64 (unbuffered)
1402 tcp,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
1404 NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1405 tcp,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
1407 NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1408 tcp,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
1410 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1411 tcp,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
1413 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1414 tcp,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
1418 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1421 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'
1423 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1424 ovs-appctl -t ovs-ofctl exit
1426 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1427 NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1428 udp,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
1430 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 reg0=0x1,in_port=1 (via action) data_len=64 (unbuffered)
1431 udp,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
1433 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 reg0=0x1,reg1=0x2,in_port=1 (via action) data_len=64 (unbuffered)
1434 udp,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
1436 NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,in_port=1 (via action) data_len=64 (unbuffered)
1437 udp,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
1439 NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,in_port=1 (via action) data_len=64 (unbuffered)
1440 udp,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
1442 NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1443 udp,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
1445 NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1446 udp,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
1448 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1449 udp,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
1451 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=64 (unbuffered)
1452 udp,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
1455 dnl Modified ARP controller action.
1456 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1459 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)'
1462 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1463 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1464 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1465 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1466 arp,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
1467 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1468 arp,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
1469 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1470 arp,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
1471 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1472 arp,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
1473 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1474 arp,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
1475 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1476 arp,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
1477 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1478 arp,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
1479 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1480 arp,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
1481 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1482 arp,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
1485 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1488 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1491 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'
1494 AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
1495 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1496 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1497 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1498 NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=98 in_port=1 (via action) data_len=98 (unbuffered)
1499 sctp,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
1501 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=102 reg0=0x1,in_port=1 (via action) data_len=102 (unbuffered)
1502 sctp,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
1504 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=102 reg0=0x1,reg1=0x2,in_port=1 (via action) data_len=102 (unbuffered)
1505 sctp,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
1507 NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=102 reg0=0x1,reg1=0x2,reg2=0x3,in_port=1 (via action) data_len=102 (unbuffered)
1508 sctp,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
1510 NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=102 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,in_port=1 (via action) data_len=102 (unbuffered)
1511 sctp,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
1513 NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=102 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=102 (unbuffered)
1514 sctp,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
1516 NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=102 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=102 (unbuffered)
1517 sctp,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:dd778f5f
1519 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=102 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=102 (unbuffered)
1520 sctp,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:62051f56
1522 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=102 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,in_port=1 (via action) data_len=102 (unbuffered)
1523 sctp,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:62051f56
1526 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
1527 cookie=0x1, n_packets=3, n_bytes=218, dl_src=20:22:22:22:22:22 actions=CONTROLLER:65535,resubmit(80,1)
1528 cookie=0x2, n_packets=3, n_bytes=180, dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,CONTROLLER:65535
1529 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)
1530 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)
1531 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)
1532 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)
1533 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)
1534 cookie=0x8, table=6, n_packets=3, n_bytes=218, in_port=85 actions=mod_tp_src:85,CONTROLLER:65535,resubmit(86,7)
1535 cookie=0x9, table=7, n_packets=3, n_bytes=218, in_port=86 actions=mod_tp_dst:86,CONTROLLER:65535,CONTROLLER:65535
1536 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
1537 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
1538 n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1545 AT_SETUP([ofproto-dpif - MPLS handling])
1546 OVS_VSWITCHD_START([dnl
1547 add-port br0 p1 -- set Interface p1 type=dummy
1549 on_exit 'kill `cat ovs-ofctl.pid`'
1551 AT_CAPTURE_FILE([ofctl_monitor.log])
1552 AT_DATA([flows.txt], [dnl
1553 cookie=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
1554 cookie=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
1555 cookie=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
1556 cookie=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
1557 cookie=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
1558 cookie=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
1559 cookie=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
1560 cookie=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
1561 cookie=0xa mpls,dl_src=40:44:44:44:44:49 actions=push_mpls:0x8848,load:10->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
1562 cookie=0xb dl_src=50:55:55:55:55:55 dl_type=0x8847 actions=load:1000->OXM_OF_MPLS_LABEL[[]],controller
1563 cookie=0xd dl_src=60:66:66:66:66:66 actions=pop_mpls:0x0800,controller
1564 cookie=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
1566 cookie=0xd dl_src=60:66:66:66:00:01 actions=pop_mpls:0x0800,dec_ttl,controller
1567 cookie=0xd dl_src=60:66:66:66:00:02 actions=pop_mpls:0x0800,load:0xa000001->OXM_OF_IPV4_DST[[]],controller
1568 cookie=0xd dl_src=60:66:66:66:00:03 actions=pop_mpls:0x0800,move:OXM_OF_IPV4_DST[[]]->OXM_OF_IPV4_SRC[[]],controller
1569 cookie=0xd dl_src=60:66:66:66:00:04 actions=pop_mpls:0x0800,push:OXM_OF_IPV4_DST[[]],pop:OXM_OF_IPV4_SRC[[]],controller
1570 cookie=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
1571 cookie=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
1572 cookie=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
1574 cookie=0xd dl_src=60:66:66:66:00:08 actions=pop_mpls:0x0806,resubmit(1,1)
1575 cookie=0xd table=1 arp actions=controller
1577 cookie=0xdeadbeef table=2 dl_src=60:66:66:66:00:09 actions=pop_mpls:0x0800,mod_nw_tos:48
1578 cookie=0xd dl_src=60:66:66:66:00:09 actions=resubmit(,2),controller
1579 cookie=0xd dl_src=60:66:66:66:00:0a actions=pop_mpls:0x0800,mod_nw_dst:10.0.0.1,controller
1580 cookie=0xd dl_src=60:66:66:66:00:0b actions=pop_mpls:0x0800,mod_nw_src:10.0.0.1,controller
1582 cookie=0xd dl_src=60:66:66:66:01:00 actions=pop_mpls:0x8848,controller
1583 cookie=0xd dl_src=60:66:66:66:01:01 actions=pop_mpls:0x8847,dec_mpls_ttl,controller
1584 cookie=0xd dl_src=60:66:66:66:01:02 actions=pop_mpls:0x8848,load:3->OXM_OF_MPLS_TC[[]],controller
1586 cookie=0xd dl_src=60:66:66:66:02:00 actions=pop_mpls:0x8847,pop_mpls:0x0800,controller
1587 cookie=0xe dl_src=60:66:66:66:02:01 actions=pop_mpls:0x8848,pop_mpls:0x0800,dec_ttl,controller
1588 cookie=0xe dl_src=60:66:66:66:02:10 actions=pop_mpls:0x8847,dec_mpls_ttl,pop_mpls:0x0800,dec_ttl,controller
1590 cookie=0xe dl_src=60:66:66:66:03:00 actions=pop_mpls:0x8848,pop_mpls:0x8848,controller
1591 cookie=0xe dl_src=60:66:66:66:03:01 actions=pop_mpls:0x8847,pop_mpls:0x8847,dec_mpls_ttl,controller
1592 cookie=0xe dl_src=60:66:66:66:03:10 actions=pop_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8848,dec_mpls_ttl,controller
1594 cookie=0xf dl_src=60:66:66:66:04:00 actions=pop_mpls:0x0800,push_mpls:0x8847,controller
1595 cookie=0xf dl_src=60:66:66:66:04:01 actions=pop_mpls:0x0800,push_mpls:0x8848,dec_mpls_ttl,controller
1596 cookie=0xf dl_src=60:66:66:66:04:10 actions=pop_mpls:0x0800,dec_ttl,push_mpls:0x8848,dec_mpls_ttl,controller
1598 cookie=0x5 dl_src=60:66:66:66:05:00 actions=push_mpls:0x8848,pop_mpls:0x8847,controller
1599 cookie=0x5 dl_src=60:66:66:66:05:01 actions=push_mpls:0x8847,pop_mpls:0x8848,dec_mpls_ttl,controller
1600 cookie=0x5 dl_src=60:66:66:66:05:10 actions=push_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8847,dec_mpls_ttl,controller
1602 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1604 dnl Modified MPLS controller action.
1605 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1608 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)'
1610 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1611 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1613 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1614 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1615 mpls,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
1617 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1618 mpls,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
1620 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1621 mpls,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
1624 dnl Modified MPLS controller action.
1625 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1628 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)'
1630 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1631 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1633 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1634 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1635 ip,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
1637 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1638 ip,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
1640 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1641 ip,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
1644 dnl Modified MPLS controller action.
1645 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1647 dnl 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)
1650 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)'
1652 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1653 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1655 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1656 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1657 mpls,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
1659 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1660 mpls,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
1662 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1663 mpls,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
1666 dnl Modified MPLS controller action.
1667 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1670 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))'
1672 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1673 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1675 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1676 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1677 mpls,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
1679 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1680 mpls,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
1682 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1683 mpls,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
1686 dnl Modified MPLS controller action.
1687 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1690 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)'
1692 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1693 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1695 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1696 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1697 mpls,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
1699 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1700 mpls,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
1702 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1703 mpls,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
1706 dnl Modified MPLS controller action.
1707 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1710 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)'
1712 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1713 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1715 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1716 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1717 mpls,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
1719 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1720 mpls,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
1722 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1723 mpls,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
1726 dnl Modified MPLS controller action.
1727 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1730 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)'
1732 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1733 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1735 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1736 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1737 mpls,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
1739 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1740 mpls,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
1742 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1743 mpls,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
1746 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1748 dnl Modified MPLS controller action.
1749 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1752 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)'
1754 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1755 ovs-appctl -t ovs-ofctl exit
1757 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1758 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1759 mplsm,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
1761 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1762 mplsm,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
1764 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1765 mplsm,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
1768 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1770 dnl Modified MPLS controller action.
1771 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1774 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)'
1776 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1777 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1779 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1780 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1781 mpls,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
1783 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1784 mpls,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
1786 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1787 mpls,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
1790 dnl Modified MPLS actions.
1791 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1794 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)'
1796 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1797 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1799 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1800 NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1801 mpls,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
1803 NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1804 mpls,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
1806 NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1807 mpls,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
1810 dnl Modified MPLS ipv6 controller action.
1811 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1814 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)'
1816 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1817 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1819 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1820 NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1821 mplsm,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
1823 NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1824 mplsm,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
1826 NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1827 mplsm,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
1831 dnl Modified MPLS pop action.
1832 dnl The input is a frame with two MPLS headers which tcpdump -vve shows as:
1833 dnl 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)
1834 dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44)
1836 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1839 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'
1842 # 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)'
1844 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1845 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1847 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1848 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1849 tcp,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
1851 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1852 tcp,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
1854 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1855 tcp,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
1858 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1860 dnl Modified MPLS pop action.
1861 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1862 dnl 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)
1863 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1864 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1865 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1868 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'
1870 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1871 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1873 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1874 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1875 tcp,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
1877 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1878 tcp,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
1880 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1881 tcp,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
1884 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1886 dnl Modified MPLS pop action.
1887 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1888 dnl 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)
1889 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1890 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1891 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1894 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'
1896 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1897 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1899 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1900 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1901 tcp,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
1903 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1904 tcp,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
1906 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1907 tcp,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
1910 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1912 dnl Modified MPLS pop action.
1913 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1914 dnl 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)
1915 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1916 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1917 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1920 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'
1922 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1923 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1925 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1926 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1927 tcp,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
1929 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1930 tcp,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
1932 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1933 tcp,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
1936 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1938 dnl Modified MPLS pop action.
1939 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1940 dnl 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)
1941 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1942 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1943 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1946 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'
1948 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1949 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1951 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1952 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1953 tcp,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
1955 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1956 tcp,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
1958 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1959 tcp,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
1962 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1964 dnl Modified MPLS pop action.
1965 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1966 dnl 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)
1967 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1968 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1969 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1972 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'
1974 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1975 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1977 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1978 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1979 tcp,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
1981 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1982 tcp,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
1984 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1985 tcp,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
1988 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1990 dnl Modified MPLS pop action.
1991 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1992 dnl 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)
1993 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1994 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1995 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1998 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'
2000 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2001 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2003 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2004 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2005 tcp,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
2007 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2008 tcp,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
2010 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2011 tcp,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
2014 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2016 dnl Modified MPLS pop action.
2017 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2018 dnl 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)
2019 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2020 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2021 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2024 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'
2026 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2027 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2029 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2030 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2031 tcp,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
2033 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2034 tcp,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
2036 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2037 tcp,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
2040 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2042 dnl Modified MPLS pop action.
2043 dnl The input is an ARP frame with a single MPLS label stack entry which tcpdump -vve shows as:
2044 dnl 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)
2045 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2048 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'
2050 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2051 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2053 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2054 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
2055 arp,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
2057 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
2058 arp,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
2060 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
2061 arp,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
2064 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2066 dnl Modified MPLS pop action.
2067 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2068 dnl 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)
2069 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2070 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2071 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2074 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'
2076 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2077 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2079 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2080 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2081 tcp,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
2083 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2084 tcp,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
2086 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2087 tcp,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
2090 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2092 dnl Modified MPLS pop action.
2093 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2094 dnl 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)
2095 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2096 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2097 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2100 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'
2102 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2103 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2105 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2106 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2107 tcp,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
2109 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2110 tcp,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
2112 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2113 tcp,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
2116 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2118 dnl Modified MPLS pop action.
2119 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2120 dnl 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)
2121 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2122 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2123 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2126 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'
2128 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2129 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2131 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2132 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2133 tcp,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
2135 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2136 tcp,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
2138 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2139 tcp,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
2142 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2144 dnl Modified MPLS pop action.
2145 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2146 dnl 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)
2147 dnl (label 20, exp 0, [S], ttl 31)
2148 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2149 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2150 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2153 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'
2155 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2156 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2158 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2159 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2160 mplsm,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
2162 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2163 mplsm,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
2165 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2166 mplsm,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
2169 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2171 dnl Modified MPLS pop action.
2172 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2173 dnl 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)
2174 dnl (label 20, exp 0, [S], ttl 31)
2175 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2176 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2177 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2180 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'
2182 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2183 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2185 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2186 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2187 mpls,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
2189 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2190 mpls,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
2192 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2193 mpls,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
2196 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2198 dnl Modified MPLS pop action.
2199 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2200 dnl 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)
2201 dnl (label 20, exp 0, [S], ttl 31)
2202 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2203 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2204 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2207 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'
2209 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2210 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2212 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2213 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2214 mplsm,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
2216 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2217 mplsm,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
2219 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2220 mplsm,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
2223 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2225 dnl Modified MPLS pop action.
2226 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2227 dnl 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)
2228 dnl (label 20, exp 0, [S], ttl 31)
2229 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2230 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2231 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2234 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'
2236 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2237 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2239 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2240 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2241 tcp,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
2243 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2244 tcp,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
2246 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2247 tcp,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
2250 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2252 dnl Modified MPLS pop action.
2253 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2254 dnl 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)
2255 dnl (label 20, exp 0, [S], ttl 31)
2256 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2257 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2258 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2261 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'
2264 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2265 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2267 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2268 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2269 tcp,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
2271 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2272 tcp,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
2274 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2275 tcp,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
2278 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2280 dnl Modified MPLS pop action.
2281 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2282 dnl 60:66:66:66:02:10 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2283 dnl (label 20, exp 0, [S], ttl 31)
2284 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2285 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2286 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2289 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'
2291 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2292 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2294 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2295 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2296 tcp,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
2298 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2299 tcp,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
2301 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2302 tcp,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
2305 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2307 dnl Modified MPLS pop action.
2308 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2309 dnl 60:66:66:66:03:00 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
2310 dnl (label 20, exp 0, ttl 31)
2311 dnl (label 20, exp 0, [S], ttl 30)
2312 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2313 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2314 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2317 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'
2319 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2320 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2322 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2323 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2324 mplsm,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
2326 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2327 mplsm,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
2329 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2330 mplsm,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
2333 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2335 dnl Modified MPLS pop action.
2336 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2337 dnl 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)
2338 dnl (label 20, exp 0, ttl 31)
2339 dnl (label 20, exp 0, [S], ttl 30)
2340 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2341 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2342 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2345 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'
2347 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2348 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2350 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2351 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2352 mpls,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
2354 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2355 mpls,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
2357 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2358 mpls,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
2361 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2363 dnl Modified MPLS pop action.
2364 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2365 dnl 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)
2366 dnl (label 20, exp 0, ttl 31)
2367 dnl (label 20, exp 0, [S], ttl 30)
2368 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2369 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2370 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2373 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'
2375 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2376 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2378 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2379 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2380 mplsm,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
2382 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2383 mplsm,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
2385 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2386 mplsm,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
2389 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2391 dnl Modified MPLS pop action.
2392 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2393 dnl 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)
2394 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2395 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2396 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2399 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'
2401 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2402 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2404 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2405 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2406 mpls,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
2408 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2409 mpls,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
2411 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2412 mpls,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
2415 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2417 dnl Modified MPLS pop action.
2418 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2419 dnl 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)
2420 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2421 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2422 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2425 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'
2427 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2428 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2430 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2431 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2432 mplsm,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
2434 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2435 mplsm,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
2437 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2438 mplsm,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
2441 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2443 dnl Modified MPLS pop action.
2444 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2445 dnl 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)
2446 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2447 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2448 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2451 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'
2453 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2454 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2456 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2457 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2458 mplsm,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
2460 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2461 mplsm,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
2463 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2464 mplsm,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
2467 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2469 dnl Modified MPLS pop action.
2470 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2471 dnl 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)
2472 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2473 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2474 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2477 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'
2480 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2481 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2483 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2484 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2485 mpls,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
2487 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2488 mpls,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
2490 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2491 mpls,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
2494 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2496 dnl Modified MPLS pop action.
2497 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2498 dnl 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)
2499 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2500 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2501 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2504 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'
2506 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2507 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2509 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2510 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2511 mplsm,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
2513 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2514 mplsm,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
2516 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2517 mplsm,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
2520 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2522 dnl Modified MPLS pop action.
2523 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2524 dnl 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)
2525 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2526 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2527 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2530 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'
2533 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2534 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2536 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2537 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2538 mpls,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
2540 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2541 mpls,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
2543 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2544 mpls,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
2547 AT_CHECK([ovs-appctl revalidator/purge], [0])
2548 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
2549 cookie=0x5, n_packets=3, n_bytes=186, dl_src=60:66:66:66:05:00 actions=push_mpls:0x8848,pop_mpls:0x8847,CONTROLLER:65535
2550 cookie=0x5, 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
2551 cookie=0x5, 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
2552 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
2553 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
2554 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
2555 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
2556 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
2557 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
2558 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
2559 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
2560 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
2561 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
2562 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
2563 cookie=0xd, n_packets=3, n_bytes=180, dl_src=60:66:66:66:00:08 actions=pop_mpls:0x0806,resubmit(1,1)
2564 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:01 actions=pop_mpls:0x0800,dec_ttl,CONTROLLER:65535
2565 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
2566 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
2567 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
2568 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
2569 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
2570 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
2571 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:09 actions=resubmit(,2),CONTROLLER:65535
2572 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
2573 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
2574 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:66:66 actions=pop_mpls:0x0800,CONTROLLER:65535
2575 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:01:00 actions=pop_mpls:0x8848,CONTROLLER:65535
2576 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
2577 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
2578 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
2579 cookie=0xd, table=1, n_packets=3, n_bytes=168, arp actions=CONTROLLER:65535
2580 cookie=0xdeadbeef, table=2, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:09 actions=pop_mpls:0x0800,mod_nw_tos:48
2581 cookie=0xe, 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
2582 cookie=0xe, 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
2583 cookie=0xe, n_packets=3, n_bytes=210, dl_src=60:66:66:66:03:00 actions=pop_mpls:0x8848,pop_mpls:0x8848,CONTROLLER:65535
2584 cookie=0xe, 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
2585 cookie=0xe, 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
2586 cookie=0xf, n_packets=3, n_bytes=186, dl_src=60:66:66:66:04:00 actions=pop_mpls:0x0800,push_mpls:0x8847,CONTROLLER:65535
2587 cookie=0xf, 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
2588 cookie=0xf, 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
2595 AT_SETUP([ofproto-dpif - MPLS handling with goto_table])
2596 OVS_VSWITCHD_START([dnl
2597 add-port br0 p1 -- set Interface p1 type=dummy
2599 on_exit 'kill `cat ovs-ofctl.pid`'
2601 AT_CAPTURE_FILE([ofctl_monitor.log])
2602 AT_DATA([flows.txt], [dnl
2603 table=0 mplsm actions=pop_mpls:0x800,goto_table(1)
2604 table=1 ip,ip_dscp=8 actions=controller
2606 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
2609 dnl Modified MPLS pop action.
2610 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2611 dnl 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)
2612 dnl (tos 0x20, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2613 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2614 AT_CHECK([ovs-ofctl -O OpenFlow12 monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2617 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'
2619 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2620 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2622 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2623 OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2624 tcp,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
2626 OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2627 tcp,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
2629 OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2630 tcp,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
2633 AT_CHECK([ovs-appctl revalidator/purge], [0])
2634 AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2635 n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,goto_table:1
2636 table=1, n_packets=3, n_bytes=174, ip,nw_tos=32 actions=CONTROLLER:65535
2637 OFPST_FLOW reply (OF1.2):
2643 AT_SETUP([ofproto-dpif - MPLS handling with write_actions])
2644 OVS_VSWITCHD_START([dnl
2645 add-port br0 p1 -- set Interface p1 type=dummy
2647 on_exit 'kill `cat ovs-ofctl.pid`'
2649 dnl N.B: The first (and only) action that accesses L3 data after the
2650 dnl pop_mpls action is present in write_actions. This exercises recirculation
2651 dnl triggered in write_actions due to a previous action not in write actions.
2652 AT_CAPTURE_FILE([ofctl_monitor.log])
2653 AT_DATA([flows.txt], [dnl
2654 mplsm actions=pop_mpls:0x800,write_actions(dec_ttl,controller)
2656 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
2658 dnl Modified MPLS pop action.
2659 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2660 dnl 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)
2661 dnl (tos 0x20, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2662 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2663 AT_CHECK([ovs-ofctl -O OpenFlow12 monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2666 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'
2668 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2669 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2671 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2672 OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2673 tcp,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
2675 OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2676 tcp,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
2678 OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2679 tcp,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
2682 AT_CHECK([ovs-appctl revalidator/purge], [0])
2683 AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2684 n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,write_actions(dec_ttl,CONTROLLER:65535)
2685 OFPST_FLOW reply (OF1.2):
2691 AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.0)])
2692 OVS_VSWITCHD_START([dnl
2693 add-port br0 p1 -- set Interface p1 type=dummy
2695 on_exit 'kill `cat ovs-ofctl.pid`'
2697 AT_CAPTURE_FILE([ofctl_monitor.log])
2698 # A table-miss flow has priority 0 and no match
2699 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2701 dnl Singleton controller action.
2702 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2705 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)'
2707 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2708 ovs-appctl -t ovs-ofctl exit
2710 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2711 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2712 tcp,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
2714 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2715 tcp,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
2717 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2718 tcp,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
2721 AT_CHECK([ovs-appctl revalidator/purge], [0])
2722 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2723 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2731 AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.3)])
2732 OVS_VSWITCHD_START([dnl
2733 add-port br0 p1 -- set Interface p1 type=dummy
2735 on_exit 'kill `cat ovs-ofctl.pid`'
2737 AT_CAPTURE_FILE([ofctl_monitor.log])
2738 # A table-miss flow has priority 0 and no match
2739 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2741 dnl Singleton controller action.
2742 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2745 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)'
2747 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2748 ovs-appctl -t ovs-ofctl exit
2750 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2752 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2753 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2754 tcp,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
2756 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2757 tcp,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
2759 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2760 tcp,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
2763 AT_CHECK([ovs-appctl revalidator/purge], [0])
2764 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2765 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2766 OFPST_FLOW reply (OF1.3):
2772 AT_SETUP([ofproto-dpif - table-miss flow with async config (OpenFlow 1.3)])
2773 OVS_VSWITCHD_START([dnl
2774 add-port br0 p1 -- set Interface p1 type=dummy
2776 on_exit 'kill `cat ovs-ofctl.pid`'
2778 ovs-appctl time/stop
2780 AT_CAPTURE_FILE([ofctl_monitor.log])
2781 # A table-miss flow has priority 0 and no match
2782 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2784 dnl Singleton controller action.
2785 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2787 # Become slave (OF 1.3), which should disable everything except port status.
2788 ovs-appctl -t ovs-ofctl ofctl/send 041800180000000200000003000000000000000000000001
2790 # Ensure that ovs-vswitchd gets a chance to reply before sending another command.
2791 ovs-appctl time/warp 500 100
2793 # Use OF 1.3 OFPT_SET_ASYNC to enable OFPR_NO_MATCH for slave only.
2794 ovs-appctl -t ovs-ofctl ofctl/send 041c002000000002000000000000000100000000000000000000000000000000
2796 ovs-appctl time/warp 500 100
2798 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)'
2800 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2801 ovs-appctl -t ovs-ofctl exit
2803 AT_CHECK([ovs-appctl revalidator/purge], [0])
2804 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2805 send: OFPT_ROLE_REQUEST (OF1.3) (xid=0x2): role=slave generation_id=1
2806 OFPT_ROLE_REPLY (OF1.3) (xid=0x2): role=slave generation_id=1
2808 send: OFPT_SET_ASYNC (OF1.3) (xid=0x2):
2819 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2820 tcp,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
2822 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2823 tcp,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
2825 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2826 tcp,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
2829 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2831 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2832 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2833 OFPST_FLOW reply (OF1.3):
2840 AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.4)])
2841 OVS_VSWITCHD_START([dnl
2842 add-port br0 p1 -- set Interface p1 type=dummy
2844 on_exit 'kill `cat ovs-ofctl.pid`'
2846 AT_CAPTURE_FILE([ofctl_monitor.log])
2847 # A table-miss flow has priority 0 and no match
2848 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2850 dnl Singleton controller action.
2851 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow14 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2854 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)'
2856 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2857 ovs-appctl -t ovs-ofctl exit
2859 AT_CHECK([ovs-appctl revalidator/purge], [0])
2860 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2861 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2862 tcp,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
2864 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2865 tcp,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
2867 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2868 tcp,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
2871 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2873 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2874 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2875 OFPST_FLOW reply (OF1.4):
2882 AT_SETUP([ofproto-dpif - packet-in reasons (Openflow 1.3)])
2883 OVS_VSWITCHD_START([dnl
2884 add-port br0 p1 -- set Interface p1 type=dummy
2886 on_exit 'kill `cat ovs-ofctl.pid`'
2888 AT_CAPTURE_FILE([ofctl_monitor.log])
2889 AT_DATA([flows.txt], [dnl
2890 table=0 in_port=1 actions=write_actions(output(CONTROLLER)),goto_table(1)
2891 table=1 actions=output(CONTROLLER),goto_table(2)
2892 table=2 actions=group:1234
2894 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:CONTROLLER'])
2895 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flows br0 flows.txt])
2897 dnl Singleton controller action.
2898 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2901 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)'
2903 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2904 ovs-appctl -t ovs-ofctl exit
2906 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2908 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2909 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2910 tcp,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
2912 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2913 tcp,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
2915 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2916 tcp,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
2918 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2919 tcp,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
2921 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2922 tcp,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
2924 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2925 tcp,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
2927 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2928 tcp,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
2930 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2931 tcp,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
2933 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2934 tcp,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
2937 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2939 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2940 n_packets=3, n_bytes=180, in_port=1 actions=write_actions(CONTROLLER:65535),goto_table:1
2941 table=1, n_packets=3, n_bytes=180, actions=CONTROLLER:65535,goto_table:2
2942 table=2, n_packets=3, n_bytes=180, actions=group:1234
2943 OFPST_FLOW reply (OF1.3):
2950 AT_SETUP([ofproto-dpif - packet-in reasons (Openflow 1.4)])
2951 OVS_VSWITCHD_START([dnl
2952 add-port br0 p1 -- set Interface p1 type=dummy
2954 on_exit 'kill `cat ovs-ofctl.pid`'
2956 AT_CAPTURE_FILE([ofctl_monitor.log])
2957 AT_DATA([flows.txt], [dnl
2958 table=0 in_port=1 actions=write_actions(output(CONTROLLER)),goto_table(1)
2959 table=1 actions=output(CONTROLLER),goto_table(2)
2960 table=2 actions=group:1234
2962 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:CONTROLLER'])
2963 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-flows br0 flows.txt])
2965 dnl Singleton controller action.
2966 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow14 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2969 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)'
2971 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2972 ovs-appctl -t ovs-ofctl exit
2974 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2976 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2977 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2978 tcp,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
2980 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via group) data_len=60 (unbuffered)
2981 tcp,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
2983 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action_set) data_len=60 (unbuffered)
2984 tcp,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
2986 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2987 tcp,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
2989 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via group) data_len=60 (unbuffered)
2990 tcp,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
2992 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action_set) data_len=60 (unbuffered)
2993 tcp,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
2995 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2996 tcp,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
2998 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via group) data_len=60 (unbuffered)
2999 tcp,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
3001 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action_set) data_len=60 (unbuffered)
3002 tcp,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
3005 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
3007 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 dump-flows br0 | ofctl_strip | sort], [0], [dnl
3008 n_packets=3, n_bytes=180, in_port=1 actions=write_actions(CONTROLLER:65535),goto_table:1
3009 table=1, n_packets=3, n_bytes=180, actions=CONTROLLER:65535,goto_table:2
3010 table=2, n_packets=3, n_bytes=180, actions=group:1234
3011 OFPST_FLOW reply (OF1.4):
3018 AT_SETUP([ofproto-dpif - ARP modification slow-path])
3020 ADD_OF_PORTS([br0], [1], [2])
3022 ovs-vsctl -- set Interface p2 type=dummy options:pcap=p2.pcap
3023 ovs-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'
3025 # Input some packets that should follow the arp modification slow-path.
3027 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)'
3029 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
3031 # Check the packets that were output.
3032 AT_CHECK([ovs-ofctl parse-pcap p2.pcap], [0], [dnl
3033 arp,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
3034 arp,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
3035 arp,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
3036 arp,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
3037 arp,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
3038 arp,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
3039 arp,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
3040 arp,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
3041 arp,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
3047 AT_SETUP([ofproto-dpif - VLAN handling])
3049 [set Bridge br0 fail-mode=standalone -- \
3050 add-port br0 p1 trunks=10,12 -- \
3051 add-port br0 p2 tag=10 -- \
3052 add-port br0 p3 tag=12 \
3053 other-config:priority-tags=true -- \
3054 add-port br0 p4 tag=12 -- \
3055 add-port br0 p5 vlan_mode=native-tagged tag=10 -- \
3056 add-port br0 p6 vlan_mode=native-tagged tag=10 trunks=10,12 -- \
3057 add-port br0 p7 vlan_mode=native-untagged tag=12 -- \
3058 add-port br0 p8 vlan_mode=native-untagged tag=12 trunks=10,12 \
3059 other-config:priority-tags=true -- \
3060 set Interface p1 type=dummy -- \
3061 set Interface p2 type=dummy -- \
3062 set Interface p3 type=dummy -- \
3063 set Interface p4 type=dummy -- \
3064 set Interface p5 type=dummy -- \
3065 set Interface p6 type=dummy -- \
3066 set Interface p7 type=dummy -- \
3067 set Interface p8 type=dummy --])
3069 dnl Each of these specifies an in_port by number, a VLAN VID (or "none"),
3070 dnl a VLAN PCP (used if the VID isn't "none") and the expected set of datapath
3076 "100 10 0 1,5,6,7,8,pop_vlan,2" \
3077 "100 10 1 1,5,6,7,8,pop_vlan,2" \
3080 "100 12 0 1,5,6,pop_vlan,3,4,7,8" \
3081 "100 12 1 1,5,6,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3085 "1 10 0 5,6,7,8,100,pop_vlan,2" \
3086 "1 10 1 5,6,7,8,100,pop_vlan,2" \
3089 "1 12 0 5,6,100,pop_vlan,3,4,7,8" \
3090 "1 12 1 5,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3091 "2 none 0 push_vlan(vid=10,pcp=0),1,5,6,7,8,100" \
3092 "2 0 0 pop_vlan,push_vlan(vid=10,pcp=0),1,5,6,7,8,100" \
3093 "2 0 1 pop_vlan,push_vlan(vid=10,pcp=1),1,5,6,7,8,100" \
3100 "3 none 0 4,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3101 "3 0 0 pop_vlan,4,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3102 "3 0 1 8,pop_vlan,4,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
3109 "4 none 0 3,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3110 "4 0 0 pop_vlan,3,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3111 "4 0 1 3,8,pop_vlan,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
3118 "5 none 0 2,push_vlan(vid=10,pcp=0),1,6,7,8,100" \
3119 "5 0 0 pop_vlan,2,push_vlan(vid=10,pcp=0),1,6,7,8,100" \
3120 "5 0 1 pop_vlan,2,push_vlan(vid=10,pcp=1),1,6,7,8,100" \
3121 "5 10 0 1,6,7,8,100,pop_vlan,2" \
3122 "5 10 1 1,6,7,8,100,pop_vlan,2" \
3125 "5 12 0 1,6,100,pop_vlan,3,4,7,8" \
3126 "5 12 1 1,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3127 "6 none 0 2,push_vlan(vid=10,pcp=0),1,5,7,8,100" \
3128 "6 0 0 pop_vlan,2,push_vlan(vid=10,pcp=0),1,5,7,8,100" \
3129 "6 0 1 pop_vlan,2,push_vlan(vid=10,pcp=1),1,5,7,8,100" \
3130 "6 10 0 1,5,7,8,100,pop_vlan,2" \
3131 "6 10 1 1,5,7,8,100,pop_vlan,2" \
3134 "6 12 0 1,5,100,pop_vlan,3,4,7,8" \
3135 "6 12 1 1,5,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3136 "7 none 0 3,4,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3137 "7 0 0 pop_vlan,3,4,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3138 "7 0 1 3,8,pop_vlan,4,push_vlan(vid=12,pcp=1),1,5,6,100" \
3139 "7 10 0 1,5,6,8,100,pop_vlan,2" \
3140 "7 10 1 1,5,6,8,100,pop_vlan,2" \
3143 "7 12 0 1,5,6,100,pop_vlan,3,4,8" \
3144 "7 12 1 1,5,6,100,pop_vlan,4,push_vlan(vid=0,pcp=1),3,8" \
3145 "8 none 0 3,4,7,push_vlan(vid=12,pcp=0),1,5,6,100" \
3146 "8 0 0 pop_vlan,3,4,7,push_vlan(vid=12,pcp=0),1,5,6,100" \
3147 "8 0 1 3,pop_vlan,4,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
3148 "8 10 0 1,5,6,7,100,pop_vlan,2" \
3149 "8 10 1 1,5,6,7,100,pop_vlan,2" \
3152 "8 12 0 1,5,6,100,pop_vlan,3,4,7" \
3153 "8 12 1 1,5,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3"
3161 if test $vlan = none; then
3162 flow="in_port($in_port),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff),eth_type(0xabcd)"
3164 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))"
3167 echo "----------------------------------------------------------------------"
3168 echo "in_port=$in_port vlan=$vlan pcp=$pcp"
3170 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3171 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
3173 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
3175 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
3181 AT_SETUP([ofproto-dpif - MPLS handling])
3182 OVS_VSWITCHD_START([dnl
3183 add-port br0 p1 -- set Interface p1 type=dummy
3185 on_exit 'kill `cat ovs-ofctl.pid`'
3187 AT_CAPTURE_FILE([ofctl_monitor.log])
3188 AT_DATA([flows.txt], [dnl
3189 dl_src=40:44:44:44:00:00 actions=push_mpls:0x8847,controller
3190 dl_src=40:44:44:44:00:01,mpls actions=push_mpls:0x8847,controller
3191 dl_src=40:44:44:44:00:02,mpls actions=push_mpls:0x8848,controller
3193 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt])
3195 dnl In this test, we push an MPLS tag to an ethernet packet.
3196 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3199 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)'
3201 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3202 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3204 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3205 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3206 mpls,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
3207 00000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
3208 00000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
3209 00000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
3210 00000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
3212 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3213 mpls,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
3214 00000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
3215 00000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
3216 00000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
3217 00000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
3219 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3220 mpls,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
3221 00000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
3222 00000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
3223 00000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
3224 00000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
3227 dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
3228 dnl copied exactly, except for the BOS bit.
3229 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3232 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)'
3234 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3235 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3237 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3238 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3239 mpls,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
3240 00000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
3241 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3242 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3243 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3245 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3246 mpls,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
3247 00000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
3248 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3249 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3250 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3252 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3253 mpls,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
3254 00000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
3255 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3256 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3257 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3260 dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
3261 dnl copied exactly, except for the BOS bit. The ethertype should be updated
3262 dnl to the MPLS ethertype of the MPLS push action which differs to that
3263 dnl of the input packet.
3264 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3267 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)'
3269 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3270 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
3272 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3273 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3274 mplsm,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
3275 00000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
3276 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3277 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3278 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3280 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3281 mplsm,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
3282 00000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
3283 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3284 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3285 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3287 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3288 mplsm,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
3289 00000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
3290 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3291 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3292 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3298 AT_SETUP([ofproto-dpif - VLAN+MPLS handling])
3299 OVS_VSWITCHD_START([dnl
3300 add-port br0 p1 -- set Interface p1 type=dummy
3302 on_exit 'kill `cat ovs-ofctl.pid`'
3304 AT_CAPTURE_FILE([ofctl_monitor.log])
3305 AT_DATA([flows.txt], [dnl
3306 cookie=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
3307 cookie=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
3308 cookie=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
3309 cookie=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
3310 cookie=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
3311 cookie=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
3312 cookie=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
3313 cookie=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
3314 cookie=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
3315 cookie=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
3317 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt])
3319 dnl Modified MPLS controller action.
3320 dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see
3321 dnl both of these in the final flow
3322 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3325 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)'
3327 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3328 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3330 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3331 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3332 mpls,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
3333 00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
3334 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3335 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3336 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3337 00000040 00 00 00 00
3339 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3340 mpls,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
3341 00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
3342 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3343 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3344 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3345 00000040 00 00 00 00
3347 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3348 mpls,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
3349 00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
3350 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3351 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3352 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3353 00000040 00 00 00 00
3356 dnl Modified MPLS controller action.
3357 dnl In this test, the input packet in vlan-tagged, which should be stripped
3358 dnl before we push the MPLS and VLAN tags.
3359 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3362 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))'
3364 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3365 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3367 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3368 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3369 mpls,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
3370 00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
3371 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3372 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3373 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3375 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3376 mpls,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
3377 00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
3378 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3379 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3380 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3382 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3383 mpls,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
3384 00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
3385 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3386 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3387 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3390 dnl Modified MPLS controller action.
3391 dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see
3392 dnl both of these in the final flow
3393 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3396 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)'
3398 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3399 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3401 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3402 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3403 mpls,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
3404 00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
3405 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3406 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3407 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3408 00000040 00 00 00 00
3410 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3411 mpls,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
3412 00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
3413 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3414 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3415 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3416 00000040 00 00 00 00
3418 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3419 mpls,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
3420 00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
3421 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3422 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3423 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3424 00000040 00 00 00 00
3427 dnl Modified MPLS controller action.
3428 dnl In this test, the input packet in vlan-tagged, which should be stripped
3429 dnl before we push the MPLS and VLAN tags.
3430 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3433 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))'
3435 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3436 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3438 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3439 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3440 mpls,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
3441 00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
3442 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3443 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3444 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3446 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3447 mpls,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
3448 00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
3449 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3450 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3451 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3453 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3454 mpls,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
3455 00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
3456 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3457 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3458 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3461 dnl Modified MPLS controller action.
3462 dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these
3463 dnl actions are reordered, so we see both of these in the final flow.
3464 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3467 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)'
3469 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3470 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3472 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3473 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3474 mpls,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
3475 00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
3476 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3477 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3478 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3479 00000040 00 00 00 00
3481 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3482 mpls,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
3483 00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
3484 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3485 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3486 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3487 00000040 00 00 00 00
3489 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3490 mpls,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
3491 00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
3492 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3493 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3494 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3495 00000040 00 00 00 00
3498 dnl Modified MPLS controller action.
3499 dnl In this test, the input packet in vlan-tagged, which should be stripped
3500 dnl before we push the MPLS and VLAN tags.
3501 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3504 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))'
3506 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3507 OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
3509 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3510 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3511 mpls,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
3512 00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
3513 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3514 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3515 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3517 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3518 mpls,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
3519 00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
3520 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3521 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3522 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3524 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3525 mpls,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
3526 00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
3527 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3528 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3529 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3532 dnl Modified MPLS controller action.
3533 dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these
3534 dnl actions are reordered, so we see both of these in the final flow.
3535 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3538 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)'
3540 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3541 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3543 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3544 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3545 mpls,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
3546 00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
3547 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3548 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3549 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3550 00000040 00 00 00 00
3552 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3553 mpls,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
3554 00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
3555 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3556 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3557 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3558 00000040 00 00 00 00
3560 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3561 mpls,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
3562 00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
3563 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3564 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3565 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3566 00000040 00 00 00 00
3569 dnl Modified MPLS controller action.
3570 dnl In this test, the input packet in vlan-tagged, which should be stripped
3571 dnl before we push the MPLS and VLAN tags.
3572 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 -m 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
3575 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))'
3577 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3578 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3580 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3581 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3582 mpls,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
3583 00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
3584 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3585 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3586 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3588 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3589 mpls,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
3590 00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
3591 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3592 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3593 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3595 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3596 mpls,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
3597 00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
3598 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3599 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3600 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3603 dnl Modified MPLS controller action.
3604 dnl In this test, the input packet in vlan-tagged, which should be stripped
3605 dnl before we push the MPLS and VLAN tags.
3606 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3609 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))'
3611 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3612 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3614 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3615 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3616 mpls,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
3617 00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
3618 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3619 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3620 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3622 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3623 mpls,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
3624 00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
3625 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3626 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3627 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3629 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3630 mpls,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
3631 00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
3632 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3633 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3634 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3637 dnl Modified MPLS controller action.
3638 dnl In this test, the input packet in vlan-tagged, which should be modified
3639 dnl before we push MPLS and VLAN tags.
3640 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3643 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))'
3645 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3646 ovs-appctl -t ovs-ofctl exit
3648 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3649 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3650 mpls,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
3651 00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
3652 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3653 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3654 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3656 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3657 mpls,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
3658 00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
3659 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3660 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3661 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3663 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3664 mpls,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
3665 00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
3666 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3667 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3668 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3671 AT_CHECK([ovs-appctl revalidator/purge], [0])
3672 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
3673 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
3674 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
3675 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
3676 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
3677 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
3678 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
3679 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
3680 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
3681 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
3682 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
3683 OFPST_FLOW reply (OF1.2):
3689 AT_SETUP([ofproto-dpif - fragment handling - trace])
3691 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3692 AT_DATA([flows.txt], [dnl
3693 priority=75 tcp ip_frag=no tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:1
3694 priority=75 tcp ip_frag=first tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:2
3695 priority=50 tcp ip_frag=no actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:4
3696 priority=50 tcp ip_frag=first actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:5
3697 priority=50 tcp ip_frag=later actions=output:6
3699 AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
3701 base_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"
3702 no_flow="$base_flow,frag=no),tcp(src=12345,dst=80)"
3703 first_flow="$base_flow,frag=first),tcp(src=12345,dst=80)"
3704 later_flow="$base_flow,frag=later)"
3706 # mode no first later
3709 'drop 1 drop drop' \
3718 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3719 for type in no first later; do
3720 eval flow=\$${type}_flow exp_output=\$$type
3721 printf "\n%s\n" "----$mode $type-----"
3722 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3724 if test $mode = drop && test $type != no; then
3725 echo 'Packets dropped because they are IP fragments and the fragment handling mode is "drop".' >> expout
3726 echo "Datapath actions: $exp_output" >> expout
3727 elif test $type = later; then
3728 echo "Datapath actions: $exp_output" >> expout
3730 echo "Datapath actions: set(tcp(src=80,dst=80)),$exp_output" >> expout
3732 AT_CHECK([grep 'IP fragments' stdout; tail -1 stdout], [0], [expout])
3738 AT_SETUP([ofproto-dpif - fragment handling - upcall])
3740 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3741 AT_DATA([flows.txt], [dnl
3742 priority=75 tcp ip_frag=no tp_dst=80 actions=set_field:81->tcp_dst,output:1
3743 priority=75 tcp ip_frag=first tp_dst=80 actions=set_field:81->tcp_dst,output:2
3744 priority=50 tcp ip_frag=no actions=set_field:81->tcp_dst,output:4
3745 priority=50 tcp ip_frag=first actions=set_field:81->tcp_dst,output:5
3746 priority=50 tcp ip_frag=later actions=output:6
3748 AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
3750 base_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"
3751 no_flow="$base_flow,frag=no),tcp(src=12345,dst=80)"
3752 first_flow="$base_flow,frag=first),tcp(src=12345,dst=80)"
3753 later_flow="$base_flow,frag=later)"
3755 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
3759 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3760 for type in no first later; do
3761 eval flow=\$${type}_flow
3762 printf "\n%s\n" "----$mode $type-----"
3764 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3767 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3768 flow-dump from non-dpdk interfaces:
3769 recirc_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
3770 recirc_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
3771 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, bytes:0, used:never, actions:6
3776 AT_CHECK([ovs-appctl revalidator/purge], [0])
3777 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3778 for type in no first later; do
3779 eval flow=\$${type}_flow
3780 printf "\n%s\n" "----$mode $type-----"
3782 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3785 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3786 flow-dump from non-dpdk interfaces:
3787 recirc_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
3788 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=first), packets:0, bytes:0, used:never, actions:drop
3789 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=later), packets:0, bytes:0, used:never, actions:drop
3794 AT_CHECK([ovs-appctl revalidator/purge], [0])
3795 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3796 for type in no first later; do
3797 eval flow=\$${type}_flow
3798 printf "\n%s\n" "----$mode $type-----"
3800 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3803 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3804 flow-dump from non-dpdk interfaces:
3805 recirc_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
3806 recirc_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
3807 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, bytes:0, used:never, actions:6
3813 AT_SETUP([ofproto-dpif - fragment handling - actions])
3815 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3817 AT_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])
3818 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3819 source field tcp_dst lacks correct prerequisites
3820 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3823 AT_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])
3824 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3825 destination field tcp_src lacks correct prerequisites
3826 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3829 AT_CHECK([ovs-ofctl add-flow br0 "udp,ip_frag=later actions=set_field:8888->udp_src,output:1"], [1], [], [stderr])
3830 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3831 set_field udp_src lacks correct prerequisities
3832 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3835 AT_CHECK([ovs-ofctl add-flow br0 "udp,ip_frag=later actions=load:8888->NXM_OF_UDP_DST[[]],output:1"], [1], [], [stderr])
3836 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3837 set_field udp_dst lacks correct prerequisities
3838 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3841 AT_CHECK([ovs-ofctl add-flow br0 "sctp,ip_frag=later actions=set_field:8888->sctp_src,output:1"], [1], [], [stderr])
3842 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3843 set_field sctp_src lacks correct prerequisities
3844 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3847 AT_CHECK([ovs-ofctl add-flow br0 "sctp,ip_frag=later actions=set_field:8888->sctp_dst,output:1"], [1], [], [stderr])
3848 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3849 set_field sctp_dst lacks correct prerequisities
3850 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3853 AT_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])
3854 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3855 source field tcp_dst lacks correct prerequisites
3856 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3859 AT_DATA([flows.txt], [dnl
3860 priority=75 tcp actions=load:42->OXM_OF_TCP_SRC[[0..7]],output:1
3862 AT_CHECK([ovs-ofctl -O OpenFlow12 replace-flows br0 flows.txt])
3864 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
3868 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3869 for frag in 4000 6000 6008 4010; do
3870 printf "\n%s\n" "----$mode $frag-----"
3872 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"])
3875 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3876 flow-dump from non-dpdk interfaces:
3877 recirc_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
3878 recirc_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
3879 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:74, used:0.001s, actions:1
3882 AT_CHECK([ovs-appctl revalidator/purge], [0])
3883 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3884 for frag in 4000 6000 6008 4010; do
3885 printf "\n%s\n" "----$mode $frag truncated transport header -----"
3887 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 0018 2e24 $frag 40 06 465d ac11370d ac11370b 828b 0016"])
3890 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3891 flow-dump from non-dpdk interfaces:
3892 recirc_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
3893 recirc_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
3894 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1
3897 AT_CHECK([ovs-appctl revalidator/purge], [0])
3898 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3899 for frag in 4000 6000 6001 4002; do
3900 printf "\n%s\n" "----$mode $frag missing transport header-----"
3902 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 0014 2e24 $frag 40 06 465d ac11370d ac11370b"])
3905 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3906 flow-dump from non-dpdk interfaces:
3907 recirc_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
3908 recirc_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
3909 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1
3915 AT_SETUP([ofproto-dpif - exit])
3917 ADD_OF_PORTS([br0], [1], [2], [3], [10], [11], [12], [13], [14])
3918 AT_DATA([flows.txt], [dnl
3919 in_port=1 actions=output:10,exit,output:11
3920 in_port=2 actions=output:12,resubmit:1,output:12
3921 in_port=3 actions=output:13,resubmit:2,output:14
3923 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3924 AT_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])
3925 AT_CHECK([tail -1 stdout], [0],
3926 [Datapath actions: 10
3928 AT_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])
3929 AT_CHECK([tail -1 stdout], [0],
3930 [Datapath actions: 12,10
3932 AT_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])
3933 AT_CHECK([tail -1 stdout], [0],
3934 [Datapath actions: 13,12,10
3940 AT_SETUP([ofproto-dpif - mirroring, select_all])
3942 ADD_OF_PORTS([br0], 1, 2, 3)
3944 set Bridge br0 mirrors=@m --\
3945 --id=@p3 get Port p3 --\
3946 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
3948 AT_DATA([flows.txt], [dnl
3949 in_port=1 actions=output:2
3950 in_port=2 actions=output:1
3952 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3954 flow="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)"
3955 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3956 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3957 [Datapath actions: 3,2
3960 flow="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)"
3961 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3962 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3963 [Datapath actions: 3,1
3970 AT_SETUP([ofproto-dpif - mirroring, select_src])
3972 ADD_OF_PORTS([br0], 1, 2, 3)
3974 set Bridge br0 mirrors=@m --\
3975 --id=@p1 get Port p1 -- --id=@p3 get Port p3 --\
3976 --id=@m create Mirror name=mymirror select_src_port=@p1 output_port=@p3
3978 AT_DATA([flows.txt], [dnl
3979 in_port=1 actions=output:2
3980 in_port=2 actions=output:1
3982 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3984 flow="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)"
3985 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3986 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3987 [Datapath actions: 3,2
3990 flow="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)"
3991 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3992 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3993 [Datapath actions: 1
3998 AT_SETUP([ofproto-dpif - mirroring, OFPP_NONE ingress port])
4000 ADD_OF_PORTS([br0], 1, 2)
4002 set Bridge br0 mirrors=@m --\
4003 --id=@p2 get Port p2 --\
4004 --id=@m create Mirror name=mymirror select_all=true output_port=@p2
4006 AT_CHECK([ovs-ofctl add-flow br0 action=output:1])
4008 # "in_port" defaults to OFPP_NONE if it's not specified.
4009 flow="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"
4010 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
4011 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4012 [Datapath actions: 1,2
4019 AT_SETUP([ofproto-dpif - mirroring, select_dst])
4021 ADD_OF_PORTS([br0], 1, 2, 3)
4023 set Bridge br0 mirrors=@m --\
4024 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
4025 --id=@m create Mirror name=mymirror select_dst_port=@p2 output_port=@p3
4027 AT_DATA([flows.txt], [dnl
4028 in_port=1 actions=output:2
4029 in_port=2 actions=output:1
4031 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4033 flow="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)"
4034 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4035 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4036 [Datapath actions: 2,3
4039 flow="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)"
4040 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4041 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4042 [Datapath actions: 1
4049 AT_SETUP([ofproto-dpif - mirroring, select_vlan])
4051 ADD_OF_PORTS([br0], 1, 2, 3)
4053 set Bridge br0 mirrors=@m --\
4054 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
4055 --id=@m create Mirror name=mymirror select_all=true select_vlan=11 output_port=@p3
4057 AT_DATA([flows.txt], [dnl
4058 in_port=1, actions=output:2
4060 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4062 flow="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)"
4063 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4064 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4065 [Datapath actions: 2
4068 flow="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))"
4069 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4070 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4071 [Datapath actions: 2
4074 flow="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))"
4075 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4076 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4077 [Datapath actions: 3,2
4084 AT_SETUP([ofproto-dpif - mirroring, output_port])
4086 ADD_OF_PORTS([br0], 1, 2, 3)
4088 set Bridge br0 mirrors=@m --\
4089 --id=@p3 get Port p3 --\
4090 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
4092 AT_DATA([flows.txt], [dnl
4093 in_port=1 actions=mod_vlan_vid:17,output:2
4094 in_port=2 actions=output:1
4096 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4098 flow="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)"
4099 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4100 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4101 [Datapath actions: 3,push_vlan(vid=17,pcp=0),2
4104 flow="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)"
4105 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4106 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4107 [Datapath actions: 3,1
4113 AT_SETUP([ofproto-dpif - mirroring, output_vlan])
4115 ADD_OF_PORTS([br0], 1, 2)
4117 set Bridge br0 mirrors=@m --\
4118 --id=@m create Mirror name=mymirror select_all=true output_vlan=12
4120 AT_DATA([flows.txt], [dnl
4121 in_port=1 actions=output:2
4122 in_port=2 actions=mod_vlan_vid:17,output:1
4124 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4126 flow="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)"
4127 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4128 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4130 expected="2,push_vlan(vid=12,pcp=0),1,2,100"
4131 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
4133 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
4135 flow="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)"
4136 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4137 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4139 expected="push_vlan(vid=17,pcp=0),1,pop_vlan,push_vlan(vid=12,pcp=0),1,2,100"
4140 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
4142 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
4147 # This test verifies that mirror state is preserved across recirculation.
4149 # Otherwise, post-recirculation the ingress and the output to port 4
4150 # would cause the packet to be mirrored to port 3 a second time.
4151 AT_SETUP([ofproto-dpif - mirroring with recirculation])
4153 ADD_OF_PORTS([br0], 1, 2, 3, 4)
4155 set Bridge br0 mirrors=@m --\
4156 --id=@p3 get Port p3 --\
4157 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
4159 AT_DATA([flows.txt], [dnl
4160 in_port=1 actions=2,debug_recirc,4
4162 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4164 flow="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)"
4165 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow" -generate], [0], [stdout])
4166 AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 3,2,recirc(0x1)
4168 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow,recirc_id(1)" -generate], [0], [stdout])
4169 AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 4
4175 # This test verifies that the table ID is preserved across recirculation
4176 # when a resubmit action requires it (because the action is relative to
4177 # the current table rather than specifying a table).
4178 AT_SETUP([ofproto-dpif - resubmit with recirculation])
4180 ADD_OF_PORTS([br0], [1], [2], [3])
4182 AT_DATA([flows.txt], [dnl
4183 table=0 in_port=1 actions=2,resubmit(,1)
4184 table=1 in_port=1 actions=debug_recirc,resubmit:55
4185 table=1 in_port=55 actions=3
4187 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4189 flow="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)"
4190 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow" -generate], [0], [stdout])
4191 AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 2,recirc(0x1)
4193 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow,recirc_id(1)" -generate], [0], [stdout])
4194 AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 3
4200 # Two testcases below are for the ofproto/trace command
4201 # The first one tests all correct syntax:
4202 # ofproto/trace [dp_name] odp_flow [-generate|packet]
4203 # ofproto/trace br_name br_flow [-generate|packet]
4204 AT_SETUP([ofproto-dpif - ofproto/trace command 1])
4205 OVS_VSWITCHD_START([set bridge br0 fail-mode=standalone])
4206 ADD_OF_PORTS([br0], 1, 2, 3)
4208 AT_DATA([flows.txt], [dnl
4209 in_port=1 actions=output:2
4210 in_port=2 actions=output:1
4212 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4214 odp_flow="in_port(p1)"
4216 # Test command: ofproto/trace odp_flow with in_port as a name.
4217 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
4218 AT_CHECK([tail -1 stdout], [0], [dnl
4222 odp_flow="in_port(1)"
4223 # Test command: ofproto/trace odp_flow
4224 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
4225 AT_CHECK([tail -1 stdout], [0], [dnl
4229 # Test command: ofproto/trace dp_name odp_flow
4230 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$odp_flow"], [0], [stdout])
4231 AT_CHECK([tail -1 stdout], [0], [dnl
4234 # Test commmand: ofproto/trace br_name br_flow
4235 AT_CHECK([ovs-appctl ofproto/trace br0 "$br_flow"], [0], [stdout])
4236 AT_CHECK([tail -1 stdout], [0], [dnl
4240 # Delete the inserted flows
4241 AT_CHECK([ovs-ofctl del-flows br0 "in_port=1"], [0], [stdout])
4242 AT_CHECK([ovs-ofctl del-flows br0 "in_port=2"], [0], [stdout])
4244 # This section below tests the [-generate] option
4245 odp_flow="in_port(3),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff)"
4246 br_flow="arp,in_port=3,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=ff:ff:ff:ff:ff:ff"
4248 # Test command: ofproto/trace odp_flow
4249 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
4250 # Check for no MAC learning entry
4251 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4255 # Test command: ofproto/trace br_name br_flow
4256 AT_CHECK([ovs-appctl ofproto/trace br0 "$br_flow"], [0], [stdout])
4257 # Check for no MAC learning entry
4258 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4262 # Test command: ofproto/trace odp_flow -generate
4263 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow" -generate], [0], [stdout])
4264 # Check for the MAC learning entry
4265 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4267 3 0 50:54:00:00:00:05 ?
4270 # Test command: ofproto/trace dp_name odp_flow -generate
4271 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4272 "in_port(1),eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:05)" \
4273 -generate], [0], [stdout])
4274 # Check for both MAC learning entries
4275 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4277 3 0 50:54:00:00:00:05 ?
4278 1 0 50:54:00:00:00:06 ?
4281 # Test command: ofproto/trace br_name br_flow -generate
4282 AT_CHECK([ovs-appctl ofproto/trace br0 \
4283 "in_port=2,dl_src=50:54:00:00:00:07,dl_dst=50:54:00:00:00:06" \
4284 -generate], [0], [stdout])
4285 # Check for both MAC learning entries.
4286 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4288 3 0 50:54:00:00:00:05 ?
4289 1 0 50:54:00:00:00:06 ?
4290 2 0 50:54:00:00:00:07 ?
4293 # This section beflow tests the [packet] option
4294 # The ovs-tcpundump of packets between port1 and port2
4295 pkt1to2="50540000000250540000000108064500001C000100004001F98CC0A80001C0A800020800F7FF00000000"
4296 pkt2to1="50540000000150540000000208064500001C000100004001F98CC0A80002C0A800010800F7FF00000000"
4298 # Construct the MAC learning table
4299 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4300 "in_port(1),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff)" \
4301 -generate], [0], [stdout])
4303 # Construct the MAC learning table
4304 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4305 "in_port(2),eth(src=50:54:00:00:00:02,dst=ff:ff:ff:ff:ff:ff)" \
4306 -generate], [0], [stdout])
4308 # Test command: ofproto/trace odp_flow packet
4309 AT_CHECK([ovs-appctl ofproto/trace \
4310 "in_port(1),skb_priority(1),skb_mark(2)" "$pkt1to2"], [0], [stdout])
4311 AT_CHECK([tail -1 stdout], [0], [dnl
4314 AT_CHECK([head -n 2 stdout], [0], [dnl
4316 Flow: 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
4319 # Test command: ofproto/trace dp_name odp_flow packet
4320 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4321 "in_port(1),skb_priority(1),skb_mark(2)" "$pkt1to2"], [0], [stdout])
4322 AT_CHECK([tail -1 stdout], [0], [dnl
4325 AT_CHECK([head -n 2 stdout], [0], [dnl
4327 Flow: 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
4330 # Test command: ofproto/trace br_name br_flow packet
4331 AT_CHECK([ovs-appctl ofproto/trace br0 \
4332 "in_port=2,skb_priority=2,pkt_mark=1" "$pkt2to1"], [0], [stdout],[stderr])
4333 AT_CHECK([tail -1 stdout], [0], [dnl
4336 AT_CHECK([head -n 2 stdout], [0], [dnl
4338 Flow: 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
4344 # The second test tests the corner cases
4345 AT_SETUP([ofproto-dpif - ofproto/trace command 2])
4347 ADD_OF_PORTS([br0], 1, 2)
4350 odp_flow="in_port(1),eth(src=50:54:00:00:00:01,dst=50:54:00:00:00:02)"
4351 br_flow="in_port=1,dl_src=50:54:00:00:00:01,dl_dst=50:54:00:00:00:02"
4353 generate="-generate"
4354 pkt="50540000000250540000000108064500001C000100004001F98CC0A80001C0A800020800F7FF00000000"
4356 # Test incorrect command: ofproto/trace wrong_name odp_flow [-generate|packet]
4362 [AT_CHECK([ovs-appctl ofproto/trace wrong_name "$odp_flow" option],
4364 AT_CHECK([tail -2 stderr], [0], [dnl
4365 Cannot find the datapath
4366 ovs-appctl: ovs-vswitchd: server returned an error
4369 # Test incorrect command: ofproto/trace empty_string odp_flow [-generate|packet]
4375 [AT_CHECK([ovs-appctl ofproto/trace "" "$odp_flow" option],
4377 AT_CHECK([tail -2 stderr], [0], [dnl
4378 Cannot find the datapath
4379 ovs-appctl: ovs-vswitchd: server returned an error
4382 # Test incorrect command: ofproto/trace nonexist_dp_name odp_flow [-generate|packet]
4388 [AT_CHECK([ovs-appctl ofproto/trace ovs-system "$odp_flow" option],
4390 AT_CHECK([tail -2 stderr], [0], [dnl
4391 Cannot find the datapath
4392 ovs-appctl: ovs-vswitchd: server returned an error
4395 # Test incorrect command: ofproto/trace br_name odp_flow [-generate|packet]
4401 [AT_CHECK([ovs-appctl ofproto/trace br0 "$odp_flow" option],
4403 AT_CHECK([tail -2 stderr], [0], [dnl
4404 Cannot find the datapath
4405 ovs-appctl: ovs-vswitchd: server returned an error
4408 # Test incorrect command: ofproto/trace dp_name br_flow [-generate|packet]
4414 [AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$br_flow" option],
4416 AT_CHECK([tail -2 stderr], [0], [dnl
4418 ovs-appctl: ovs-vswitchd: server returned an error
4421 # Test incorrect command: ofproto/trace br_flow [-generate|packet]
4427 [AT_CHECK([ovs-appctl ofproto/trace "$br_flow" option],
4429 AT_CHECK([tail -2 stderr], [0], [dnl
4430 Must specify bridge name
4431 ovs-appctl: ovs-vswitchd: server returned an error
4434 # Test incorrect command: ofproto/trace dp_name odp_flow garbage_option
4435 AT_CHECK([ovs-appctl ofproto/trace \
4436 ovs-dummy "$odp_flow" garbage_option],
4437 [2], [stdout],[stderr])
4438 AT_CHECK([tail -2 stderr], [0], [dnl
4439 Trailing garbage in packet data
4440 ovs-appctl: ovs-vswitchd: server returned an error
4443 # Test incorrect command: ofproto/trace with 4 arguments
4444 AT_CHECK([ovs-appctl ofproto/trace \
4445 arg1, arg2, arg3, arg4], [2], [stdout],[stderr])
4446 AT_CHECK([tail -2 stderr], [0], [dnl
4447 "ofproto/trace" command takes at most 3 arguments
4448 ovs-appctl: ovs-vswitchd: server returned an error
4451 # Test incorrect command: ofproto/trace with 0 argument
4452 AT_CHECK([ovs-appctl ofproto/trace ], [2], [stdout],[stderr])
4453 AT_CHECK([tail -2 stderr], [0], [dnl
4454 "ofproto/trace" command requires at least 1 arguments
4455 ovs-appctl: ovs-vswitchd: server returned an error
4461 # The third test checks that the output of "ovs-dpctl -m" is valid to trace.
4462 AT_SETUP([ofproto-dpif - ofproto/trace from dpctl output])
4463 OVS_VSWITCHD_START([dnl
4464 set Open_vSwitch . other_config:max-idle=10000 \
4465 -- add-port br0 p1 -- set Interface p1 type=dummy])
4467 AT_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)'])
4468 ovs-appctl revalidator/wait
4469 AT_CHECK([ovs-appctl dpif/dump-flows -m br0 | sed 's/, packets.*$//' > dp_flows1.txt])
4471 odp_flow=`cat dp_flows1.txt`
4472 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow" | sed 's/\([[Ff]]low:\).*/\1 <cleared>/'], [0], [dnl
4475 No match, packets dropped because OFPPC_NO_PACKET_IN is set on in_port.
4477 Rule: table=254 cookie=0 priority=0,reg0=0x2
4478 OpenFlow actions=drop
4480 Final flow: <cleared>
4482 Datapath actions: drop
4485 dnl Now, try again without megaflows:
4486 ovs-appctl upcall/disable-megaflows
4488 AT_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)'])
4489 ovs-appctl revalidator/wait
4490 AT_CHECK([ovs-appctl dpif/dump-flows -m br0 | sed 's/, packets.*$//' > dp_flows2.txt])
4492 odp_flow=`cat dp_flows2.txt`
4493 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow" | sed 's/\([[Ff]]low:\).*/\1 <cleared>/'], [0], [dnl
4496 No match, packets dropped because OFPPC_NO_PACKET_IN is set on in_port.
4498 Rule: table=254 cookie=0 priority=0,reg0=0x2
4499 OpenFlow actions=drop
4501 Final flow: <cleared>
4503 Datapath actions: drop
4509 AT_SETUP([ofproto-dpif - ofproto/trace-packet-out])
4511 ADD_OF_PORTS([br0], 1, 2, 3)
4513 AT_DATA([flows.txt], [dnl
4514 in_port=1 actions=output:2
4515 in_port=2 actions=output:1
4517 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4519 AT_CHECK([ovs-appctl ofproto/trace-packet-out br0 in_port=1 'mod_vlan_vid:123,resubmit(,0)'], [0], [stdout])
4520 AT_CHECK([tail -1 stdout], [0], [dnl
4521 Datapath actions: push_vlan(vid=123,pcp=0),2
4528 m4_define([OFPROTO_TRACE],
4530 AT_CHECK([ovs-appctl ofproto/trace $1 "$flow" $3], [0], [stdout])
4531 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4533 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected" $5],
4536 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual" $5],
4539 AT_SETUP([ofproto-dpif - MAC learning])
4540 OVS_VSWITCHD_START([set bridge br0 fail-mode=standalone])
4541 ADD_OF_PORTS([br0], 1, 2, 3)
4543 arp='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)'
4545 # Trace an ARP packet arriving on p3, to create a MAC learning entry.
4548 [in_port(3),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff),$arp],
4552 # Check for the MAC learning entry.
4553 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4555 3 0 50:54:00:00:00:05 ?
4558 # Trace a packet arrival destined for the learned MAC.
4559 # (This will also learn a MAC.)
4562 [in_port(1),eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:05),$arp],
4566 # Check for both MAC learning entries.
4567 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4569 3 0 50:54:00:00:00:05 ?
4570 1 0 50:54:00:00:00:06 ?
4573 # Trace a packet arrival that updates the first learned MAC entry.
4576 [in_port(2),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff),$arp],
4580 # Check that the MAC learning entry was updated.
4581 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4583 1 0 50:54:00:00:00:06 ?
4584 2 0 50:54:00:00:00:05 ?
4587 # Add another bridge.
4591 -- set bridge br1 datapath-type=dummy])
4592 ADD_OF_PORTS([br1], 4, 5)
4594 # Trace some packet arrivals in br1 to create MAC learning entries there too.
4597 [in_port(4),eth(src=50:54:00:00:00:06,dst=ff:ff:ff:ff:ff:ff),$arp],
4602 [in_port(5),eth(src=50:54:00:00:00:07,dst=ff:ff:ff:ff:ff:ff),$arp],
4606 # Check that the MAC learning entries were added.
4607 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br1 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4609 4 0 50:54:00:00:00:06 ?
4610 5 0 50:54:00:00:00:07 ?
4613 # Delete port p1 and see that its MAC learning entry disappeared, and
4614 # that the MAC learning entry for the same MAC was also deleted from br1.
4615 AT_CHECK([ovs-vsctl del-port p1])
4616 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4618 2 0 50:54:00:00:00:05 ?
4620 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br1 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4622 5 0 50:54:00:00:00:07 ?
4628 AT_SETUP([ofproto-dpif - MAC table overflow])
4630 [set bridge br0 fail-mode=standalone other-config:mac-table-size=10])
4631 ADD_OF_PORTS([br0], 1, 2, 3)
4633 arp='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)'
4635 AT_CHECK([ovs-appctl time/stop])
4637 # Trace 10 ARP packets arriving on p3, to create MAC learning entries.
4638 for i in 0 1 2 3 4 5 6 7 8 9; do
4641 [in_port(3),eth(src=50:54:00:00:00:0$i,dst=ff:ff:ff:ff:ff:ff),$arp],
4644 ovs-appctl time/warp 1000
4647 # Check for the MAC learning entries.
4648 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4650 3 0 50:54:00:00:00:00
4651 3 0 50:54:00:00:00:01
4652 3 0 50:54:00:00:00:02
4653 3 0 50:54:00:00:00:03
4654 3 0 50:54:00:00:00:04
4655 3 0 50:54:00:00:00:05
4656 3 0 50:54:00:00:00:06
4657 3 0 50:54:00:00:00:07
4658 3 0 50:54:00:00:00:08
4659 3 0 50:54:00:00:00:09
4663 # Trace another ARP packet on another MAC.
4666 [in_port(3),eth(src=50:54:00:00:00:10,dst=ff:ff:ff:ff:ff:ff),$arp],
4670 # Check that the new one chased the oldest one out of the table.
4671 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/' | sort],
4673 3 0 50:54:00:00:00:01 ?
4674 3 0 50:54:00:00:00:02 ?
4675 3 0 50:54:00:00:00:03 ?
4676 3 0 50:54:00:00:00:04 ?
4677 3 0 50:54:00:00:00:05 ?
4678 3 0 50:54:00:00:00:06 ?
4679 3 0 50:54:00:00:00:07 ?
4680 3 0 50:54:00:00:00:08 ?
4681 3 0 50:54:00:00:00:09 ?
4682 3 0 50:54:00:00:00:10 ?
4688 AT_SETUP([ofproto-dpif - MAC table overflow fairness])
4690 [set bridge br0 fail-mode=standalone other-config:mac-table-size=10])
4691 ADD_OF_PORTS([br0], 1, 2, 3, 4, 5, 6)
4693 arp='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)'
4695 AT_CHECK([ovs-appctl time/stop])
4697 # Trace packets with 2 different source MACs arriving on each of the 5
4698 # ports, filling up the 10-entry learning table.
4699 for i in 0 1 2 3 4 5 6 7 8 9; do
4701 ovs-appctl ofproto/trace ovs-dummy "in_port($p),eth(src=50:54:00:00:00:0$i,dst=ff:ff:ff:ff:ff:ff),$arp" -generate
4702 ovs-appctl time/warp 1000
4705 # Check for the MAC learning entries.
4706 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4708 1 0 50:54:00:00:00:00
4709 1 0 50:54:00:00:00:01
4710 2 0 50:54:00:00:00:02
4711 2 0 50:54:00:00:00:03
4712 3 0 50:54:00:00:00:04
4713 3 0 50:54:00:00:00:05
4714 4 0 50:54:00:00:00:06
4715 4 0 50:54:00:00:00:07
4716 5 0 50:54:00:00:00:08
4717 5 0 50:54:00:00:00:09
4721 # Now trace 16 new MACs on another port.
4722 for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
4723 ovs-appctl ofproto/trace ovs-dummy "in_port(6),eth(src=50:54:00:00:0$i:ff,dst=ff:ff:ff:ff:ff:ff),$arp" -generate
4724 ovs-appctl time/warp 1000
4727 # Check the results.
4729 # Our eviction algorithm on overflow is that an arbitrary (but deterministic)
4730 # one of the ports with the most learned MACs loses the least recently used
4731 # one. Thus, the new port will end up with 3 MACs, 3 of the old ports with 1
4732 # MAC each, and the other 2 of the old ports with 2 MACs each.
4734 # (If someone changes lib/heap.c to do something different with equal-priority
4735 # nodes, then the output below could change, but it would still follow the
4736 # rules explained above.)
4737 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4739 1 0 50:54:00:00:00:01
4740 2 0 50:54:00:00:00:03
4741 3 0 50:54:00:00:00:04
4742 3 0 50:54:00:00:00:05
4743 4 0 50:54:00:00:00:07
4744 5 0 50:54:00:00:00:08
4745 5 0 50:54:00:00:00:09
4746 6 0 50:54:00:00:0d:ff
4747 6 0 50:54:00:00:0e:ff
4748 6 0 50:54:00:00:0f:ff
4754 # CHECK_SFLOW_SAMPLING_PACKET(LOOPBACK_ADDR)
4756 # Test that sFlow samples packets correctly using IPv4/IPv6 sFlow collector
4757 m4_define([CHECK_SFLOW_SAMPLING_PACKET],
4758 [AT_XFAIL_IF([test "$IS_WIN32" = "yes"])
4759 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
4761 on_exit 'kill `cat test-sflow.pid`'
4762 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:$1 > sflow.log], [0], [], [ignore])
4763 AT_CAPTURE_FILE([sflow.log])
4764 PARSE_LISTENING_PORT([test-sflow.log], [SFLOW_PORT])
4765 ovs-appctl time/stop
4767 ADD_OF_PORTS([br0], 1, 2)
4769 set Interface br0 options:ifindex=1002 -- \
4770 set Interface p1 options:ifindex=1004 -- \
4771 set Interface p2 options:ifindex=1003 -- \
4772 set Bridge br0 sflow=@sf -- \
4773 --id=@sf create sflow targets=\"$1:$SFLOW_PORT\" \
4774 header=128 sampling=1 polling=1 agent=$LOOPBACK_INTERFACE
4776 dnl open with ARP packets to seed the bridge-learning. The output
4777 dnl ifIndex numbers should be reported predictably after that.
4778 dnl Since we set sampling=1 we should see all of these packets
4779 dnl reported. Sorting the output by data-source and seqNo makes
4780 dnl it deterministic. Ensuring that we send at least two packets
4781 dnl into each port means we get to check the seq nos are
4782 dnl incrementing correctly.
4783 dnl because packets from different ports can be handled by separate
4784 dnl threads, put some sleeps
4786 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)'
4788 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)'
4790 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)'
4792 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)'
4793 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)'
4795 dnl sleep long enough to get more than one counter sample
4796 dnl from each datasource so we can check sequence numbers
4797 ovs-appctl time/warp 3000 100
4799 ovs-appctl -t test-sflow exit
4801 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
4822 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
4842 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
4862 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
4882 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
4902 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
4905 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'IFCOUNTERS|ERROR|PORTNAME|OPENFLOWPORT' | head -18 | sed 's/ /\
4919 in_broadcasts=4294967295
4922 in_unknownprotos=4294967295
4925 out_multicasts=4294967295
4926 out_broadcasts=4294967295
4942 in_broadcasts=4294967295
4945 in_unknownprotos=4294967295
4948 out_multicasts=4294967295
4949 out_broadcasts=4294967295
4965 in_broadcasts=4294967295
4968 in_unknownprotos=4294967295
4971 out_multicasts=4294967295
4972 out_broadcasts=4294967295
4988 in_broadcasts=4294967295
4991 in_unknownprotos=4294967295
4994 out_multicasts=4294967295
4995 out_broadcasts=4294967295
5011 in_broadcasts=4294967295
5014 in_unknownprotos=4294967295
5017 out_multicasts=4294967295
5018 out_broadcasts=4294967295
5034 in_broadcasts=4294967295
5037 in_unknownprotos=4294967295
5040 out_multicasts=4294967295
5041 out_broadcasts=4294967295
5046 datapath_id=18364758544493064720
5049 datapath_id=18364758544493064720
5052 datapath_id=18364758544493064720
5055 datapath_id=18364758544493064720
5058 datapath_id=18364758544493064720
5061 datapath_id=18364758544493064720
5077 AT_SETUP([ofproto-dpif - sFlow packet sampling - IPv4 collector])
5078 CHECK_SFLOW_SAMPLING_PACKET([127.0.0.1])
5081 AT_SETUP([ofproto-dpif - sFlow packet sampling - IPv6 collector])
5082 AT_SKIP_IF([test $HAVE_IPV6 = no])
5083 CHECK_SFLOW_SAMPLING_PACKET([[[::1]]])
5086 dnl Test sFlow LAG structures
5087 AT_SETUP([ofproto-dpif - sFlow packet sampling - LACP structures])
5088 AT_SKIP_IF([test "$IS_WIN32" = "yes"])
5089 OVS_VSWITCHD_START([dnl
5090 add-bond br0 bond p1 p2 -- \
5091 set Port bond lacp=active bond-mode=active-backup \
5092 other_config:lacp-time="fast" \
5093 other_config:lacp-system-id=11:22:33:44:55:66 \
5094 other_config:lacp-system-priority=54321 -- \
5095 set Interface p1 type=dummy \
5096 other_config:lacp-port-id=11 \
5097 other_config:lacp-port-priority=111 \
5098 other_config:lacp-aggregation-key=3333 -- \
5099 set Interface p2 type=dummy \
5100 other_config:lacp-port-id=22 \
5101 other_config:lacp-port-priority=222 \
5102 other_config:lacp-aggregation-key=3333 ])
5104 on_exit 'kill `cat test-sflow.pid`'
5105 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
5106 AT_CAPTURE_FILE([sflow.log])
5107 PARSE_LISTENING_PORT([test-sflow.log], [SFLOW_PORT])
5109 ovs-appctl time/stop
5112 set Interface p1 options:ifindex=1003 -- \
5113 set Bridge br0 sflow=@sf -- \
5114 --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
5115 header=128 sampling=1 polling=1
5117 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
5118 AT_CHECK([ovs-appctl time/warp 2000 100], [0], [ignore])
5119 AT_CHECK([ovs-appctl revalidator/purge], [0])
5121 ovs-appctl -t test-sflow exit
5122 AT_CHECK([[sort sflow.log | $EGREP 'LACPCOUNTERS|ERROR' | head -n 1 | sed 's/ /\
5125 sysID=11:22:33:44:55:66
5126 partnerID=00:00:00:00:00:00
5133 markerPDUsRx=4294967295
5134 markerRespPDUsRx=4294967295
5135 unknownRx=4294967295
5138 markerPDUsTx=4294967295
5139 markerRespPDUsTx=4294967295
5144 AT_SETUP([ofproto-dpif - sFlow packet sampling - tunnel set])
5145 AT_XFAIL_IF([test "$IS_WIN32" = "yes"])
5146 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
5148 dnl set up sFlow logging
5149 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
5150 AT_CAPTURE_FILE([sflow.log])
5151 PARSE_LISTENING_PORT([test-sflow.log], [SFLOW_PORT])
5152 ovs-appctl time/stop
5154 OVS_VSWITCHD_DISABLE_TUNNEL_PUSH_POP
5155 AT_CHECK([ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre \
5156 options:remote_ip=1.1.1.1 options:key=456 ofport_request=3])
5157 AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy ofport_request=4])
5159 AT_CHECK([ovs-ofctl add-flow br0 action=3])
5163 set Bridge br0 sflow=@sf -- \
5164 --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
5165 header=128 sampling=1 polling=0
5167 dnl introduce a packet that will be flooded to the tunnel
5168 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(4),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.10.10.2,dst=10.10.10.1,proto=1,tos=1,ttl=128,frag=no),icmp(type=8,code=0)'])
5170 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
5171 for i in `seq 1 30`; do
5172 ovs-appctl time/warp 100
5175 ovs-appctl -t test-sflow exit
5177 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
5183 tunnel4_out_length=0
5184 tunnel4_out_protocol=47
5185 tunnel4_out_src=0.0.0.0
5186 tunnel4_out_dst=1.1.1.1
5187 tunnel4_out_src_port=0
5188 tunnel4_out_dst_port=0
5189 tunnel4_out_tcp_flags=0
5207 hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-01-00-1C-00-00-00-00-80-01-12-CA-0A-0A-0A-02-0A-0A-0A-01-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
5213 AT_SETUP([ofproto-dpif - sFlow packet sampling - tunnel push])
5214 AT_XFAIL_IF([test "$IS_WIN32" = "yes"])
5216 OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1 options:ifindex=1010])
5218 dnl set up sFlow logging
5219 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
5220 AT_CAPTURE_FILE([sflow.log])
5221 PARSE_LISTENING_PORT([test-sflow.log], [SFLOW_PORT])
5222 ovs-appctl time/stop
5224 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5225 AT_CHECK([ovs-vsctl add-br int-br -- set bridge int-br datapath_type=dummy], [0])
5226 AT_CHECK([ovs-vsctl -- add-port int-br t1 -- set Interface t1 type=gre \
5227 options:remote_ip=1.1.2.92 options:key=456 ofport_request=4\
5228 -- add-port int-br vm1 -- set Interface vm1 type=dummy \
5229 options:ifindex=2011 ofport_request=5
5232 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
5233 dummy@ovs-dummy: hit:0 missed:0
5235 br0 65534/100: (dummy)
5236 p0 1/1: (dummy: ifindex=1010)
5238 int-br 65534/2: (dummy)
5239 t1 4/4: (gre: key=456, remote_ip=1.1.2.92)
5240 vm1 5/3: (dummy: ifindex=2011)
5243 dnl set up route to 1.1.2.92 via br0 and action=normal
5244 AT_CHECK([ovs-appctl ovs/route/add 1.1.2.92/24 br0], [0], [OK
5246 AT_CHECK([ovs-appctl ovs/route/add 192.168.0.0/16 br0], [0], [OK
5248 AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 1.1.2.88/24], [0], [OK
5250 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5252 dnl Prime ARP Cache for 1.1.2.92
5253 AT_CHECK([ovs-appctl netdev-dummy/receive br0 'recirc_id(0),in_port(100),eth(src=f8:bc:12:44:34:b6,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=1.1.2.92,tip=1.1.2.88,op=1,sha=f8:bc:12:44:34:b6,tha=00:00:00:00:00:00)'])
5255 dnl configure sflow on int-br only
5257 set Bridge int-br sflow=@sf -- \
5258 --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
5259 header=128 sampling=1 polling=0
5261 dnl add rule for int-br to force packet onto tunnel. There is no ifindex
5262 dnl for this port so the sFlow output will just report that it went to
5263 dnl 1 output (out_format=2, out_ifindex=1)
5264 AT_CHECK([ovs-ofctl add-flow int-br "actions=4"])
5266 AT_CHECK([ovs-appctl netdev-dummy/receive vm1 'in_port(3),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=192.168.1.1,dst=192.168.2.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'])
5268 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
5269 for i in `seq 1 30`; do
5270 ovs-appctl time/warp 100
5273 ovs-appctl -t test-sflow exit
5275 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
5281 tunnel4_out_length=0
5282 tunnel4_out_protocol=47
5283 tunnel4_out_src=1.1.2.88
5284 tunnel4_out_dst=1.1.2.92
5285 tunnel4_out_src_port=0
5286 tunnel4_out_dst_port=0
5287 tunnel4_out_tcp_flags=0
5305 hdr=50-54-00-00-00-0A-50-54-00-00-00-05-08-00-45-00-00-1C-00-00-00-00-80-01-B6-8D-C0-A8-01-01-C0-A8-02-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
5311 AT_SETUP([ofproto-dpif - sFlow packet sampling - MPLS])
5312 AT_XFAIL_IF([test "$IS_WIN32" = "yes"])
5314 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5315 ADD_OF_PORTS([br0], [1], [2])
5316 AT_DATA([flows.txt], [dnl
5317 table=0 dl_src=50:54:00:00:00:09 actions=push_mpls:0x8847,set_mpls_label:789,set_mpls_tc:4,set_mpls_ttl:32,2
5318 table=0 dl_src=50:54:00:00:00:0b actions=pop_mpls:0x0800,2
5320 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5322 dnl set up sFlow logging
5323 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
5324 AT_CAPTURE_FILE([sflow.log])
5325 PARSE_LISTENING_PORT([test-sflow.log], [SFLOW_PORT])
5326 ovs-appctl time/stop
5330 set Bridge br0 sflow=@sf -- \
5331 --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
5332 header=128 sampling=1 polling=0
5334 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(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'])
5335 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)'])
5337 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
5338 for i in `seq 1 30`; do
5339 ovs-appctl time/warp 100
5342 ovs-appctl -t test-sflow exit
5344 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
5373 hdr=50-54-00-00-00-0A-50-54-00-00-00-09-88-47-00-00-B7-40-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
5397 hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-00-00-14-00-00-00-00-00-00-BA-EB-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
5404 # CHECK_NETFLOW_EXPIRATION(LOOPBACK_ADDR)
5406 # Test that basic NetFlow reports flow statistics correctly:
5407 # The initial packet of a flow are correctly accounted.
5408 # Later packets within a flow are correctly accounted.
5409 # Flow actions changing (in this case, due to MAC learning)
5410 # cause a record to be sent.
5411 m4_define([CHECK_NETFLOW_EXPIRATION],
5412 [OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
5413 ADD_OF_PORTS([br0], 1, 2)
5415 ovs-appctl time/stop
5416 on_exit 'kill `cat test-netflow.pid`'
5417 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
5418 AT_CAPTURE_FILE([netflow.log])
5419 PARSE_LISTENING_PORT([test-netflow.log], [NETFLOW_PORT])
5422 set Bridge br0 netflow=@nf -- \
5423 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
5424 engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
5426 for delay in 1000 30000; do
5427 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)'
5428 sleep 1 # ensure the order in which these two packets are processed
5429 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)'
5431 ovs-appctl time/warp $delay
5434 ovs-appctl time/warp 6000
5435 ovs-appctl revalidator/wait
5437 ovs-appctl -t test-netflow exit
5439 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])
5441 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])
5443 combined=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 2 pkts, 120 bytes, ICMP 0:0" netflow.log | wc -l`
5444 separate=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 1 pkts, 60 bytes, ICMP 0:0" netflow.log | wc -l`
5445 AT_CHECK([test $separate = 2 || test $combined = 1], [0])])
5447 AT_SETUP([ofproto-dpif - NetFlow flow expiration - IPv4 collector])
5448 CHECK_NETFLOW_EXPIRATION([127.0.0.1])
5451 AT_SETUP([ofproto-dpif - NetFlow flow expiration - IPv6 collector])
5452 AT_SKIP_IF([test $HAVE_IPV6 = no])
5453 CHECK_NETFLOW_EXPIRATION([[[::1]]])
5456 # CHECK_NETFLOW_ACTIVE_EXPIRATION(LOOPBACK_ADDR)
5458 # Test that basic NetFlow reports active expirations correctly.
5459 m4_define([CHECK_NETFLOW_ACTIVE_EXPIRATION],
5460 [OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
5461 ADD_OF_PORTS([br0], 1, 2)
5463 on_exit 'kill `cat test-netflow.pid`'
5464 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
5465 AT_CAPTURE_FILE([netflow.log])
5466 PARSE_LISTENING_PORT([test-netflow.log], [NETFLOW_PORT])
5469 set Bridge br0 netflow=@nf -- \
5470 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
5471 engine_id=1 engine_type=2 active_timeout=10 add-id-to-interface=false
5473 AT_CHECK([ovs-appctl time/stop])
5475 while test $n -le 60; do
5478 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)'
5479 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)'
5481 ovs-appctl time/warp 1000
5484 ovs-appctl time/warp 10000
5486 ovs-appctl revalidator/wait
5488 ovs-appctl -t test-netflow exit
5490 # Count the number of reported packets:
5491 # - From source to destination before MAC learning kicks in (just one).
5492 # - From source to destination after that.
5493 # - From destination to source.
5501 pkts=`echo "$line" | sed 's/.*, \([[0-9]]*\) pkts,.*/\1/'`
5508 "seq "*": 192.168.0.1 > 192.168.0.2, if 1 > 65535, "*" pkts, "*" bytes, TCP 1234 > 80, time "*)
5511 "seq "*": 192.168.0.1 > 192.168.0.2, if 1 > 2, "*" pkts, "*" bytes, TCP 1234 > 80, time "*)
5514 "seq "*": 192.168.0.2 > 192.168.0.1, if 2 > 1, "*" pkts, "*" bytes, TCP 80 > 1234, time "*)
5521 eval $counter=\`expr \$$counter + \$pkts\`
5522 n_recs=`expr $n_recs + 1`
5525 # There should be exactly 1 MAC learning packet,
5526 # exactly 59 other packets in that direction,
5527 # and exactly 60 packets in the other direction.
5528 AT_CHECK([echo $n_learn $n_in $n_out $n_other], [0], [1 59 60 0
5531 AT_SETUP([ofproto-dpif - NetFlow active expiration - IPv4 collector])
5532 CHECK_NETFLOW_ACTIVE_EXPIRATION([127.0.0.1])
5535 AT_SETUP([ofproto-dpif - NetFlow active expiration - IPv6 collector])
5536 AT_SKIP_IF([test $HAVE_IPV6 = no])
5537 CHECK_NETFLOW_ACTIVE_EXPIRATION([[[::1]]])
5540 dnl In the absence of an IPFIX collector to verify protocol correctness, simply
5541 dnl configure IPFIX and ensure that sample action generation works at the
5543 AT_SETUP([ofproto-dpif - Basic IPFIX sanity check])
5545 ADD_OF_PORTS([br0], 1, 2)
5547 dnl Sample every packet using bridge-based sampling
5548 AT_CHECK([ovs-vsctl -- set bridge br0 ipfix=@fix -- \
5549 --id=@fix create ipfix targets=\"127.0.0.1:4739\" \
5550 sampling=1], [0], [ignore])
5552 dnl Send some packets that should be sampled
5553 for i in `seq 1 3`; do
5554 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)'])
5556 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/.*\(packets:\)/\1/' | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
5557 flow-dump from non-dpdk interfaces:
5558 packets:2, bytes:120, used:0.001s, actions:sample(sample=100.0%,actions(userspace(pid=0,ipfix(output_port=4294967295))))
5561 dnl Remove the IPFIX configuration
5562 AT_CHECK([ovs-vsctl clear bridge br0 ipfix])
5563 AT_CHECK([ovs-appctl revalidator/purge])
5565 dnl Send some more packets, to ensure that these are not sampled.
5566 for i in `seq 1 3`; do
5567 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)'])
5569 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/.*\(packets:\)/\1/' | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
5570 flow-dump from non-dpdk interfaces:
5571 packets:2, bytes:120, used:0.001s, actions:drop
5574 OVS_VSWITCHD_STOP(["/sending to collector failed/d"])
5577 AT_SETUP([ofproto-dpif - flow stats])
5579 AT_CHECK([ovs-ofctl add-flow br0 "ip,actions=NORMAL"])
5580 AT_CHECK([ovs-ofctl add-flow br0 "icmp,actions=NORMAL"])
5582 ovs-appctl time/stop
5584 for i in `seq 1 10`; do
5585 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)'
5588 AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
5589 AT_CHECK([ovs-appctl revalidator/purge], [0])
5590 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
5591 AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl
5592 cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL
5593 cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=600, idle_age=1, ip actions=NORMAL
5598 AT_SETUP([ofproto-dpif - flow stats, set-n-threads])
5600 AT_CHECK([ovs-ofctl add-flow br0 "ip,actions=NORMAL"])
5601 AT_CHECK([ovs-ofctl add-flow br0 "icmp,actions=NORMAL"])
5603 ovs-appctl time/stop
5605 for i in `seq 1 10`; do
5606 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)'
5609 ovs-appctl time/warp 100
5610 AT_CHECK([ovs-vsctl set Open_vSwitch . other-config:n-revalidator-threads=2])
5611 ovs-appctl time/warp 1000
5613 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
5614 AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl
5615 cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL
5616 cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=600, idle_age=1, ip actions=NORMAL
5621 AT_SETUP([ofproto-dpif - idle_age and hard_age increase over time])
5624 # get_ages DURATION HARD IDLE
5626 # Fetch the flow duration, hard age, and idle age into the variables
5627 # whose names are given as arguments. Rounds DURATION down to the
5628 # nearest integer. If hard_age doesn't appear in the output, sets
5629 # HARD to "none". If idle_age doesn't appear in the output, sets IDLE
5632 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
5634 duration=`sed -n 's/.*duration=\([[0-9]]*\)\(\.[[0-9]]*\)\{0,1\}s.*/\1/p' stdout`
5635 AT_CHECK([[expr X"$duration" : 'X[0-9][0-9]*$']], [0], [ignore])
5636 AS_VAR_COPY([$1], [duration])
5638 hard=`sed -n 's/.*hard_age=\([[0-9]]*\),.*/\1/p' stdout`
5639 if test X"$hard" = X; then
5642 AT_CHECK([[expr X"$hard" : 'X[0-9][0-9]*$']], [0], [ignore])
5644 AS_VAR_COPY([$2], [hard])
5646 idle=`sed -n 's/.*idle_age=\([[0-9]]*\),.*/\1/p' stdout`
5647 if test X"$idle" = X; then
5650 AT_CHECK([[expr X"$idle" : 'X[0-9][0-9]*$']], [0], [ignore])
5652 AS_VAR_COPY([$3], [idle])
5655 # Add a flow and get its initial hard and idle age.
5656 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=199,idle_timeout=188,actions=drop])
5657 get_ages duration1 hard1 idle1
5659 ovs-appctl time/stop
5660 # Warp time forward by 10 seconds, then modify the flow's actions.
5661 ovs-appctl time/warp 10000
5662 get_ages duration2 hard2 idle2
5663 AT_CHECK([ovs-ofctl mod-flows br0 actions=flood])
5665 # Warp time forward by 10 seconds.
5666 ovs-appctl time/warp 10000
5667 get_ages duration3 hard3 idle3
5669 # Warp time forward 10 more seconds, then pass some packets through the flow,
5670 # then warp forward a few more times because idle times are only updated
5672 ovs-appctl time/warp 10000
5673 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),tcp(src=80,dst=1234)'
5674 ovs-appctl time/warp 3000 1000
5676 get_ages duration4 hard4 idle4
5678 printf "duration: %4s => %4s => %4s => %4s\n" $duration1 $duration2 $duration3 $duration4
5679 printf "hard_age: %4s => %4s => %4s => %4s\n" $hard1 $hard2 $hard3 $hard4
5680 printf "idle_age: %4s => %4s => %4s => %4s\n" $idle1 $idle2 $idle3 $idle4
5682 # Duration should increase steadily over time.
5683 AT_CHECK([test $duration1 -lt $duration2])
5684 AT_CHECK([test $duration2 -lt $duration3])
5685 AT_CHECK([test $duration3 -lt $duration4])
5687 # Hard age should be "none" initially because it's the same as flow_duration,
5688 # then it should increase.
5689 AT_CHECK([test $hard1 = none])
5690 AT_CHECK([test $hard2 = none])
5691 AT_CHECK([test $hard3 != none])
5692 AT_CHECK([test $hard4 != none])
5693 AT_CHECK([test $hard3 -lt $hard4])
5695 # Idle age should increase from 1 to 2 to 3, then decrease.
5696 AT_CHECK([test $idle1 -lt $idle2])
5697 AT_CHECK([test $idle2 -lt $idle3])
5698 AT_CHECK([test $idle3 -gt $idle4])
5700 # Check some invariant relationships.
5701 AT_CHECK([test $duration1 = $idle1])
5702 AT_CHECK([test $duration2 = $idle2])
5703 AT_CHECK([test $duration3 = $idle3])
5704 AT_CHECK([test $idle3 -gt $hard3])
5705 AT_CHECK([test $idle4 -lt $hard4])
5706 AT_CHECK([test $hard4 -lt $duration4])
5711 AT_SETUP([ofproto-dpif - fin_timeout])
5713 ovs-appctl time/stop
5714 AT_CHECK([ovs-ofctl add-flow br0 'idle_timeout=60,actions=fin_timeout(idle_timeout=5)'])
5715 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5717 idle_timeout=60, actions=fin_timeout(idle_timeout=5)
5720 # Check that a TCP SYN packet does not change the timeout. (Because
5721 # flow stats updates are mainly what implements the fin_timeout
5722 # feature, we warp forward a couple of times to ensure that flow stats
5723 # run before re-checking the flow table.)
5724 AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f908004500003c2e2440004006465dac11370dac11370b828b0016751e267b00000000a00216d017360000020405b40402080a2d25085f0000000001030307])
5725 AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped
5728 AT_CHECK([ovs-appctl revalidator/purge], [0])
5729 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5731 n_packets=1, n_bytes=74, idle_timeout=60, actions=fin_timeout(idle_timeout=5)
5733 # Check that a TCP FIN packet does change the timeout.
5734 AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f90800451000342e3e40004006463bac11370dac11370b828b0016751e319dfc96399b801100717ae800000101080a2d250a9408579588])
5735 AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped
5738 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5740 n_packets=2, n_bytes=140, idle_timeout=5, actions=fin_timeout(idle_timeout=5)
5745 AT_SETUP([ofproto-dpif - ovs-appctl dpif/dump-dps])
5746 OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy])
5747 ADD_OF_PORTS([br0], [1], [2])
5748 ADD_OF_PORTS([br1], [3])
5750 AT_CHECK([ovs-appctl dpif/dump-dps], [0], [dnl
5757 AT_SETUP([ofproto-dpif - ovs-appctl dpif/show])
5758 OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy])
5759 ADD_OF_PORTS([br0], [1], [2])
5760 ADD_OF_PORTS([br1], [3])
5762 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
5763 dummy@ovs-dummy: hit:0 missed:0
5765 br0 65534/100: (dummy)
5769 br1 65534/101: (dummy)
5775 AT_SETUP([ofproto-dpif - ovs-appctl dpif/dump-flows])
5776 # bump max-idle to avoid the flows being reclaimed behind us
5777 OVS_VSWITCHD_START([add-br br1 -- \
5778 set bridge br1 datapath-type=dummy fail-mode=secure -- \
5779 set Open_vSwitch . other_config:max-idle=10000])
5780 ADD_OF_PORTS([br0], [1], [2])
5781 ADD_OF_PORTS([br1], [3])
5783 AT_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)'])
5784 AT_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)'])
5785 AT_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)'])
5786 ovs-appctl revalidator/wait
5787 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5788 recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5789 recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5792 AT_CHECK([ovs-appctl dpif/dump-flows br1 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5793 recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5796 AT_CHECK([ovs-appctl dpif/dump-flows -m br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5797 skb_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
5798 skb_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
5801 AT_CHECK([ovs-appctl dpif/dump-flows -m br1 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5802 skb_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
5808 AT_SETUP([ofproto-dpif - ovs-appctl dpif/get-flow])
5810 OVS_VSWITCHD_START([add-br br1 -- \
5811 set bridge br1 datapath-type=dummy fail-mode=secure -- \
5812 set Open_vSwitch . other_config:max-idle=10000])
5813 ADD_OF_PORTS([br0], [1], [2])
5815 AT_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)'])
5816 ovs-appctl revalidator/wait
5817 AT_CHECK([ovs-appctl dpif/dump-flows -m br0], [0], [stdout])
5819 UFID=`sed -n 's/\(ufid:[[-0-9a-fA-F]]*\).*/\1/p' stdout`
5820 AT_CHECK([ovs-appctl dpctl/get-flow $UFID], [0], [dnl
5821 recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5827 AT_SETUP([ofproto-dpif - MPLS actions that result in a userspace action])
5828 OVS_VSWITCHD_START([dnl
5829 add-port br0 p1 -- set Interface p1 type=dummy
5831 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5832 on_exit 'kill `cat ovs-ofctl.pid`'
5834 AT_CAPTURE_FILE([ofctl_monitor.log])
5835 AT_DATA([flows.txt], [dnl
5836 dl_src=60:66:66:66:66:00 actions=push_mpls:0x8847,controller
5837 dl_src=60:66:66:66:66:01 actions=pop_mpls:0x8849,controller
5839 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5841 dnl Packet is sent to userspace because a MPLS push or pop action is applied to
5842 dnl a packet with 2 MPLS LSEs but dpif-netdev can't handle any labels.
5844 dnl The input is a frame with two MPLS labels which tcpdump -vve shows as:
5845 dnl 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)
5846 dnl (label 20, exp 0, [S], ttl 32)
5847 dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44, bad cksum 3b78 (->f978)!)
5848 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
5850 for dl_src in 00 01; do
5851 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"])
5853 sleep 1 # wait for the datapath flow installed
5854 AT_CHECK_UNQUOTED([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5855 recirc_id=0,mpls,in_port=1,vlan_tci=0x0000,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))
5856 recirc_id=0,mpls,in_port=1,vlan_tci=0x0000,dl_src=60:66:66:66:66:01,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5863 AT_SETUP([ofproto-dpif - MPLS actions that result in a drop])
5864 OVS_VSWITCHD_START([dnl
5865 add-port br0 p1 -- set Interface p1 type=dummy
5867 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5868 on_exit 'kill `cat ovs-ofctl.pid`'
5870 AT_CAPTURE_FILE([ofctl_monitor.log])
5871 AT_DATA([flows.txt], [dnl
5872 dl_src=60:66:66:66:66:00 actions=push_mpls:0x8847,controller
5873 dl_src=60:66:66:66:66:01 actions=pop_mpls:0x8849,controller
5875 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5877 dnl Packet is dropped because an MPLS PUSH action is applied to a packet with
5878 dnl 4 MPLS LSEs but ovs-vswtichd can only handle up to 3 MPLS LSEs and thus
5879 dnl can't determine the resulting MPLS label after MPLS push/pop actions.
5881 dnl The input is a frame with two MPLS headers which tcpdump -vve shows as:
5882 dnl 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)
5883 dnl (label 20, exp 0, ttl 32)
5884 dnl (label 20, exp 0, ttl 32)
5885 dnl (label 20, exp 0, [S], ttl 32)
5886 dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44, bad cksum 3b78 (->f978)!)
5887 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
5889 for dl_src in 00 01; do
5890 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"])
5892 sleep 1 # wait for the datapath flow installed
5893 AT_CHECK_UNQUOTED([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5894 recirc_id=0,mpls,in_port=1,vlan_tci=0x0000,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))
5895 recirc_id=0,mpls,in_port=1,vlan_tci=0x0000,dl_src=60:66:66:66:66:01,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5901 AT_SETUP([ofproto-dpif - patch ports])
5902 OVS_VSWITCHD_START([add-br br1 \
5903 -- set bridge br1 datapath-type=dummy fail-mode=secure \
5904 -- add-port br1 pbr1 -- set int pbr1 type=patch options:peer=pbr0 \
5905 -- add-port br0 pbr0 -- set int pbr0 type=patch options:peer=pbr1])
5907 ADD_OF_PORTS([br0], [2])
5908 ADD_OF_PORTS([br1], [3])
5910 AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
5912 AT_CHECK([ovs-appctl time/stop])
5913 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5915 AT_CHECK([ovs-ofctl add-flow br0 actions=LOCAL,output:1,output:2])
5916 AT_CHECK([ovs-ofctl add-flow br1 actions=LOCAL,output:1,output:3])
5918 for i in $(seq 1 10); do
5919 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)'
5920 if [[ $i -eq 1 ]]; then
5925 for i in $(seq 1 5); do
5926 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)'
5927 if [[ $i -eq 1 ]]; then
5932 AT_CHECK([ovs-appctl time/warp 500], [0],
5935 sleep 1 # wait for log writer
5937 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
5938 dummy@ovs-dummy: hit:13 missed:2
5940 br0 65534/100: (dummy)
5942 pbr0 1/none: (patch: peer=pbr1)
5944 br1 65534/101: (dummy)
5946 pbr1 1/none: (patch: peer=pbr0)
5949 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5950 recirc_id=0,ip,in_port=100,vlan_tci=0x0000,nw_frag=no, actions:101,3,2
5951 recirc_id=0,ip,in_port=101,vlan_tci=0x0000,nw_frag=no, actions:100,2,3
5954 AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(100).*packets:9' | STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
5955 skb_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
5957 AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(101).*packets:4' | STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
5958 skb_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
5961 AT_CHECK([ovs-ofctl dump-ports br0 pbr0], [0], [dnl
5962 OFPST_PORT reply (xid=0x4): 1 ports
5963 port 1: rx pkts=5, bytes=300, drop=0, errs=0, frame=0, over=0, crc=0
5964 tx pkts=10, bytes=600, drop=0, errs=0, coll=0
5967 AT_CHECK([ovs-ofctl dump-ports br1 pbr1], [0], [dnl
5968 OFPST_PORT reply (xid=0x4): 1 ports
5969 port 1: rx pkts=10, bytes=600, drop=0, errs=0, frame=0, over=0, crc=0
5970 tx pkts=5, bytes=300, drop=0, errs=0, coll=0
5976 AT_SETUP([ofproto-dpif - patch ports - stack])
5977 OVS_VSWITCHD_START([add-br br1 \
5978 -- set bridge br1 datapath-type=dummy fail-mode=secure \
5979 -- add-port br1 pbr1 -- set int pbr1 type=patch options:peer=pbr0 \
5980 -- add-port br0 pbr0 -- set int pbr0 type=patch options:peer=pbr1])
5982 ADD_OF_PORTS([br0], [2])
5983 ADD_OF_PORTS([br1], [3])
5985 AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
5987 AT_CHECK([ovs-appctl time/stop])
5988 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5990 AT_CHECK([ovs-ofctl add-flow br0 "ip actions=push:OXM_OF_IN_PORT[[0..31]],output:1,pop:OXM_OF_IPV4_SRC[[0..31]],output:2"])
5991 # Try to pop from empty stack, and push and leave data to stack.
5992 AT_CHECK([ovs-ofctl add-flow br1 "ip actions=pop:OXM_OF_IPV4_DST[[0..31]],push:NXM_NX_REG1[[0..31]],LOCAL"])
5994 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)'
5996 AT_CHECK([ovs-appctl time/warp 500], [0],
6000 OVS_WAIT_UNTIL([test `grep flow_add ovs-vswitchd.log | wc -l` -ge 1])
6002 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
6003 dummy@ovs-dummy: hit:0 missed:1
6005 br0 65534/100: (dummy)
6007 pbr0 1/none: (patch: peer=pbr1)
6009 br1 65534/101: (dummy)
6011 pbr1 1/none: (patch: peer=pbr0)
6014 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
6015 recirc_id=0,ip,in_port=100,vlan_tci=0x0000,nw_src=192.168.0.1,nw_frag=no, actions:101,set(ipv4(src=255.255.255.254)),2
6018 AT_CHECK([cat ovs-vswitchd.log | grep -e '|nx_match|WARN|' | sed "s/^.*|WARN|//"], [0], [dnl
6019 Failed to pop from an empty stack. On flow
6022 OVS_VSWITCHD_STOP(["/Failed to pop from an empty stack/d"])
6025 AT_SETUP([ofproto-dpif - port duration])
6026 OVS_VSWITCHD_START([set Bridge br0 protocols=OpenFlow13])
6027 ADD_OF_PORTS([br0], 1, 2)
6029 ovs-appctl time/stop
6030 ovs-appctl time/warp 10000
6032 AT_CHECK([ovs-ofctl -O openflow13 dump-ports br0], [0], [stdout])
6033 AT_CHECK([sed -n 's/=[[0-9]][[0-9]]\(\.[[0-9]][[0-9]]*\)\{0,1\}s/=?s/p' stdout], [0],
6042 dnl ----------------------------------------------------------------------
6043 AT_BANNER([ofproto-dpif -- megaflows])
6045 AT_SETUP([ofproto-dpif megaflow - port classification])
6047 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6048 ADD_OF_PORTS([br0], [1], [2])
6049 AT_DATA([flows.txt], [dnl
6050 table=0 in_port=1 actions=output(2)
6052 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6053 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)'])
6055 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)'])
6057 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6058 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_frag=no, actions: <del>
6063 AT_SETUP([ofproto-dpif megaflow - L2 classification])
6065 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6066 ADD_OF_PORTS([br0], [1], [2])
6067 AT_DATA([flows.txt], [dnl
6068 table=0 in_port=1,dl_src=50:54:00:00:00:09 actions=output(2)
6070 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6071 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)'])
6072 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)'])
6074 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6075 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
6076 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b/ff:ff:00:00:00:02,nw_frag=no, actions: <del>
6081 AT_SETUP([ofproto-dpif megaflow - L3 classification])
6083 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6084 ADD_OF_PORTS([br0], [1], [2])
6085 AT_CHECK([ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=t0 prefixes=nw_dst,nw_src], [0], [ignore], [])
6086 AT_DATA([flows.txt], [dnl
6087 table=0 in_port=1,icmp,nw_src=10.0.0.4 actions=output(2)
6089 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6090 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)'])
6091 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)'])
6093 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6094 recirc_id=0,icmp,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.4,nw_frag=no, actions: <del>
6095 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.2/0.0.0.2,nw_frag=no, actions: <del>
6100 AT_SETUP([ofproto-dpif megaflow - IPv6 classification])
6102 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6103 ADD_OF_PORTS([br0], [1], [2])
6104 AT_CHECK([ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=t0 prefixes=ipv6_dst,ipv6_src], [0], [ignore], [])
6105 AT_DATA([flows.txt], [dnl
6106 table=0 in_port=1,ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output(2)
6108 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6109 AT_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)'])
6110 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(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)'])
6112 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6113 recirc_id=0,ipv6,in_port=1,vlan_tci=0x0000,ipv6_src=2001:db8:3c4d:1:2:3:4:5,nw_frag=no, actions: <del>
6114 recirc_id=0,ipv6,in_port=1,vlan_tci=0x0000,ipv6_src=2001:db8:3c4d:5:4:3:2:1/0:0:0:4::,nw_frag=no, actions: <del>
6119 AT_SETUP([ofproto-dpif megaflow - L4 classification])
6121 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6122 ADD_OF_PORTS([br0], [1], [2])
6123 AT_DATA([flows.txt], [dnl
6124 table=0 in_port=1,icmp,icmp_type=8 actions=output(2)
6126 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6127 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)'])
6129 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)'])
6131 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6132 recirc_id=0,icmp,in_port=1,vlan_tci=0x0000,nw_frag=no,icmp_type=0x8/0xff, actions: <del>
6137 AT_SETUP([ofproto-dpif megaflow - normal])
6139 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6140 ADD_OF_PORTS([br0], [1], [2])
6141 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
6142 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)'])
6143 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)'])
6145 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6146 recirc_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>
6147 recirc_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>
6152 AT_SETUP([ofproto-dpif megaflow - mpls])
6154 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6155 ADD_OF_PORTS([br0], [1], [2])
6156 AT_DATA([flows.txt], [dnl
6157 table=0 dl_src=50:54:00:00:00:09 actions=push_mpls:0x8847,2
6158 table=0 dl_src=50:54:00:00:00:0b actions=pop_mpls:0x0800,2
6160 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6161 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(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'])
6162 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:0a),eth_type(0x8847),mpls(label=11,tc=3,ttl=64,bos=1)'])
6164 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6165 recirc_id=0,mpls,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,mpls_label=11,mpls_tc=3,mpls_ttl=64,mpls_bos=1, actions: <del>
6166 recirc_id=0,mpls,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b,mpls_bos=1, actions: <del>
6171 # CHECK_MEGAFLOW_NETFLOW(LOOPBACK_ADDR)
6172 m4_define([CHECK_MEGAFLOW_NETFLOW],
6174 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6175 ADD_OF_PORTS([br0], [1], [2])
6177 dnl NetFlow configuration disables wildcarding relevant fields
6178 on_exit 'kill `cat test-netflow.pid`'
6179 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
6180 AT_CAPTURE_FILE([netflow.log])
6181 PARSE_LISTENING_PORT([test-netflow.log], [NETFLOW_PORT])
6183 set Bridge br0 netflow=@nf -- \
6184 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
6185 engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
6187 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
6188 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)'])
6189 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)'])
6191 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6192 recirc_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>
6193 recirc_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>
6197 AT_SETUP([ofproto-dpif megaflow - netflow - IPv4 collector])
6198 CHECK_MEGAFLOW_NETFLOW([127.0.0.1], [IPv4])
6201 AT_SETUP([ofproto-dpif megaflow - netflow - IPv6 collector])
6202 AT_SKIP_IF([test $HAVE_IPV6 = no])
6203 CHECK_MEGAFLOW_NETFLOW([[[::1]]], [IPv6])
6206 AT_SETUP([ofproto-dpif megaflow - normal, active-backup bonding])
6208 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \
6209 add-bond br0 bond0 p2 p3 bond_mode=active-backup -- \
6210 set interface p2 type=dummy ofport_request=2 -- \
6211 set interface p3 type=dummy ofport_request=3])
6212 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
6214 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6216 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
6217 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)'])
6218 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)'])
6220 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6221 recirc_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>
6222 recirc_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>
6227 AT_SETUP([ofproto-dpif megaflow - normal, balance-slb bonding])
6229 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \
6230 add-bond br0 bond0 p2 p3 bond_mode=balance-slb -- \
6231 set interface p2 type=dummy ofport_request=2 -- \
6232 set interface p3 type=dummy ofport_request=3])
6233 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
6235 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6237 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
6238 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)'])
6239 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)'])
6241 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6242 recirc_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>
6243 recirc_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>
6248 AT_SETUP([ofproto-dpif megaflow - normal, balance-tcp bonding])
6249 # Create bond0 on br0 with interfaces p0 and p1
6250 # and bond1 on br1 with interfaces p2 and p3
6251 # with p0 patched to p2 and p1 patched to p3.
6253 [add-bond br0 bond0 p0 p1 bond_mode=balance-tcp lacp=active \
6254 other-config:lacp-time=fast \
6255 other-config:bond-rebalance-interval=0 -- \
6256 set interface p0 type=patch options:peer=p2 ofport_request=1 -- \
6257 set interface p1 type=patch options:peer=p3 ofport_request=2 -- \
6259 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
6260 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
6261 fail-mode=secure -- \
6262 add-bond br1 bond1 p2 p3 bond_mode=balance-tcp lacp=active \
6263 other-config:lacp-time=fast \
6264 other-config:bond-rebalance-interval=0 -- \
6265 set interface p2 type=patch options:peer=p0 ofport_request=3 -- \
6266 set interface p3 type=patch options:peer=p1 ofport_request=4 --])
6268 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
6270 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6271 ADD_OF_PORTS([br0], [7])
6272 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
6273 AT_CHECK([ovs-ofctl add-flow br1 action=normal])
6274 ovs-appctl time/stop
6275 ovs-appctl time/warp 5000
6276 AT_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)'])
6277 AT_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)'])
6279 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6280 recirc_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>
6281 recirc_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>
6286 AT_SETUP([ofproto-dpif megaflow - resubmit port action])
6288 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6289 ADD_OF_PORTS([br0], [1], [2])
6290 AT_DATA([flows.txt], [dnl
6291 table=0 in_port=1,ip actions=resubmit(90)
6292 table=0 in_port=90,dl_src=50:54:00:00:00:09 actions=output(2)
6294 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6295 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)'])
6296 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)'])
6298 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6299 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
6300 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b/ff:ff:00:00:00:02,nw_frag=no, actions: <del>
6305 AT_SETUP([ofproto-dpif megaflow - resubmit table action])
6307 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6308 ADD_OF_PORTS([br0], [1], [2])
6309 AT_DATA([flows.txt], [dnl
6310 table=0 in_port=1,ip actions=resubmit(,1)
6311 table=1 dl_src=50:54:00:00:00:09 actions=output(2)
6313 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6314 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)'])
6315 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=
6316 1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
6318 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6319 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
6320 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
6325 AT_SETUP([ofproto-dpif megaflow - goto_table action])
6327 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6328 ADD_OF_PORTS([br0], [1], [2])
6329 AT_DATA([flows.txt], [dnl
6330 table=0 in_port=1,ip actions=goto_table(1)
6331 table=1 dl_src=50:54:00:00:00:09 actions=output(2)
6333 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
6334 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)'])
6335 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)'])
6337 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6338 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
6339 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
6344 AT_SETUP([ofproto-dpif megaflow - mirroring, select_all])
6346 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6347 ADD_OF_PORTS([br0], [1], [2], [3])
6349 set Bridge br0 mirrors=@m --\
6350 --id=@p3 get Port p3 --\
6351 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
6353 AT_DATA([flows.txt], [dnl
6354 in_port=1 actions=output:2
6356 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6357 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)'])
6359 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)'])
6361 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6362 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_frag=no, actions: <del>
6367 AT_SETUP([ofproto-dpif megaflow - mirroring, select_vlan])
6369 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6370 ADD_OF_PORTS([br0], [1], [2], [3])
6372 set Bridge br0 mirrors=@m --\
6373 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
6374 --id=@m create Mirror name=mymirror select_all=true select_vlan=11 output_port=@p3
6376 AT_DATA([flows.txt], [dnl
6377 in_port=1 actions=output:2
6379 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6380 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(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))'])
6381 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)'])
6383 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6384 recirc_id=0,ip,in_port=1,dl_vlan=11,nw_frag=no, actions: <del>
6385 recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,nw_frag=no, actions: <del>
6390 AT_SETUP([ofproto-dpif megaflow - move action])
6392 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6393 ADD_OF_PORTS([br0], [1], [2])
6394 AT_DATA([flows.txt], [dnl
6395 table=0 in_port=1 ip,actions=move:NXM_OF_IP_SRC[[]]->NXM_NX_REG0[[]],resubmit(90)
6396 table=0 in_port=90 ip,actions=move:NXM_NX_REG0[[]]->NXM_NX_REG1[[]],resubmit(91)
6397 table=0 in_port=91 reg0=0x0a000002,actions=output(2)
6399 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6400 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)'])
6401 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)'])
6403 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6404 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.2,nw_frag=no, actions: <del>
6405 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.4,nw_frag=no, actions: <del>
6410 AT_SETUP([ofproto-dpif megaflow - push action])
6412 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6413 ADD_OF_PORTS([br0], [1], [2])
6414 AT_DATA([flows.txt], [dnl
6415 table=0 in_port=1 ip,actions=push:NXM_OF_IP_SRC[[]],output(2)
6417 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6418 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)'])
6419 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)'])
6421 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6422 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.2,nw_frag=no, actions: <del>
6423 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.4,nw_frag=no, actions: <del>
6428 AT_SETUP([ofproto-dpif megaflow - learning])
6430 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6431 ADD_OF_PORTS([br0], [1], [2])
6432 AT_DATA([flows.txt], [dnl
6433 table=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
6435 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6436 ovs-appctl time/stop
6437 # We send each packet twice because the first packet in each flow causes the
6438 # flow table to change and thus revalidations, which (depending on timing)
6439 # can keep a megaflow from being installed. The revalidations are done by
6440 # the second iteration, allowing the flows to be installed.
6442 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)'])
6443 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)'])
6444 ovs-appctl time/warp 100
6447 dnl The original flow is missing due to a revalidation.
6448 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6449 recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
6450 recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
6455 AT_SETUP([ofproto-dpif megaflow - tunnels])
6457 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1])
6458 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6459 AT_CHECK([ovs-vsctl add-port br0 p2 -- set Interface p2 type=gre \
6460 options:remote_ip=1.1.1.1 ofport_request=2 options:key=flow])
6461 AT_CHECK([ovs-vsctl add-port br0 p3 -- set Interface p3 type=dummy \
6463 AT_CHECK([ovs-vsctl add-port br0 p4 -- set Interface p4 type=gre \
6464 options:remote_ip=1.1.1.2 options:tos=inherit options:ttl=inherit \
6465 ofport_request=4 options:key=flow])
6466 AT_DATA([flows.txt], [dnl
6467 in_port=1,actions=output(2)
6468 in_port=3,actions=output(4)
6470 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6471 dnl ECN bits are always copied out, but don't use 0x3 (CE), since that
6472 dnl will cause the packet to be dropped.
6473 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=0xfd,ttl=128,frag=no),icmp(type=8,code=0)'])
6475 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=0x1,ttl=64,frag=no),icmp(type=8,code=0)'])
6476 AT_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)'])
6478 AT_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)'])
6480 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6481 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_ecn=1,nw_frag=no, actions: <del>
6482 recirc_id=0,ip,in_port=3,vlan_tci=0x0000,nw_tos=0,nw_ecn=1,nw_ttl=64,nw_frag=no, actions: <del>
6483 recirc_id=0,ip,in_port=3,vlan_tci=0x0000,nw_tos=252,nw_ecn=1,nw_ttl=128,nw_frag=no, actions: <del>
6488 AT_SETUP([ofproto-dpif megaflow - dec_ttl])
6490 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6491 ADD_OF_PORTS([br0], [1], [2])
6492 AT_CHECK([ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=t0 prefixes=nw_dst,nw_src], [0], [ignore], [])
6493 AT_DATA([flows.txt], [dnl
6494 table=0 in_port=1,icmp,nw_src=10.0.0.4 actions=dec_ttl,output(2)
6496 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6497 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)'])
6498 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)'])
6500 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6501 recirc_id=0,icmp,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.4,nw_ttl=64,nw_frag=no, actions: <del>
6502 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,nw_src=10.0.0.2/0.0.0.2,nw_frag=no, actions: <del>
6507 AT_SETUP([ofproto-dpif megaflow - set dl_dst])
6509 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6510 ADD_OF_PORTS([br0], [1], [2])
6511 AT_DATA([flows.txt], [dnl
6512 table=0 in_port=1 actions=mod_dl_dst(50:54:00:00:00:0a),output(2)
6514 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6515 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)'])
6516 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)'])
6518 dnl The first packet is essentially a no-op, as the new destination MAC is the
6519 dnl same as the original. The second entry actually updates the destination
6521 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
6522 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions:2
6523 recirc_id=0,ip,in_port=1,vlan_tci=0x0000,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions:set(eth(dst=50:54:00:00:00:0a)),2
6528 AT_SETUP([ofproto-dpif megaflow - disabled])
6530 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6531 ADD_OF_PORTS([br0], [1], [2])
6532 AT_DATA([flows.txt], [dnl
6533 table=0 in_port=1,ip,nw_dst=10.0.0.1 actions=output(2)
6534 table=0 in_port=1,ip,nw_dst=10.0.0.3 actions=drop
6536 AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [megaflows disabled
6538 AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
6540 AT_CHECK([ovs-appctl vlog/set dpif_netdev:dbg], [0], [], [])
6541 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6542 for i in 1 2 3 4; do
6543 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)'])
6544 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)'])
6545 if [[ $i -eq 1 ]]; then
6550 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
6551 pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,ct_state=0,ct_zone=0,ct_mark=0,ct_label=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
6552 pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,ct_state=0,ct_zone=0,ct_mark=0,ct_label=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
6554 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_DUMP | grep 'packets:3'], [0], [dnl
6555 skb_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
6556 skb_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
6561 AT_SETUP([ofproto-dpif - datapath port number change])
6562 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
6563 ADD_OF_PORTS([br0], 1)
6565 # Trace a flow that should output to p1.
6566 AT_CHECK([ovs-appctl ofproto/trace br0 in_port=LOCAL,dl_src=10:20:30:40:50:60],
6568 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 1
6571 # Change p1's port number to 5.
6572 AT_CHECK([ovs-appctl dpif-dummy/change-port-number ovs-dummy p1 5])
6574 # Trace a flow that should output to p1 in its new location.
6575 AT_CHECK([ovs-appctl ofproto/trace br0 in_port=LOCAL,dl_src=10:20:30:40:50:60],
6577 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 5
6582 # Tests the bundling with various bfd and cfm configurations.
6583 AT_SETUP([ofproto - bundle with variable bfd/cfm config])
6584 OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
6585 add-bond br0 br0bond p0 p2 bond-mode=active-backup -- \
6586 add-bond br1 br1bond p1 p3 bond-mode=active-backup -- \
6587 set Interface p1 type=patch options:peer=p0 ofport_request=2 -- \
6588 set Interface p3 type=patch options:peer=p2 ofport_request=4 -- \
6589 set Interface p0 type=patch options:peer=p1 ofport_request=1 -- \
6590 set Interface p2 type=patch options:peer=p3 ofport_request=3 -- \
6591 set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 -- \
6592 set Interface p0 cfm_mpid=1 -- \
6593 set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
6595 ovs-appctl time/stop
6596 # advance the clock to stablize everything.
6597 ovs-appctl time/warp 5000 100
6598 # cfm/show should show 'recv' fault.
6599 AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
6602 # bfd/show should show 'up'.
6603 AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
6604 Local Session State: up
6605 Remote Session State: up
6606 Local Session State: up
6607 Remote Session State: up
6609 # bond/show should show 'may-enable: true' for all slaves.
6610 AT_CHECK([ovs-appctl bond/show | sed -n '/^.*may_enable:.*/p'], [0], [dnl
6617 # now disable the bfd on p1.
6618 AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false])
6619 # advance the clock to stablize everything.
6620 ovs-appctl time/warp 5000 100
6621 # cfm/show should show 'recv' fault.
6622 AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
6625 # bfd/show should show 'down'.
6626 AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
6627 Local Session State: down
6628 Remote Session State: down
6630 # bond/show should show 'may-enable: false' for p0.
6631 AT_CHECK([ovs-appctl bond/show br0bond | sed -n '/^.*may_enable:.*/p'], [0], [dnl
6636 # now enable the bfd on p1 and disable bfd on p0.
6637 AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true])
6638 AT_CHECK([ovs-vsctl set Interface p0 bfd:enable=false])
6639 # advance the clock to stablize everything.
6640 ovs-appctl time/warp 5000 100
6641 # cfm/show should show 'recv' fault.
6642 AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
6645 # bfd/show should show 'down'.
6646 AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
6647 Local Session State: down
6648 Remote Session State: down
6650 # bond/show should show 'may-enable: false' for p0 and p1.
6651 AT_CHECK([ovs-appctl bond/show | sed -n '/^.*may_enable:.*/p'], [0], [dnl
6661 AT_SETUP([ofproto-dpif - ofproto-dpif-monitor 1])
6662 OVS_VSWITCHD_START([add-port br0 p0 -- set interface p0 type=gre options:remote_ip=1.2.3.4])
6665 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true])
6667 OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
6668 # disable bfd on p0.
6669 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false])
6671 OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
6672 AT_CHECK([cat ovs-vswitchd.log | sed -e '/^.*ofproto_dpif_monitor.*$/d' > ovs-vswitchd.log])
6675 AT_CHECK([ovs-vsctl set interface p0 cfm_mpid=10])
6677 OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
6678 # disable cfm on p0.
6679 AT_CHECK([ovs-vsctl remove interface p0 cfm_mpid 10])
6681 OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
6682 AT_CHECK([cat ovs-vswitchd.log | sed -e '/^.*ofproto_dpif_monitor.*$/d' > ovs-vswitchd.log])
6684 # enable both bfd and cfm on p0.
6685 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true cfm_mpid=10])
6687 OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
6688 # disable bfd on p0.
6689 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false])
6690 # check log, there should not be the log of thread terminated.
6691 AT_CHECK([sed -n "s/^.*|ofproto_dpif_monitor(monitor[[0-9]]*)|INFO|\(.* terminated\)$/\1/p" ovs-vswitchd.log], [0], [dnl
6693 # reenable bfd on p0.
6694 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true])
6695 # check log, should still be on log of thread created.
6696 AT_CHECK([sed -n "s/^.*|ofproto_dpif_monitor(monitor[[0-9]]*)|INFO|\(.* created\)$/\1/p" ovs-vswitchd.log], [0], [dnl
6697 monitor thread created
6699 # disable bfd and cfm together.
6700 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false -- remove interface p0 cfm_mpid 10])
6702 OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
6707 # this test helps avoid the deadlock between the main thread and monitor thread.
6708 AT_SETUP([ofproto-dpif - ofproto-dpif-monitor 2])
6711 for i in `seq 1 199`
6713 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])
6719 AT_BANNER([ofproto-dpif - flow translation resource limits])
6721 AT_SETUP([ofproto-dpif - infinite resubmit])
6723 AT_CHECK([ovs-ofctl add-flow br0 actions=resubmit:1,resubmit:2,output:3])
6724 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'eth_dst=ff:ff:ff:ff:ff:ff'],
6726 AT_CHECK([tail -1 stdout], [0],
6727 [Translation failed (Recursion too deep), packet is dropped.
6729 AT_CHECK([grep -c 'resubmit actions recursed over 64 times' stdout],
6732 OVS_VSWITCHD_STOP(["/resubmit actions recursed/d"])
6735 AT_SETUP([ofproto-dpif - exponential resubmit chain])
6737 ADD_OF_PORTS([br0], 1)
6738 (for i in `seq 1 64`; do
6740 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
6742 echo "in_port=65, actions=local") > flows
6743 AT_CHECK([ovs-ofctl add-flows br0 flows])
6744 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
6745 AT_CHECK([tail -1 stdout], [0],
6746 [Translation failed (Too many resubmits), packet is dropped.
6748 AT_CHECK([grep -c 'over 4096 resubmit actions' stdout], [0], [1
6750 OVS_VSWITCHD_STOP(["/over.*resubmit actions/d"])
6753 AT_SETUP([ofproto-dpif - too many output actions])
6755 ADD_OF_PORTS([br0], 1)
6756 (for i in `seq 1 12`; do
6758 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
6760 echo "in_port=13, actions=local,local,local,local,local,local,local,local") > flows
6761 AT_CHECK([ovs-ofctl add-flows br0 flows])
6762 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
6763 AT_CHECK([grep -c -e '- Uses action(s) not supported by datapath' stdout],
6766 AT_CHECK([grep -c 'resubmits yielded over 64 kB of actions' stdout], [0], [1
6768 OVS_VSWITCHD_STOP(["/resubmits yielded over 64 kB of actions/d"])
6771 AT_SETUP([ofproto-dpif - stack too deep])
6773 ADD_OF_PORTS([br0], 1)
6774 (for i in `seq 1 12`; do
6776 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
6778 push="push:NXM_NX_REG0[[]]"
6779 echo "in_port=13, actions=$push,$push,$push,$push,$push,$push,$push,$push") > flows
6780 AT_CHECK([ovs-ofctl add-flows br0 flows])
6781 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
6782 AT_CHECK([tail -1 stdout], [0],
6783 [Translation failed (Stack too deep), packet is dropped.
6785 AT_CHECK([grep -c 'resubmits yielded over 64 kB of stack' stdout], [0], [1
6787 OVS_VSWITCHD_STOP(["/resubmits yielded over 64 kB of stack/d"])
6791 AT_SETUP([ofproto-dpif packet-out controller])
6793 ADD_OF_PORTS([br0], 1, 2)
6795 AT_CHECK([ovs-ofctl add-flow br0 'dl_dst=50:54:00:00:00:0a actions=controller'])
6797 AT_CAPTURE_FILE([ofctl_monitor.log])
6798 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6801 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER controller '50540000000a5054000000091234'])
6804 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6805 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6806 NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
6807 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6809 NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
6810 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6812 NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
6813 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6816 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
6817 dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6821 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6823 active=1, lookup=0, matched=0
6826 active=0, lookup=0, matched=0
6828 for i in `seq 2 253`; do
6829 printf ' table %d: ditto\n' $i
6831 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6836 AT_SETUP([ofproto-dpif packet-out controller (patch port)])
6839 add-port br0 p1 -- \
6840 set interface p1 type=patch options:peer=p2 -- \
6842 set bridge br1 datapath-type=dummy -- \
6843 set bridge br1 fail-mode=secure -- \
6844 set bridge br1 protocols='[OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13]' -- \
6845 add-port br1 p2 -- \
6846 set interface p2 type=patch options:peer=p1 --])
6848 AT_CAPTURE_FILE([ofctl_monitor.log])
6849 AT_CHECK([ovs-ofctl monitor br1 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6852 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER output:1 '50540000000a5054000000091234'])
6855 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6856 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6857 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
6858 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6860 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
6861 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6863 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
6864 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6867 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6869 active=0, lookup=0, matched=0
6871 for i in `seq 1 253`; do
6872 printf ' table %d: ditto\n' $i
6874 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6876 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6878 active=0, lookup=3, matched=0
6881 active=0, lookup=0, matched=0
6883 for i in `seq 2 253`; do
6884 printf ' table %d: ditto\n' $i
6886 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br1 ], [0], [expout])
6892 AT_SETUP([ofproto-dpif packet-out goto_table])
6894 ADD_OF_PORTS([br0], 1, 2)
6896 AT_DATA([flows.txt], [dnl
6897 table=0 dl_dst=50:54:00:00:00:0a actions=goto_table(1)
6898 table=1 dl_dst=50:54:00:00:00:0a actions=controller
6900 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows.txt])
6902 AT_CAPTURE_FILE([ofctl_monitor.log])
6903 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6906 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)'
6909 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6910 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6911 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6912 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6913 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6915 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6916 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6918 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6919 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6922 AT_CHECK([ovs-appctl revalidator/purge], [0])
6923 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
6924 n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=goto_table:1
6925 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6926 OFPST_FLOW reply (OF1.3):
6929 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6931 active=1, lookup=3, matched=3
6935 active=0, lookup=0, matched=0
6937 for i in `seq 3 253`; do
6938 printf ' table %d: ditto\n' $i
6940 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6946 AT_SETUP([ofproto-dpif packet-out table-miss (continue)])
6948 ADD_OF_PORTS([br0], 1, 2)
6950 AT_CHECK([ovs-ofctl -O OpenFlow11 add-flow br0 'table=1 dl_dst=50:54:00:00:00:0a actions=controller'])
6951 AT_CHECK([ovs-ofctl -O OpenFlow11 mod-table br0 all continue])
6953 AT_CAPTURE_FILE([ofctl_monitor.log])
6954 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6957 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)'
6960 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6961 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6962 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6963 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6964 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6966 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6967 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6969 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6970 vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6973 AT_CHECK([ovs-appctl revalidator/purge], [0])
6974 AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip | sort], [0], [dnl
6975 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6976 OFPST_FLOW reply (OF1.1):
6979 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6981 active=0, lookup=3, matched=0
6984 active=1, lookup=3, matched=3
6987 active=0, lookup=0, matched=0
6989 for i in `seq 3 253`; do
6990 printf ' table %d: ditto\n' $i
6992 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6997 AT_SETUP([ofproto-dpif - ICMPv6])
6999 ADD_OF_PORTS([br0], 1)
7001 AT_CAPTURE_FILE([ofctl_monitor.log])
7003 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
7005 ovs-appctl netdev-dummy/receive p1 '0060970769ea0000860580da86dd6000000000203afffe80000000000000020086fffe0580dafe80000000000000026097fffe0769ea870068bd00000000fe80000000000000026097fffe0769ea01010000860580da'
7007 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
7009 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
7010 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via no_match) data_len=86 (unbuffered)
7011 icmp6,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 icmp6_csum:68bd
7017 AT_SETUP([ofproto-dpif - Neighbor Discovery set-field with checksum update])
7019 ADD_OF_PORTS([br0], 1)
7020 AT_CHECK([ovs-ofctl add-flow br0 icmp6,icmpv6_type=135,action=set_field:fe80::1-\>nd_target,set_field:32:21:14:86:11:74-\>nd_sll,output:controller])
7022 AT_CAPTURE_FILE([ofctl_monitor.log])
7024 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
7026 ovs-appctl netdev-dummy/receive p1 '0060970769ea0000860580da86dd6000000000203afffe80000000000000020086fffe0580dafe80000000000000026097fffe0769ea870068bd00000000fe80000000000000026097fffe0769ea01010000860580da'
7028 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
7030 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
7031 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via action) data_len=86 (unbuffered)
7032 icmp6,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::1,nd_sll=32:21:14:86:11:74,nd_tll=00:00:00:00:00:00 icmp6_csum:19d3
7038 # Tests the exact match of CFI bit in installed datapath flows matching VLAN.
7039 AT_SETUP([ofproto-dpif - vlan matching])
7041 [add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1])
7042 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
7044 AT_CHECK([ovs-ofctl del-flows br0])
7045 AT_CHECK([ovs-ofctl add-flow br0 "vlan_tci=0x000a/0x0fff,action=output:local"])
7047 AT_CHECK([ovs-appctl netdev-dummy/receive p0 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x8100),vlan(vid=10,pcp=0),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))'])
7049 OVS_WAIT_UNTIL([grep flow_add: ovs-vswitchd.log])
7050 AT_CHECK([cat ovs-vswitchd.log | grep 'in_port=[[1]]' | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
7051 recirc_id=0,ip,in_port=1,dl_vlan=10,nw_frag=no, actions: <del>
7056 # Tests in place modification of installed datapath flows.
7057 AT_SETUP([ofproto-dpif - in place modification])
7059 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1])
7060 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
7062 AT_CHECK([ovs-ofctl del-flows br0])
7063 AT_CHECK([ovs-ofctl add-flow br0 in_port=1,actions=mod_vlan_vid:3,output:local])
7065 ovs-appctl vlog/set PATTERN:ANY:'%c|%p|%m'
7067 ovs-appctl time/stop
7070 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)'
7073 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
7074 recirc_id(0),in_port(1),eth_type(0x1234), packets:2, bytes:120, used:0.0s, actions:push_vlan(vid=3,pcp=0),100
7077 AT_CHECK([ovs-ofctl add-flow br0 priority=60000,in_port=1,actions=mod_vlan_vid:4,output:local])
7079 ovs-appctl time/warp 500
7080 ovs-appctl time/warp 500
7083 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)'
7086 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
7087 recirc_id(0),in_port(1),eth_type(0x1234), packets:5, bytes:300, used:0.0s, actions:push_vlan(vid=4,pcp=0),100
7090 AT_CHECK([cat ovs-vswitchd.log | grep 'modify' | STRIP_UFID ], [0], [dnl
7091 dpif|DBG|dummy@ovs-dummy: put[[modify]] skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),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(0x1234), actions:push_vlan(vid=4,pcp=0),100
7096 # Tests in place modification of installed datapath flows with vlans.
7097 AT_SETUP([ofproto-dpif - in place modification (vlan)])
7099 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1])
7100 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
7102 AT_CHECK([ovs-ofctl del-flows br0])
7103 AT_CHECK([ovs-ofctl add-flow br0 in_port=1,actions=output:local])
7105 ovs-appctl vlog/set PATTERN:ANY:'%c|%p|%m'
7107 ovs-appctl time/stop
7109 # Check that a correct datapath flow is created.
7111 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)'
7114 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
7115 recirc_id(0),in_port(1),eth_type(0x1234), packets:2, bytes:120, used:0.0s, actions:100
7118 # Delete the flow. Then check that the datapath flow is modified to
7119 # drop the packets. A modified flow inherits the stats, a new
7120 # datapath flow would start from sero.
7121 AT_CHECK([ovs-ofctl del-flows br0])
7123 ovs-appctl time/warp 500
7124 ovs-appctl time/warp 500
7127 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)'
7130 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
7131 recirc_id(0),in_port(1),eth_type(0x1234), packets:5, bytes:300, used:0.0s, actions:drop
7134 # Add a flow that matches the non-presence of a vlan tag, and check
7135 # that the datapath flow is modified accordingly.
7136 AT_CHECK([ovs-ofctl add-flow br0 in_port=1,vlan_tci=0x0000/0x1fff,actions=output:local])
7138 ovs-appctl time/warp 500
7139 ovs-appctl time/warp 500
7142 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)'
7145 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
7146 recirc_id(0),in_port(1),eth_type(0x1234), packets:8, bytes:480, used:0.0s, actions:100
7149 # Check that VLAN packets will not hit the same datapath megaflow.
7151 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=99,pcp=7),encap(eth_type(0x1234))'
7154 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
7155 recirc_id(0),in_port(1),eth_type(0x1234), packets:8, bytes:480, used:0.0s, actions:100
7156 recirc_id(0),in_port(1),eth_type(0x8100),vlan(vid=99/0x0,pcp=7/0x0),encap(eth_type(0x1234)), packets:2, bytes:120, used:0.0s, actions:drop
7159 # Check that the new flow matches the CFI bit, while both vid and pcp
7161 AT_CHECK([cat ovs-vswitchd.log | grep '\(modify\)\|\(flow_add\)' | STRIP_UFID ], [0], [dnl
7162 dpif_netdev|DBG|flow_add: recirc_id=0,in_port=1,vlan_tci=0x0000,dl_type=0x1234, actions:100
7163 dpif|DBG|dummy@ovs-dummy: put[[modify]] skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),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(0x1234)
7164 dpif|DBG|dummy@ovs-dummy: put[[modify]] skb_priority(0/0),skb_mark(0/0),recirc_id(0),dp_hash(0/0),in_port(1),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(0x1234), actions:100
7165 dpif_netdev|DBG|flow_add: recirc_id=0,in_port=1,vlan_tci=0xf063/0x1000,dl_type=0x1234, actions:drop