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 # Should generate recirc_id(0x2),dp_hash(0xc1261ba2/0xff).
190 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)"])
192 # Collects flow stats.
193 AT_CHECK([ovs-appctl revalidator/purge], [0])
195 # Checks the flow stats in br1, should only be one flow with non-zero
196 # 'n_packets' from internal table.
197 AT_CHECK([ovs-appctl bridge/dump-flows br1 | ofctl_strip | grep -- "n_packets" | grep -- "table_id" | sed -e 's/dp_hash=0x[[0-9a-f]][[0-9a-f]]*/dp_hash=0x0/' -e 's/output:[[0-9]][[0-9]]*/output/'], [0], [dnl
198 table_id=254, n_packets=1, n_bytes=64, priority=20,recirc_id=0x2,dp_hash=0x0/0xff,actions=output
201 # Checks the flow stats in br-int, should be only one match.
202 AT_CHECK([ovs-ofctl dump-flows br-int | ofctl_strip | sort], [0], [dnl
203 n_packets=1, n_bytes=60, priority=1,in_port=5 actions=mod_vlan_vid:1,output:101
204 priority=2,in_port=5,dl_vlan=1 actions=drop
211 AT_SETUP([ofproto-dpif - resubmit])
213 ADD_OF_PORTS([br0], [1], [10], [11], [12], [13], [14], [15],
214 [16], [17], [18], [19], [20], [21])
215 AT_DATA([flows.txt], [dnl
216 table=0 in_port=1 priority=1000 icmp actions=output(10),resubmit(2),output(19),resubmit(3),output(21)
217 table=0 in_port=2 priority=1500 icmp actions=output(11),resubmit(,1),output(16),resubmit(2,1),output(18)
218 table=0 in_port=3 priority=2000 icmp actions=output(20)
219 table=1 in_port=1 priority=1000 icmp actions=output(12),resubmit(4,1),output(13),resubmit(3),output(15)
220 table=1 in_port=2 priority=1500 icmp actions=output(17),resubmit(,2)
221 table=1 in_port=3 priority=1500 icmp actions=output(14),resubmit(,2)
223 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
224 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])
225 AT_CHECK([tail -1 stdout], [0],
226 [Datapath actions: 10,11,12,13,14,15,16,17,18,19,20,21
231 AT_SETUP([ofproto-dpif - goto table])
233 ADD_OF_PORTS([br0], [1], [10], [11])
234 echo "table=0 in_port=1 actions=output(10),goto_table(1)" > flows.txt
235 for i in `seq 1 63`; do echo "table=$i actions=goto_table($(($i+1)))"; done >> flows.txt
236 echo "table=64 actions=output(11)" >> flows.txt
237 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
238 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])
239 AT_CHECK([tail -1 stdout], [0],
240 [Datapath actions: 10,11
245 AT_SETUP([ofproto-dpif - write actions])
247 ADD_OF_PORTS([br0], [1], [10], [11], [12], [13])
248 AT_DATA([flows.txt], [dnl
249 table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip_src,output(12)),goto_table(1)
250 table=1 ip actions=write_actions(output(13)),goto_table(2)
251 table=2 ip actions=set_field:192.168.3.91->ip_src,output(11)
253 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
254 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])
255 AT_CHECK([tail -2 stdout], [0],
256 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
257 Datapath actions: 10,set(ipv4(src=192.168.3.91)),11,set(ipv4(src=192.168.3.90)),13
262 AT_SETUP([ofproto-dpif - modify IPv6 Neighbor Solitication (ND)])
264 ADD_OF_PORTS([br0], [1], [10], [11], [12], [13])
265 AT_DATA([flows.txt], [dnl
266 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)
267 table=1 icmp6 actions=write_actions(output(13)),goto_table(2)
268 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)
270 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
271 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])
272 AT_CHECK([tail -4 stdout], [0],
273 [Megaflow: recirc_id=0,icmp6,in_port=1,nw_frag=no,icmp_type=135,icmp_code=0x0/0xff,nd_target=fe80::2020,nd_sll=66:55:44:33:22:11
274 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
275 This flow is handled by the userspace slow path because it:
276 - Uses action(s) not supported by datapath.
281 AT_SETUP([ofproto-dpif - clear actions])
283 ADD_OF_PORTS([br0], [1], [10], [11], [12])
284 AT_DATA([flows.txt], [dnl
285 table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip_src,output(12)),goto_table(1)
286 table=1 tcp actions=set_field:91->tp_src,output(11),clear_actions
288 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
289 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])
290 AT_CHECK([tail -2 stdout], [0],
291 [Megaflow: recirc_id=0,tcp,in_port=1,nw_frag=no,tp_src=8
292 Datapath actions: 10,set(tcp(src=91)),11
297 AT_SETUP([ofproto-dpif - group chaining not supported])
299 ADD_OF_PORTS([br0], [1], [10], [11])
300 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,group:123,bucket=output:11'],
302 AT_CHECK([STRIP_XIDS stderr | sed 1q], [0],
303 [OFPT_ERROR (OF1.2): OFPGMFC_CHAINING_UNSUPPORTED
308 AT_SETUP([ofproto-dpif - all group in action list])
310 ADD_OF_PORTS([br0], [1], [10], [11])
311 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'])
312 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
313 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])
314 # Must match on the source address to be able to restore it's value for
316 AT_CHECK([tail -2 stdout], [0],
317 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
318 Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
323 AT_SETUP([ofproto-dpif - indirect group in action list])
325 ADD_OF_PORTS([br0], [1], [10])
326 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10])
327 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234'])
328 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])
329 AT_CHECK([tail -1 stdout], [0],
330 [Datapath actions: 10
335 AT_SETUP([ofproto-dpif - group actions have no effect afterwards])
337 ADD_OF_PORTS([br0], [1], [10])
338 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'])
339 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234,output:10'])
340 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])
341 AT_CHECK([tail -1 stdout], [0],
342 [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
347 AT_SETUP([ofproto-dpif - all group in action set])
349 ADD_OF_PORTS([br0], [1], [10], [11])
350 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'])
351 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
352 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])
353 # Must match on the source address to be able to restore it's value for
355 AT_CHECK([tail -2 stdout], [0],
356 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
357 Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11
362 AT_SETUP([ofproto-dpif - indirect group in action set])
364 ADD_OF_PORTS([br0], [1], [10])
365 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10])
366 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
367 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])
368 AT_CHECK([tail -1 stdout], [0],
369 [Datapath actions: 10
374 AT_SETUP([ofproto-dpif - select group])
376 ADD_OF_PORTS([br0], [1], [10], [11])
377 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,bucket=output:11'])
378 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
380 # Try a bunch of different flows and make sure that they get distributed
382 for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
383 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])
384 tail -1 stdout >> results
386 sort results | uniq -c
387 AT_CHECK([sort results | uniq], [0],
388 [Datapath actions: 10
394 AT_SETUP([ofproto-dpif - select group with watch port])
396 ADD_OF_PORTS([br0], [1], [10], [11])
397 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=watch_port:10,output:10,bucket=output:11'])
398 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
399 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])
400 AT_CHECK([tail -1 stdout], [0],
401 [Datapath actions: 11
406 AT_SETUP([ofproto-dpif - select group with weight])
408 ADD_OF_PORTS([br0], [1], [10], [11], [12])
409 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'])
410 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
411 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])
412 AT_CHECK([tail -1 stdout], [0],
413 [Datapath actions: 11
418 AT_SETUP([ofproto-dpif - select group with hash selection method])
420 ADD_OF_PORTS([br0], [1], [10], [11])
421 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'])
422 AT_CHECK([ovs-ofctl -O OpenFlow15 add-flow br0 'ip actions=write_actions(group:1234)'])
424 # Try a bunch of different flows and make sure that they get distributed
426 for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
427 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])
428 tail -1 stdout >> results
430 sort results | uniq -c
431 AT_CHECK([sort results | uniq], [0],
432 [Datapath actions: 10
437 # Try a bunch of different flows and make sure that they are not distributed
438 # as they only vary a field that is not hashed
439 for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
440 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])
441 tail -1 stdout >> results
443 sort results | uniq -c
444 AT_CHECK([sort results | uniq], [0],
445 [Datapath actions: 10
451 AT_SETUP([ofproto-dpif - fast failover group])
453 ADD_OF_PORTS([br0], [1], [10], [11])
454 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'])
455 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
456 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])
457 AT_CHECK([tail -1 stdout], [0],
458 [Datapath actions: drop
463 AT_SETUP([ofproto-dpif - group stats single bucket])
465 ADD_OF_PORTS([br0], [1], [10], [11])
466 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=select,bucket=output:10,weight=2000,bucket=output:11,weight=0'])
467 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
471 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)"
472 AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
475 AT_CHECK([ovs-appctl revalidator/purge], [0])
476 AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout])
477 AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl
478 group_id=1234,ref_count=0,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=0,byte_count=0
479 OFPST_GROUP reply (OF1.2):
484 AT_SETUP([ofproto-dpif - group stats all buckets])
486 ADD_OF_PORTS([br0], [1], [10], [11])
487 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:11'])
488 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
492 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)"
493 AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
496 AT_CHECK([ovs-appctl revalidator/purge], [0])
497 AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout])
498 AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl
499 group_id=1234,ref_count=0,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=3,byte_count=180
500 OFPST_GROUP reply (OF1.2):
505 AT_SETUP([ofproto-dpif - registers])
507 ADD_OF_PORTS([br0], [20], [21], [22], [33], [90])
508 AT_DATA([flows.txt], [dnl
509 in_port=90 actions=resubmit:2,resubmit:3,resubmit:4,resubmit:91
510 in_port=91 actions=resubmit:5,resubmit:6,resubmit:7,resubmit:92
511 in_port=92 actions=resubmit:8,resubmit:9,resubmit:10,resubmit:11,resubmit:93
512 in_port=93 actions=resubmit:12,resubmit:13,resubmit:14,resubmit:15
514 in_port=2 actions=load:0x000db000->NXM_NX_REG0[[]]
515 in_port=3 actions=load:0xdea->NXM_NX_REG0[[20..31]]
516 in_port=4 actions=load:0xeef->NXM_NX_REG0[[0..11]]
517 in_port=5 actions=move:NXM_NX_REG0[[]]->NXM_NX_REG1[[]]
518 in_port=6 actions=load:0x22222222->NXM_NX_REG2[[]]
519 in_port=7 actions=move:NXM_NX_REG1[[20..31]]->NXM_NX_REG2[[0..11]]
520 in_port=8 actions=move:NXM_NX_REG1[[0..11]]->NXM_NX_REG2[[20..31]]
521 in_port=9,reg0=0xdeadbeef actions=output:20
522 in_port=10,reg1=0xdeadbeef actions=output:21
523 in_port=11,reg2=0xeef22dea actions=output:22
525 dnl Sanilty check all registers
526 in_port=12 actions=load:0x10->NXM_NX_REG0[[]],load:0x11->NXM_NX_REG1[[]],load:0x12->NXM_NX_REG2[[]]
527 in_port=13 actions=load:0x13->NXM_NX_REG3[[]],load:0x14->NXM_NX_REG4[[]],load:0x15->NXM_NX_REG5[[]]
528 in_port=14 actions=load:0x16->NXM_NX_REG6[[]],load:0x17->NXM_NX_REG7[[]]
529 in_port=15,reg0=0x10,reg1=0x11,reg2=0x12,reg3=0x13,reg4=0x14,reg5=0x15,reg6=0x16,reg7=0x17 actions=output:33
532 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
533 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])
534 AT_CHECK([tail -1 stdout], [0],
535 [Datapath actions: 20,21,22,33
540 dnl Tests that the standardized xregs are mapped onto the legacy OVS registers
541 dnl in the manner documented in ovs-ofctl(8).
542 AT_SETUP([ofproto-dpif - extended registers])
544 ADD_OF_PORTS([br0], [1], [2], [3])
545 AT_DATA([flows.txt], [dnl
546 table=0 actions=load:0xfedcba9876543210->OXM_OF_PKT_REG1[[]],resubmit(,1)
547 table=1,reg2=0xfedcba98,reg3=0x76543210 actions=2
549 # These low-priority rules shouldn't match. They're here only to make really
550 # sure that the test fails if either of the above rules fails to match.
551 table=0,priority=0 actions=3
552 table=1,priority=0 actions=3
554 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
555 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])
556 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
561 AT_SETUP([ofproto-dpif - load and move order])
563 ADD_OF_PORTS([br0], [1], [10], [11])
564 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'])
565 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)'])
566 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])
567 AT_CHECK([tail -2 stdout], [0],
568 [Megaflow: recirc_id=0,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no
569 Datapath actions: set(ipv4(src=255.255.255.255)),10,set(ipv4(src=192.168.0.1)),11
574 dnl Tests that 1.5 copy-field can copy into the standardized xregs.
575 AT_SETUP([ofproto-dpif - copy-field into extended registers])
577 ADD_OF_PORTS([br0], [1], [2], [3])
578 AT_DATA([flows.txt], [dnl
579 table=0 actions=move:OXM_OF_ETH_SRC[[0..47]]->OXM_OF_PKT_REG0[[0..47]],goto_table(1)
580 table=1,xreg0=0x0000505400000005 actions=2
582 # These low-priority rules shouldn't match. They're here only to make really
583 # sure that the test fails if either of the above rules fails to match.
584 table=0,priority=0 actions=3
585 table=1,priority=0 actions=3
587 AT_CHECK([ovs-ofctl -O OpenFlow15 add-flows br0 flows.txt])
588 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])
589 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
594 dnl Tests that 1.5 set-field with mask in the metadata register.
595 AT_SETUP([ofproto-dpif - masked set-field into metadata])
597 ADD_OF_PORTS([br0], [1], [2], [3])
598 AT_DATA([flows.txt], [dnl
599 table=0 actions=set_field:0xfafafafa5a5a5a5a->metadata,goto_table(1)
600 table=1 actions=set_field:0x6b/0xff->metadata,goto_table(2)
601 table=2,metadata=0xfafafafa5a5a5a6b actions=2
603 # These low-priority rules shouldn't match. They're here only to make really
604 # sure that the test fails if either of the above rules fails to match.
605 table=0,priority=0 actions=3
606 table=1,priority=0 actions=3
607 table=2,priority=0 actions=3
609 AT_CHECK([ovs-ofctl -O OpenFlow15 add-flows br0 flows.txt])
610 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])
611 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2
617 AT_SETUP([ofproto-dpif - actset_output])
620 [br0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13])
621 AT_DATA([flows.txt], [dnl
622 table=0,actset_output=unset actions=write_actions(output(2)),goto_table(1)
623 table=1 actions=move:ONFOXM_ET_ACTSET_OUTPUT[[0..31]]->OXM_OF_PKT_REG0[[0..31]],goto_table(2)
625 # Verify that actset_output got set.
626 table=2,priority=20,actset_output=2 actions=4,goto_table(3)
627 table=2,priority=10 actions=5,goto_table(3)
629 # Verify that xreg0 got copied properly from actset_output.
630 table=3,priority=20,xreg0=2 actions=6,goto_table(4)
631 table=3,priority=10 actions=7,goto_table(4)
633 # Verify that adding a group action unsets actset_output.
634 table=4 actions=write_actions(group(5)),goto_table(5)
635 table=5,priority=20,actset_output=unset actions=8,goto_table(6)
636 table=5,priority=10 actions=9,goto_table(6)
638 # Verify that adding another output action doesn't change actset_output
639 # (since there's still a group).
640 table=6 actions=write_actions(output(3)),goto_table(7)
641 table=7,priority=20,actset_output=unset actions=10,goto_table(8)
642 table=7,priority=10 actions=11,goto_table(8)
644 # Verify that clearing the action set, then writing an output action,
645 # causes actset_output to be set again.
646 table=8,actions=clear_actions,write_actions(output(3),output(2)),goto_table(9)
647 table=9,priority=20,actset_output=2 actions=12
648 table=9,priority=10 actions=13
650 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows.txt])
651 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])
652 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 4,6,8,10,12,2
656 AT_SETUP([ofproto-dpif - push-pop])
658 ADD_OF_PORTS([br0], [20], [21], [22], [33], [90])
659 AT_DATA([flows.txt], [dnl
660 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
661 in_port=2 actions=pop:NXM_NX_REG0[[0..7]],output:NXM_NX_REG0[[]]
662 in_port=3 actions=pop:NXM_NX_REG1[[0..7]],output:NXM_NX_REG1[[]]
663 in_port=4 actions=pop:NXM_NX_REG2[[0..15]],output:NXM_NX_REG2[[]]
664 in_port=5 actions=pop:NXM_NX_REG3[[]],output:NXM_NX_REG3[[]]
667 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
668 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])
669 AT_CHECK([tail -1 stdout], [0],
670 [Datapath actions: 33,22,21,20
675 AT_SETUP([ofproto-dpif - output])
677 ADD_OF_PORTS([br0], [1], [9], [10], [11], [55], [66], [77], [88])
678 AT_DATA([flows.txt], [dnl
679 in_port=1 actions=resubmit:2,resubmit:3,resubmit:4,resubmit:5,resubmit:6,resubmit:7,resubmit:8
680 in_port=2 actions=output:9
681 in_port=3 actions=load:55->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]],load:66->NXM_NX_REG1[[]]
682 in_port=4 actions=output:10,output:NXM_NX_REG0[[]],output:NXM_NX_REG1[[]],output:11
683 in_port=5 actions=load:77->NXM_NX_REG0[[0..15]],load:88->NXM_NX_REG0[[16..31]]
684 in_port=6 actions=output:NXM_NX_REG0[[0..15]],output:NXM_NX_REG0[[16..31]]
685 in_port=7 actions=load:0x110000ff->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]]
686 in_port=8 actions=1,9,load:9->NXM_OF_IN_PORT[[]],1,9
688 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
689 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])
690 AT_CHECK([tail -1 stdout], [0],
691 [Datapath actions: 9,55,10,55,66,11,77,88,9,1
696 AT_SETUP([ofproto-dpif - dec_ttl])
698 ADD_OF_PORTS([br0], [1], [2], [3], [4])
699 AT_DATA([flows.txt], [dnl
700 table=0 in_port=1 action=dec_ttl,output:2,resubmit(1,1),output:4
701 table=1 in_port=1 action=dec_ttl,output:3
703 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
704 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])
705 AT_CHECK([tail -4 stdout], [0],
706 [Megaflow: recirc_id=0,ip,in_port=1,nw_ttl=2,nw_frag=no
707 Datapath actions: set(ipv4(ttl=1)),2,4
708 This flow is handled by the userspace slow path because it:
709 - Sends "packet-in" messages to the OpenFlow controller.
711 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])
712 AT_CHECK([tail -2 stdout], [0],
713 [Megaflow: recirc_id=0,ip,in_port=1,nw_ttl=3,nw_frag=no
714 Datapath actions: set(ipv4(ttl=2)),2,set(ipv4(ttl=1)),3,4
716 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])
717 AT_CHECK([tail -2 stdout], [0],
718 [Megaflow: recirc_id=0,ipv6,in_port=1,nw_ttl=128,nw_frag=no
719 Datapath actions: set(ipv6(hlimit=127)),2,set(ipv6(hlimit=126)),3,4
722 AT_CAPTURE_FILE([ofctl_monitor.log])
723 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
724 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])
725 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
726 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
727 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=34 in_port=1 (via invalid_ttl) data_len=34 (unbuffered)
728 ip,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=111,nw_tos=0,nw_ecn=0,nw_ttl=1
733 dnl A dec_ttl action at offset 32 in ofpacts will cause the ofpacts
734 dnl buffer to be resized just before pushing the id of the dec_ttl action.
735 dnl Thus the implementation must account for this by using the
736 dnl reallocated buffer rather than the original buffer.
738 dnl A number of similar rules are added to try and exercise
739 dnl xrealloc sufficiently that it returns a different base pointer
740 AT_SETUP([ofproto-dpif - dec_ttl without arguments at offset 32 in ofpacts])
742 ADD_OF_PORTS([br0], [1])
743 (for i in `seq 0 255`; do
744 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,output:1,dec_ttl,controller\n" $i
746 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
750 dnl A dec_ttl action at offset 32 in ofpacts will cause the ofpacts
751 dnl buffer to be resized just before pushing the id of the dec_ttl action.
752 dnl Thus the implementation must account for this by using the
753 dnl reallocated buffer rather than the original buffer.
755 dnl A number of similar rules are added to try and exercise
756 dnl xrealloc sufficiently that it returns a different base pointer
757 AT_SETUP([ofproto-dpif - dec_ttl with arguments at offset 32 in ofpacts])
759 ADD_OF_PORTS([br0], [1])
760 (for i in `seq 0 255`; do
761 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,output:1,dec_ttl(1),controller\n" $i
763 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
767 dnl A note action at offset 24 in ofpacts will cause the ofpacts
768 dnl buffer to be resized just before pushing the id of the dec_ttl action.
769 dnl Thus the implementation must account for this by using the
770 dnl reallocated buffer rather than the original buffer.
772 dnl A number of similar rules are added to try and exercise
773 dnl xrealloc sufficiently that it returns a different base pointer
774 AT_SETUP([ofproto-dpif - note at offset 24 in ofpacts])
776 ADD_OF_PORTS([br0], [1])
777 (for i in `seq 0 255`; do
778 printf "dl_src=10:11:11:11:11:%02x actions=output:1,output:1,note:ff,controller\n" $i
780 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
784 AT_SETUP([ofproto-dpif - output, OFPP_NONE ingress port])
786 ADD_OF_PORTS([br0], [1], [2])
788 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
790 # "in_port" defaults to OFPP_NONE if it's not specified.
791 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"
792 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
793 AT_CHECK([tail -1 stdout | sed 's/Datapath actions: //' | tr "," "\n" | sort -n], [0], [dnl
802 AT_SETUP([ofproto-dpif - DSCP])
803 OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy])
804 ADD_OF_PORTS([br0], [9])
805 AT_DATA([flows.txt], [dnl
806 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
808 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
809 AT_CHECK([ovs-vsctl -- \
810 set Port p1 qos=@newqos --\
811 --id=@newqos create QoS type=linux-htb queues=1=@q1,2=@q2 --\
812 --id=@q1 create Queue dscp=1 --\
813 --id=@q2 create Queue dscp=2], [0], [ignore])
814 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])
815 AT_CHECK([tail -2 stdout], [0],
816 [Megaflow: recirc_id=0,skb_priority=0,ip,in_port=9,nw_tos=252,nw_frag=no
817 Datapath actions: dnl
819 set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl
820 set(ipv4(tos=0x8/0xfc)),set(skb_priority(0x2)),1,dnl
822 set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl
823 set(ipv4(tos=0xfc/0xfc)),set(skb_priority(0)),1,dnl
824 set(ipv4(tos=0/0xfc)),1,100
829 AT_SETUP([ofproto-dpif - output/flood flags])
831 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [7])
833 AT_DATA([flows.txt], [dnl
834 in_port=local actions=local,flood
835 in_port=1 actions=flood
836 in_port=2 actions=all
837 in_port=3 actions=output:LOCAL,output:1,output:2,output:3,output:4,output:5,output:6,output:7
838 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
840 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
841 AT_CHECK([ovs-ofctl mod-port br0 5 noforward])
842 AT_CHECK([ovs-ofctl mod-port br0 6 noflood])
844 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])
845 AT_CHECK([tail -1 stdout \
846 | sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
854 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])
855 AT_CHECK([tail -1 stdout \
856 | sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
864 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])
865 AT_CHECK([tail -1 stdout \
866 | sed -e 's/Datapath actions: //' | tr ',' '\n' | sort], [0], [dnl
875 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])
876 AT_CHECK([tail -1 stdout], [0],
877 [Datapath actions: 100,1,2,4,6,7
880 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])
881 AT_CHECK([tail -1 stdout], [0],
882 [Datapath actions: set(skb_priority(0x1)),100,1,2,set(skb_priority(0x2)),3,set(skb_priority(0x1)),6,7
887 AT_SETUP([ofproto-dpif - Default Table Miss - OF1.0 (OFPTC_TABLE_MISS_CONTROLLER)])
888 OVS_VSWITCHD_START([dnl
889 add-port br0 p1 -- set Interface p1 type=dummy
891 ON_EXIT([kill `cat ovs-ofctl.pid`])
893 AT_CAPTURE_FILE([ofctl_monitor.log])
895 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
898 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)'
900 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
901 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
902 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
903 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
904 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=syn tcp_csum:0
906 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
907 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=syn tcp_csum:0
909 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
910 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=syn tcp_csum:0
913 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
914 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
921 AT_SETUP([ofproto-dpif - Default Table Miss - OF1.3 (OFPTC_TABLE_MISS_DROP)])
922 OVS_VSWITCHD_START([dnl
923 add-port br0 p1 -- set Interface p1 type=dummy
925 ON_EXIT([kill `cat ovs-ofctl.pid`])
927 AT_CAPTURE_FILE([ofctl_monitor.log])
928 AT_CHECK([ovs-ofctl del-flows br0])
930 AT_CHECK([ovs-ofctl monitor -OOpenFlow13 -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
932 dnl Test that missed packets are droped
934 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)'
936 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
938 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
941 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
942 AT_CHECK([ovs-ofctl -OOpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
943 OFPST_FLOW reply (OF1.3):
949 AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_CONTROLLER])
950 OVS_VSWITCHD_START([dnl
951 add-port br0 p1 -- set Interface p1 type=dummy
953 ON_EXIT([kill `cat ovs-ofctl.pid`])
955 AT_CAPTURE_FILE([ofctl_monitor.log])
956 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=goto_table(1)'])
958 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
961 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)'
963 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
964 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
965 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
966 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
967 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0
969 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
970 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0
972 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
973 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0
976 AT_CHECK([ovs-appctl revalidator/purge], [0])
977 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
978 n_packets=3, n_bytes=180, actions=goto_table:1
979 OFPST_FLOW reply (OF1.2):
985 AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_CONTROLLER])
986 OVS_VSWITCHD_START([dnl
987 add-port br0 p1 -- set Interface p1 type=dummy
989 ON_EXIT([kill `cat ovs-ofctl.pid`])
991 AT_CAPTURE_FILE([ofctl_monitor.log])
992 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=resubmit(1,1)'])
994 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
997 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)'
1000 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1001 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1004 AT_CHECK([ovs-appctl revalidator/purge], [0])
1005 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1006 n_packets=3, n_bytes=180, actions=resubmit(1,1)
1007 OFPST_FLOW reply (OF1.2):
1013 AT_SETUP([ofproto-dpif - Table Miss - OFPTC_TABLE_MISS_CONTINUE])
1014 OVS_VSWITCHD_START([dnl
1015 add-port br0 p1 -- set Interface p1 type=dummy
1017 ON_EXIT([kill `cat ovs-ofctl.pid`])
1019 AT_CAPTURE_FILE([ofctl_monitor.log])
1020 AT_CHECK([ovs-ofctl add-flow br0 'table=1 dl_src=10:11:11:11:11:11 actions=controller'])
1021 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1023 dnl Miss table 0, Hit table 1
1024 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1027 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)'
1029 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1030 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1032 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1033 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1034 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1043 dnl Hit table 0, Miss all other tables, sent to controller
1044 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1047 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)'
1049 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1050 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1052 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1053 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1054 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1063 AT_CHECK([ovs-appctl revalidator/purge], [0])
1064 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1065 table=1, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1066 OFPST_FLOW reply (OF1.2):
1072 AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_CONTINUE])
1073 OVS_VSWITCHD_START([dnl
1074 add-port br0 p1 -- set Interface p1 type=dummy
1076 ON_EXIT([kill `cat ovs-ofctl.pid`])
1078 AT_CAPTURE_FILE([ofctl_monitor.log])
1079 AT_DATA([flows.txt], [dnl
1080 table=0 actions=goto_table(1)
1081 table=2 dl_src=10:11:11:11:11:11 actions=controller
1083 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flows br0 flows.txt])
1084 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1086 dnl Hit table 0, Miss table 1, Hit table 2
1087 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1090 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)'
1092 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1093 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1095 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1096 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1097 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1106 dnl Hit table 1, Miss all other tables, sent to controller
1107 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1110 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)'
1112 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1113 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1115 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1116 NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1117 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1126 AT_CHECK([ovs-appctl revalidator/purge], [0])
1127 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1128 n_packets=6, n_bytes=360, actions=goto_table:1
1129 table=2, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1130 OFPST_FLOW reply (OF1.2):
1136 AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_CONTINUE])
1137 OVS_VSWITCHD_START([dnl
1138 add-port br0 p1 -- set Interface p1 type=dummy
1140 ON_EXIT([kill `cat ovs-ofctl.pid`])
1142 AT_CAPTURE_FILE([ofctl_monitor.log])
1143 AT_DATA([flows.txt], [dnl
1144 table=0 actions=resubmit(1,1)
1145 table=2 dl_src=10:11:11:11:11:11 actions=controller
1147 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flows br0 flows.txt])
1148 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all continue])
1150 dnl Hit table 0, Miss table 1, Dropped
1151 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1154 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)'
1156 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1158 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1161 dnl Hit table 1, Dropped
1162 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1165 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)'
1167 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1169 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1172 AT_CHECK([ovs-appctl revalidator/purge], [0])
1173 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1174 n_packets=6, n_bytes=360, actions=resubmit(1,1)
1175 table=2, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1176 OFPST_FLOW reply (OF1.2):
1182 AT_SETUP([ofproto-dpif - Table Miss - OFPTC_TABLE_MISS_DROP])
1183 OVS_VSWITCHD_START([dnl
1184 add-port br0 p1 -- set Interface p1 type=dummy
1186 ON_EXIT([kill `cat ovs-ofctl.pid`])
1188 AT_CAPTURE_FILE([ofctl_monitor.log])
1189 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1191 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1193 dnl Test that missed packets are droped
1195 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)'
1197 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1199 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1202 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1203 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
1210 AT_SETUP([ofproto-dpif - Table Miss - goto table and OFPTC_TABLE_MISS_DROP])
1211 OVS_VSWITCHD_START([dnl
1212 add-port br0 p1 -- set Interface p1 type=dummy
1214 ON_EXIT([kill `cat ovs-ofctl.pid`])
1216 AT_CAPTURE_FILE([ofctl_monitor.log])
1217 AT_CHECK([ovs-ofctl del-flows br0])
1218 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=goto_table(1)'])
1219 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1221 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1223 dnl Test that missed packets are droped
1225 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)'
1227 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1229 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1232 AT_CHECK([ovs-appctl revalidator/purge], [0])
1233 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1234 n_packets=3, n_bytes=180, actions=goto_table:1
1235 OFPST_FLOW reply (OF1.2):
1241 AT_SETUP([ofproto-dpif - Table Miss - resubmit and OFPTC_TABLE_MISS_DROP])
1242 OVS_VSWITCHD_START([dnl
1243 add-port br0 p1 -- set Interface p1 type=dummy
1245 ON_EXIT([kill `cat ovs-ofctl.pid`])
1247 AT_CAPTURE_FILE([ofctl_monitor.log])
1248 AT_CHECK([ovs-ofctl del-flows br0])
1249 AT_CHECK([ovs-ofctl -OOpenFlow12 add-flow br0 'table=0 actions=resubmit(1,1)'])
1250 AT_CHECK([ovs-ofctl -OOpenFlow11 mod-table br0 all drop])
1252 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1254 dnl Test that missed packets are droped
1256 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)'
1258 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1260 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1263 AT_CHECK([ovs-appctl revalidator/purge], [0])
1264 AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
1265 n_packets=3, n_bytes=180, actions=resubmit(1,1)
1266 OFPST_FLOW reply (OF1.2):
1272 AT_SETUP([ofproto-dpif - controller])
1273 OVS_VSWITCHD_START([dnl
1274 add-port br0 p1 -- set Interface p1 type=dummy
1276 ON_EXIT([kill `cat ovs-ofctl.pid`])
1278 AT_CAPTURE_FILE([ofctl_monitor.log])
1279 AT_DATA([flows.txt], [dnl
1280 cookie=0x0 dl_src=10:11:11:11:11:11 actions=controller
1281 cookie=0x1 dl_src=20:22:22:22:22:22 actions=controller,resubmit(80,1)
1282 cookie=0x2 dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,controller
1284 cookie=0x3 table=1 in_port=80 actions=load:1->NXM_NX_REG0[[]],mod_vlan_vid:80,controller,resubmit(81,2)
1285 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)
1286 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)
1287 cookie=0x6 table=4 in_port=83 actions=load:4->NXM_NX_REG3[[]],mod_nw_src:83.83.83.83,controller,resubmit(84,5)
1288 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)
1289 cookie=0x8 table=6 in_port=85 actions=mod_tp_src:85,controller,resubmit(86,7)
1290 cookie=0x9 table=7 in_port=86 actions=mod_tp_dst:86,controller,controller
1291 cookie=0xa dl_src=40:44:44:44:44:41 actions=mod_vlan_vid:99,mod_vlan_pcp:1,controller
1292 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
1294 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1297 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1300 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)'
1302 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1303 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1305 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1306 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1307 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1309 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1310 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1312 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
1313 tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0
1316 dnl Singleton controller action.
1317 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1320 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)'
1322 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1323 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1325 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1326 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1327 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
1329 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1330 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
1332 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1333 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
1336 dnl Modified controller action.
1337 AT_CHECK([ovs-ofctl monitor -P openflow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1340 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)'
1342 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1343 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1345 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1346 OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1347 tcp,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=fin tcp_csum:0
1349 OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1350 tcp,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=fin tcp_csum:0
1352 OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1353 tcp,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=fin tcp_csum:0
1356 dnl Modified VLAN controller action.
1357 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1360 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)'
1362 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1363 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1365 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1366 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1367 ip,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:44:41,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
1369 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1370 ip,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:44:41,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
1372 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1373 ip,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:44:41,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
1377 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1380 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)'
1382 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1383 ovs-appctl -t ovs-ofctl exit
1385 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1386 NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1387 tcp,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
1389 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 in_port=1 reg0=0x1 (via action) data_len=64 (unbuffered)
1390 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
1392 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 in_port=1 reg0=0x1 reg1=0x2 (via action) data_len=64 (unbuffered)
1393 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
1395 NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=64 (unbuffered)
1396 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:0
1398 NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=64 (unbuffered)
1399 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:1a03
1401 NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1402 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=11,tcp_flags=fin tcp_csum:3205
1404 NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1405 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=85,tp_dst=11,tcp_flags=fin tcp_csum:31b8
1407 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1408 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=85,tp_dst=86,tcp_flags=fin tcp_csum:316d
1410 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1411 tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=85,tp_dst=86,tcp_flags=fin tcp_csum:316d
1415 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1418 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'
1420 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1421 ovs-appctl -t ovs-ofctl exit
1423 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1424 NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1425 udp,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
1427 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 in_port=1 reg0=0x1 (via action) data_len=64 (unbuffered)
1428 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
1430 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 in_port=1 reg0=0x1 reg1=0x2 (via action) data_len=64 (unbuffered)
1431 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
1433 NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=64 (unbuffered)
1434 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:1234
1436 NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=64 (unbuffered)
1437 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:2c37
1439 NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1440 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11 udp_csum:4439
1442 NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1443 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=11 udp_csum:43ec
1445 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1446 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 udp_csum:43a1
1448 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
1449 udp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 udp_csum:43a1
1452 dnl Modified ARP controller action.
1453 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1456 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)'
1459 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1460 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1461 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1462 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1463 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
1464 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1465 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
1466 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1467 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=1.1.1.1,arp_tpa=2.2.2.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
1468 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1469 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
1470 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1471 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
1472 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1473 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=1.1.1.1,arp_tpa=2.2.2.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
1474 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1475 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
1476 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1477 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.128.1,arp_tpa=192.168.0.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=00:00:00:00:00:00
1478 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1479 arp,in_port=0,vlan_tci=0x0000,dl_src=80:88:88:88:88:88,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=1.1.1.1,arp_tpa=2.2.2.2,arp_op=2,arp_sha=50:54:00:00:00:05,arp_tha=40:44:44:44:44:41
1482 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1485 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
1488 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'
1491 AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
1492 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18])
1493 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
1494 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1495 NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=98 in_port=1 (via action) data_len=98 (unbuffered)
1496 sctp,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
1498 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=102 in_port=1 reg0=0x1 (via action) data_len=102 (unbuffered)
1499 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
1501 NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=102 in_port=1 reg0=0x1 reg1=0x2 (via action) data_len=102 (unbuffered)
1502 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
1504 NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=102 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=102 (unbuffered)
1505 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
1507 NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=102 in_port=1 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=102 (unbuffered)
1508 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
1510 NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
1511 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=1112,tp_dst=2223 sctp_csum:d9d79157
1513 NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
1514 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=2223 sctp_csum:dd778f5f
1516 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
1517 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 sctp_csum:62051f56
1519 NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=102 in_port=1 tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=102 (unbuffered)
1520 sctp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 sctp_csum:62051f56
1523 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
1524 cookie=0x1, n_packets=3, n_bytes=218, dl_src=20:22:22:22:22:22 actions=CONTROLLER:65535,resubmit(80,1)
1525 cookie=0x2, n_packets=3, n_bytes=180, dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,CONTROLLER:65535
1526 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)
1527 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)
1528 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)
1529 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)
1530 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)
1531 cookie=0x8, table=6, n_packets=3, n_bytes=218, in_port=85 actions=mod_tp_src:85,CONTROLLER:65535,resubmit(86,7)
1532 cookie=0x9, table=7, n_packets=3, n_bytes=218, in_port=86 actions=mod_tp_dst:86,CONTROLLER:65535,CONTROLLER:65535
1533 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
1534 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
1535 n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
1542 AT_SETUP([ofproto-dpif - MPLS handling])
1543 OVS_VSWITCHD_START([dnl
1544 add-port br0 p1 -- set Interface p1 type=dummy
1546 ON_EXIT([kill `cat ovs-ofctl.pid`])
1548 AT_CAPTURE_FILE([ofctl_monitor.log])
1549 AT_DATA([flows.txt], [dnl
1550 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
1551 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
1552 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
1553 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
1554 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
1555 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
1556 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
1557 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
1558 cookie=0xa mpls,dl_src=40:44:44:44:44:49 actions=push_mpls:0x8848,load:10->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
1559 cookie=0xb dl_src=50:55:55:55:55:55 dl_type=0x8847 actions=load:1000->OXM_OF_MPLS_LABEL[[]],controller
1560 cookie=0xd dl_src=60:66:66:66:66:66 actions=pop_mpls:0x0800,controller
1561 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
1563 cookie=0xd dl_src=60:66:66:66:00:01 actions=pop_mpls:0x0800,dec_ttl,controller
1564 cookie=0xd dl_src=60:66:66:66:00:02 actions=pop_mpls:0x0800,load:0xa000001->OXM_OF_IPV4_DST[[]],controller
1565 cookie=0xd dl_src=60:66:66:66:00:03 actions=pop_mpls:0x0800,move:OXM_OF_IPV4_DST[[]]->OXM_OF_IPV4_SRC[[]],controller
1566 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
1567 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
1568 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
1569 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
1571 cookie=0xd dl_src=60:66:66:66:00:08 actions=pop_mpls:0x0806,resubmit(1,1)
1572 cookie=0xd table=1 arp actions=controller
1574 cookie=0xdeadbeef table=2 dl_src=60:66:66:66:00:09 actions=pop_mpls:0x0800,mod_nw_tos:48
1575 cookie=0xd dl_src=60:66:66:66:00:09 actions=resubmit(,2),controller
1576 cookie=0xd dl_src=60:66:66:66:00:0a actions=pop_mpls:0x0800,mod_nw_dst:10.0.0.1,controller
1577 cookie=0xd dl_src=60:66:66:66:00:0b actions=pop_mpls:0x0800,mod_nw_src:10.0.0.1,controller
1579 cookie=0xd dl_src=60:66:66:66:01:00 actions=pop_mpls:0x8848,controller
1580 cookie=0xd dl_src=60:66:66:66:01:01 actions=pop_mpls:0x8847,dec_mpls_ttl,controller
1581 cookie=0xd dl_src=60:66:66:66:01:02 actions=pop_mpls:0x8848,load:3->OXM_OF_MPLS_TC[[]],controller
1583 cookie=0xd dl_src=60:66:66:66:02:00 actions=pop_mpls:0x8847,pop_mpls:0x0800,controller
1584 cookie=0xe dl_src=60:66:66:66:02:01 actions=pop_mpls:0x8848,pop_mpls:0x0800,dec_ttl,controller
1585 cookie=0xe dl_src=60:66:66:66:02:10 actions=pop_mpls:0x8847,dec_mpls_ttl,pop_mpls:0x0800,dec_ttl,controller
1587 cookie=0xe dl_src=60:66:66:66:03:00 actions=pop_mpls:0x8848,pop_mpls:0x8848,controller
1588 cookie=0xe dl_src=60:66:66:66:03:01 actions=pop_mpls:0x8847,pop_mpls:0x8847,dec_mpls_ttl,controller
1589 cookie=0xe dl_src=60:66:66:66:03:10 actions=pop_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8848,dec_mpls_ttl,controller
1591 cookie=0xf dl_src=60:66:66:66:04:00 actions=pop_mpls:0x0800,push_mpls:0x8847,controller
1592 cookie=0xf dl_src=60:66:66:66:04:01 actions=pop_mpls:0x0800,push_mpls:0x8848,dec_mpls_ttl,controller
1593 cookie=0xf dl_src=60:66:66:66:04:10 actions=pop_mpls:0x0800,dec_ttl,push_mpls:0x8848,dec_mpls_ttl,controller
1595 cookie=0x5 dl_src=60:66:66:66:05:00 actions=push_mpls:0x8848,pop_mpls:0x8847,controller
1596 cookie=0x5 dl_src=60:66:66:66:05:01 actions=push_mpls:0x8847,pop_mpls:0x8848,dec_mpls_ttl,controller
1597 cookie=0x5 dl_src=60:66:66:66:05:10 actions=push_mpls:0x8848,dec_mpls_ttl,pop_mpls:0x8847,dec_mpls_ttl,controller
1599 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
1601 dnl Modified MPLS controller action.
1602 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1605 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)'
1607 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1608 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1610 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1611 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1612 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
1614 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1615 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
1617 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1618 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
1621 dnl Modified MPLS controller action.
1622 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1625 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)'
1627 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1628 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1630 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1631 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1632 ip,in_port=0,vlan_tci=0x0000,dl_src=41:44:44:44:44:42,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
1634 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1635 ip,in_port=0,vlan_tci=0x0000,dl_src=41:44:44:44:44:42,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
1637 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1638 ip,in_port=0,vlan_tci=0x0000,dl_src=41:44:44:44:44:42,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=16,nw_tos=0,nw_ecn=0,nw_ttl=64
1641 dnl Modified MPLS controller action.
1642 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1644 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)
1647 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)'
1649 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1650 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1652 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1653 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1654 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:43,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=46912
1656 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1657 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:43,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=46912
1659 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1660 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:43,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=46912
1663 dnl Modified MPLS controller action.
1664 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1667 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))'
1669 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1670 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1672 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1673 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1674 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=7,dl_src=40:44:44:44:44:44,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
1676 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1677 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=7,dl_src=40:44:44:44:44:44,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
1679 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1680 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=7,dl_src=40:44:44:44:44:44,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
1683 dnl Modified MPLS controller action.
1684 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1687 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)'
1689 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1690 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1692 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1693 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1694 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:45,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=63,mpls_bos=1
1696 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1697 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:45,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=63,mpls_bos=1
1699 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1700 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:45,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=63,mpls_bos=1
1703 dnl Modified MPLS controller action.
1704 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1707 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)'
1709 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1710 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1712 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1713 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1714 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:46,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
1716 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1717 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:46,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
1719 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1720 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:46,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
1723 dnl Modified MPLS controller action.
1724 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1727 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)'
1729 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1730 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1732 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1733 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1734 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:47,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
1736 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1737 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:47,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
1739 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1740 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:47,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=10,mpls_bos=1
1743 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1745 dnl Modified MPLS controller action.
1746 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1749 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)'
1751 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1752 ovs-appctl -t ovs-ofctl exit
1754 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1755 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1756 mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:49,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=42816
1758 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1759 mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:49,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=42816
1761 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1762 mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:49,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=0,mpls_lse1=42816
1765 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1767 dnl Modified MPLS controller action.
1768 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1771 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)'
1773 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1774 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1776 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1777 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1778 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:48,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=9,mpls_bos=1
1780 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1781 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:48,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=9,mpls_bos=1
1783 NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1784 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:44:48,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=9,mpls_bos=1
1787 dnl Modified MPLS actions.
1788 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1791 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)'
1793 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1794 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1796 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1797 NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1798 mpls,in_port=0,vlan_tci=0x0000,dl_src=50:55:55:55:55:55,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=64,mpls_bos=1
1800 NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1801 mpls,in_port=0,vlan_tci=0x0000,dl_src=50:55:55:55:55:55,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=64,mpls_bos=1
1803 NXT_PACKET_IN (xid=0x0): cookie=0xb total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
1804 mpls,in_port=0,vlan_tci=0x0000,dl_src=50:55:55:55:55:55,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=64,mpls_bos=1
1807 dnl Modified MPLS ipv6 controller action.
1808 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1811 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)'
1813 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1814 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1816 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1817 NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1818 mplsm,in_port=0,vlan_tci=0x0000,dl_src=70:77:77:77:77:77,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=128,mpls_bos=1
1820 NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1821 mplsm,in_port=0,vlan_tci=0x0000,dl_src=70:77:77:77:77:77,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=128,mpls_bos=1
1823 NXT_PACKET_IN (xid=0x0): cookie=0xc total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
1824 mplsm,in_port=0,vlan_tci=0x0000,dl_src=70:77:77:77:77:77,dl_dst=50:54:00:00:00:07,mpls_label=1000,mpls_tc=7,mpls_ttl=128,mpls_bos=1
1828 dnl Modified MPLS pop action.
1829 dnl The input is a frame with two MPLS headers which tcpdump -vve shows as:
1830 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)
1831 dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44)
1833 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1836 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'
1839 # 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)'
1841 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1842 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1844 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
1845 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1846 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:66:66,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1848 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1849 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:66:66,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1851 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1852 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:66:66,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1855 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1857 dnl Modified MPLS pop action.
1858 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1859 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)
1860 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1861 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1862 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1865 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'
1867 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1868 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1870 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1871 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1872 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1874 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1875 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1877 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1878 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
1881 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1883 dnl Modified MPLS pop action.
1884 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1885 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)
1886 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1887 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1888 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1891 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'
1893 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1894 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1896 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1897 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1898 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:02,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1900 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1901 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:02,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1903 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1904 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:02,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
1907 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1909 dnl Modified MPLS pop action.
1910 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1911 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)
1912 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1913 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1914 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1917 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'
1919 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1920 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1922 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1923 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1924 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:03,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1926 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1927 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:03,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1929 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1930 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:03,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1933 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1935 dnl Modified MPLS pop action.
1936 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1937 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)
1938 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1939 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1940 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1943 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'
1945 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1946 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1948 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1949 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1950 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:04,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1952 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1953 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:04,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1955 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1956 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:04,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.2,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7743
1959 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1961 dnl Modified MPLS pop action.
1962 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1963 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)
1964 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1965 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1966 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1969 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'
1971 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1972 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
1974 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
1975 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1976 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.106,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:76db
1978 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1979 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.106,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:76db
1981 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
1982 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.106,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:76db
1985 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
1987 dnl Modified MPLS pop action.
1988 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
1989 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)
1990 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
1991 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
1992 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
1995 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'
1997 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
1998 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2000 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2001 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2002 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:06,dl_dst=50:54:00:00:00:07,nw_src=192.168.255.255,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7745
2004 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2005 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:06,dl_dst=50:54:00:00:00:07,nw_src=192.168.255.255,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7745
2007 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2008 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:06,dl_dst=50:54:00:00:00:07,nw_src=192.168.255.255,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7745
2011 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2013 dnl Modified MPLS pop action.
2014 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2015 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)
2016 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2017 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2018 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2021 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'
2023 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2024 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2026 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2027 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2028 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:07,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2030 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2031 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:07,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2033 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2034 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:07,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2037 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2039 dnl Modified MPLS pop action.
2040 dnl The input is an ARP frame with a single MPLS label stack entry which tcpdump -vve shows as:
2041 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)
2042 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2045 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'
2047 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2048 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2050 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2051 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0xd total_len=56 in_port=1 (via action) data_len=56 (unbuffered)
2052 arp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=255.255.255.255,arp_op=2,arp_sha=60:66:66:66:00:08,arp_tha=ff:ff:ff:ff:ff:ff
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,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=255.255.255.255,arp_op=2,arp_sha=60:66:66:66:00:08,arp_tha=ff:ff:ff:ff:ff:ff
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,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=192.168.0.1,arp_tpa=255.255.255.255,arp_op=2,arp_sha=60:66:66:66:00:08,arp_tha=ff:ff:ff:ff:ff:ff
2061 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2063 dnl Modified MPLS pop action.
2064 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2065 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)
2066 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2067 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2068 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2071 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'
2073 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2074 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2076 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2077 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2078 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:09,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=48,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2080 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2081 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:09,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=48,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2083 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2084 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:09,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=48,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2087 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2089 dnl Modified MPLS pop action.
2090 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2091 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)
2092 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2093 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2094 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2097 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'
2099 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2100 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2102 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2103 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2104 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0a,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
2106 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2107 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0a,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
2109 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2110 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0a,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2dee
2113 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2115 dnl Modified MPLS pop action.
2116 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2117 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)
2118 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2119 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2120 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2123 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'
2125 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2126 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2128 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2129 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2130 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0b,dl_dst=50:54:00:00:00:07,nw_src=10.0.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2ded
2132 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2133 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0b,dl_dst=50:54:00:00:00:07,nw_src=10.0.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2ded
2135 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2136 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:0b,dl_dst=50:54:00:00:00:07,nw_src=10.0.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:2ded
2139 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2141 dnl Modified MPLS pop action.
2142 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2143 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)
2144 dnl (label 20, exp 0, [S], ttl 31)
2145 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2146 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2147 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2150 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'
2152 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2153 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2155 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2156 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2157 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2159 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2160 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2162 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2163 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2166 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2168 dnl Modified MPLS pop action.
2169 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2170 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)
2171 dnl (label 20, exp 0, [S], ttl 31)
2172 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2173 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2174 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2177 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'
2179 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2180 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2182 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2183 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2184 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
2186 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2187 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
2189 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2190 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
2193 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2195 dnl Modified MPLS pop action.
2196 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2197 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)
2198 dnl (label 20, exp 0, [S], ttl 31)
2199 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2200 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2201 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2204 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'
2206 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2207 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2209 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2210 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2211 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:02,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=3,mpls_ttl=31,mpls_bos=1
2213 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2214 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:02,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=3,mpls_ttl=31,mpls_bos=1
2216 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2217 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:01:02,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=3,mpls_ttl=31,mpls_bos=1
2220 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2222 dnl Modified MPLS pop action.
2223 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2224 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)
2225 dnl (label 20, exp 0, [S], ttl 31)
2226 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2227 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2228 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2231 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'
2233 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2234 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2236 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2237 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2238 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:00,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2240 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2241 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:00,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2243 NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2244 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:00,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2247 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2249 dnl Modified MPLS pop action.
2250 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2251 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)
2252 dnl (label 20, exp 0, [S], ttl 31)
2253 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2254 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2255 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2258 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'
2261 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2262 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2264 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2265 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2266 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2268 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2269 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2271 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2272 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:01,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2275 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2277 dnl Modified MPLS pop action.
2278 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
2279 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)
2280 dnl (label 20, exp 0, [S], ttl 31)
2281 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2282 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2283 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2286 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'
2288 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2289 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2291 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2292 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2293 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:10,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2295 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2296 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:10,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2298 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2299 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:02:10,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2302 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2304 dnl Modified MPLS pop action.
2305 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2306 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)
2307 dnl (label 20, exp 0, ttl 31)
2308 dnl (label 20, exp 0, [S], ttl 30)
2309 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2310 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2311 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2314 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'
2316 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2317 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2319 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2320 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2321 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
2323 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2324 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
2326 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2327 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=30,mpls_bos=1
2330 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2332 dnl Modified MPLS pop action.
2333 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2334 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)
2335 dnl (label 20, exp 0, ttl 31)
2336 dnl (label 20, exp 0, [S], ttl 30)
2337 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2338 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2339 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2342 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'
2344 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2345 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2347 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2348 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2349 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
2351 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2352 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
2354 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2355 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
2358 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2360 dnl Modified MPLS pop action.
2361 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
2362 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)
2363 dnl (label 20, exp 0, ttl 31)
2364 dnl (label 20, exp 0, [S], ttl 30)
2365 dnl (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
2366 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
2367 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2370 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'
2372 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2373 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2375 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2376 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2377 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
2379 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2380 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
2382 NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2383 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:03:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=29,mpls_bos=1
2386 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2388 dnl Modified MPLS pop action.
2389 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2390 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)
2391 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2392 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2393 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2396 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'
2398 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2399 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2401 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2402 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2403 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=255,mpls_bos=1
2405 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2406 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=255,mpls_bos=1
2408 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2409 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=255,mpls_bos=1
2412 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2414 dnl Modified MPLS pop action.
2415 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2416 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)
2417 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2418 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2419 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2422 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'
2424 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2425 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2427 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2428 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2429 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:01,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=254,mpls_bos=1
2431 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2432 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:01,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=254,mpls_bos=1
2434 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2435 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:01,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=254,mpls_bos=1
2438 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2440 dnl Modified MPLS pop action.
2441 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2442 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)
2443 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2444 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2445 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2448 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'
2450 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2451 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2453 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2454 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2455 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:10,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=253,mpls_bos=1
2457 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2458 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:10,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=253,mpls_bos=1
2460 NXT_PACKET_IN (xid=0x0): cookie=0xf total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2461 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:04:10,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=253,mpls_bos=1
2464 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2466 dnl Modified MPLS pop action.
2467 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2468 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)
2469 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2470 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2471 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2474 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'
2477 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2478 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2480 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2481 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2482 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=1
2484 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2485 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=1
2487 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2488 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:00,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=1
2491 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2493 dnl Modified MPLS pop action.
2494 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2495 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)
2496 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2497 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2498 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2501 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'
2503 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2504 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2506 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2507 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2508 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2510 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2511 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2513 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2514 mplsm,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:01,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2517 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2519 dnl Modified MPLS pop action.
2520 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2521 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)
2522 dnl (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2523 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2524 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2527 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'
2530 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2531 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2533 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2534 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2535 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2537 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2538 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2540 NXT_PACKET_IN (xid=0x0): cookie=0x5 total_len=62 in_port=1 (via action) data_len=62 (unbuffered)
2541 mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1
2544 AT_CHECK([ovs-appctl revalidator/purge], [0])
2545 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
2546 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
2547 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
2548 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
2549 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
2550 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
2551 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
2552 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
2553 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
2554 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
2555 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
2556 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
2557 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
2558 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
2559 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
2560 cookie=0xd, n_packets=3, n_bytes=180, dl_src=60:66:66:66:00:08 actions=pop_mpls:0x0806,resubmit(1,1)
2561 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:01 actions=pop_mpls:0x0800,dec_ttl,CONTROLLER:65535
2562 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
2563 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
2564 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
2565 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
2566 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
2567 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
2568 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:00:09 actions=resubmit(,2),CONTROLLER:65535
2569 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
2570 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
2571 cookie=0xd, n_packets=3, n_bytes=186, dl_src=60:66:66:66:66:66 actions=pop_mpls:0x0800,CONTROLLER:65535
2572 cookie=0xd, n_packets=3, n_bytes=198, dl_src=60:66:66:66:01:00 actions=pop_mpls:0x8848,CONTROLLER:65535
2573 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
2574 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
2575 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
2576 cookie=0xd, table=1, n_packets=3, n_bytes=168, arp actions=CONTROLLER:65535
2577 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
2578 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
2579 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
2580 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
2581 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
2582 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
2583 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
2584 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
2585 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
2592 AT_SETUP([ofproto-dpif - MPLS handling with goto_table])
2593 OVS_VSWITCHD_START([dnl
2594 add-port br0 p1 -- set Interface p1 type=dummy
2596 ON_EXIT([kill `cat ovs-ofctl.pid`])
2598 AT_CAPTURE_FILE([ofctl_monitor.log])
2599 AT_DATA([flows.txt], [dnl
2600 table=0 mplsm actions=pop_mpls:0x800,goto_table(1)
2601 table=1 ip,ip_dscp=8 actions=controller
2603 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
2606 dnl Modified MPLS pop action.
2607 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2608 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)
2609 dnl (tos 0x20, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2610 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2611 AT_CHECK([ovs-ofctl -O OpenFlow12 monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2614 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'
2616 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2617 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2619 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2620 OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2621 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
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,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
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,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2630 AT_CHECK([ovs-appctl revalidator/purge], [0])
2631 AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2632 n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,goto_table:1
2633 table=1, n_packets=3, n_bytes=174, ip,nw_tos=32 actions=CONTROLLER:65535
2634 OFPST_FLOW reply (OF1.2):
2640 AT_SETUP([ofproto-dpif - MPLS handling with write_actions])
2641 OVS_VSWITCHD_START([dnl
2642 add-port br0 p1 -- set Interface p1 type=dummy
2644 ON_EXIT([kill `cat ovs-ofctl.pid`])
2646 dnl N.B: The first (and only) action that accesses L3 data after the
2647 dnl pop_mpls action is present in write_actions. This exercises recirculation
2648 dnl triggered in write_actions due to a previous action not in write actions.
2649 AT_CAPTURE_FILE([ofctl_monitor.log])
2650 AT_DATA([flows.txt], [dnl
2651 mplsm actions=pop_mpls:0x800,write_actions(dec_ttl,controller)
2653 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
2655 dnl Modified MPLS pop action.
2656 dnl The input is a frame with a single MPLS label stack entry which tcpdump -vve shows as:
2657 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)
2658 dnl (tos 0x20, ttl 255, id 0, offset 0, flags [none], proto TCP (6), length 44)
2659 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x77ec (correct), seq 42:46, win 10000, length 4
2660 AT_CHECK([ovs-ofctl -O OpenFlow12 monitor br0 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
2663 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'
2665 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2666 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
2668 AT_CHECK([STRIP_METADATA ofctl_monitor.log], [0], [dnl
2669 OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2670 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2672 OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2673 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2675 OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered)
2676 tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744
2679 AT_CHECK([ovs-appctl revalidator/purge], [0])
2680 AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2681 n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,write_actions(dec_ttl,CONTROLLER:65535)
2682 OFPST_FLOW reply (OF1.2):
2688 AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.0)])
2689 OVS_VSWITCHD_START([dnl
2690 add-port br0 p1 -- set Interface p1 type=dummy
2692 ON_EXIT([kill `cat ovs-ofctl.pid`])
2694 AT_CAPTURE_FILE([ofctl_monitor.log])
2695 # A table-miss flow has priority 0 and no match
2696 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2698 dnl Singleton controller action.
2699 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow10 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2702 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)'
2704 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2705 ovs-appctl -t ovs-ofctl exit
2707 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2708 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2709 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2711 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2712 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2714 OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2715 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2718 AT_CHECK([ovs-appctl revalidator/purge], [0])
2719 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2720 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2728 AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.3)])
2729 OVS_VSWITCHD_START([dnl
2730 add-port br0 p1 -- set Interface p1 type=dummy
2732 ON_EXIT([kill `cat ovs-ofctl.pid`])
2734 AT_CAPTURE_FILE([ofctl_monitor.log])
2735 # A table-miss flow has priority 0 and no match
2736 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2738 dnl Singleton controller action.
2739 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2742 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)'
2744 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2745 ovs-appctl -t ovs-ofctl exit
2747 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2749 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2750 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2751 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2760 AT_CHECK([ovs-appctl revalidator/purge], [0])
2761 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2762 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2763 OFPST_FLOW reply (OF1.3):
2769 AT_SETUP([ofproto-dpif - table-miss flow with async config (OpenFlow 1.3)])
2770 OVS_VSWITCHD_START([dnl
2771 add-port br0 p1 -- set Interface p1 type=dummy
2773 ON_EXIT([kill `cat ovs-ofctl.pid`])
2775 ovs-appctl time/stop
2777 AT_CAPTURE_FILE([ofctl_monitor.log])
2778 # A table-miss flow has priority 0 and no match
2779 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2781 dnl Singleton controller action.
2782 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2784 # Become slave (OF 1.3), which should disable everything except port status.
2785 ovs-appctl -t ovs-ofctl ofctl/send 041800180000000200000003000000000000000000000001
2787 # Ensure that ovs-vswitchd gets a chance to reply before sending another command.
2788 ovs-appctl time/warp 500 100
2790 # Use OF 1.3 OFPT_SET_ASYNC to enable OFPR_NO_MATCH for slave only.
2791 ovs-appctl -t ovs-ofctl ofctl/send 041c002000000002000000000000000100000000000000000000000000000000
2793 ovs-appctl time/warp 500 100
2795 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)'
2797 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2798 ovs-appctl -t ovs-ofctl exit
2800 AT_CHECK([ovs-appctl revalidator/purge], [0])
2801 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2802 send: OFPT_ROLE_REQUEST (OF1.3) (xid=0x2): role=slave generation_id=1
2803 OFPT_ROLE_REPLY (OF1.3) (xid=0x2): role=slave generation_id=1
2805 send: OFPT_SET_ASYNC (OF1.3) (xid=0x2):
2816 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2817 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2826 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2828 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2829 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2830 OFPST_FLOW reply (OF1.3):
2837 AT_SETUP([ofproto-dpif - table-miss flow (OpenFlow 1.4)])
2838 OVS_VSWITCHD_START([dnl
2839 add-port br0 p1 -- set Interface p1 type=dummy
2841 ON_EXIT([kill `cat ovs-ofctl.pid`])
2843 AT_CAPTURE_FILE([ofctl_monitor.log])
2844 # A table-miss flow has priority 0 and no match
2845 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-flow br0 'priority=0 actions=output:CONTROLLER'])
2847 dnl Singleton controller action.
2848 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow14 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2851 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)'
2853 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2854 ovs-appctl -t ovs-ofctl exit
2856 AT_CHECK([ovs-appctl revalidator/purge], [0])
2857 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2858 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered)
2859 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
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,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2868 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2870 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2871 n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535
2872 OFPST_FLOW reply (OF1.4):
2879 AT_SETUP([ofproto-dpif - packet-in reasons (Openflow 1.3)])
2880 OVS_VSWITCHD_START([dnl
2881 add-port br0 p1 -- set Interface p1 type=dummy
2883 ON_EXIT([kill `cat ovs-ofctl.pid`])
2885 AT_CAPTURE_FILE([ofctl_monitor.log])
2886 AT_DATA([flows.txt], [dnl
2887 table=0 in_port=1 actions=write_actions(output(CONTROLLER)),goto_table(1)
2888 table=1 actions=output(CONTROLLER),goto_table(2)
2889 table=2 actions=group:1234
2891 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:CONTROLLER'])
2892 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 add-flows br0 flows.txt])
2894 dnl Singleton controller action.
2895 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow13 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2898 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)'
2900 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2901 ovs-appctl -t ovs-ofctl exit
2903 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2905 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2906 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2907 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2909 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2910 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2912 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2913 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2915 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2916 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2918 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2919 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2921 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2922 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2924 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2925 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2927 OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2928 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2930 OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2931 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2934 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2936 AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
2937 n_packets=3, n_bytes=180, in_port=1 actions=write_actions(CONTROLLER:65535),goto_table:1
2938 table=1, n_packets=3, n_bytes=180, actions=CONTROLLER:65535,goto_table:2
2939 table=2, n_packets=3, n_bytes=180, actions=group:1234
2940 OFPST_FLOW reply (OF1.3):
2947 AT_SETUP([ofproto-dpif - packet-in reasons (Openflow 1.4)])
2948 OVS_VSWITCHD_START([dnl
2949 add-port br0 p1 -- set Interface p1 type=dummy
2951 ON_EXIT([kill `cat ovs-ofctl.pid`])
2953 AT_CAPTURE_FILE([ofctl_monitor.log])
2954 AT_DATA([flows.txt], [dnl
2955 table=0 in_port=1 actions=write_actions(output(CONTROLLER)),goto_table(1)
2956 table=1 actions=output(CONTROLLER),goto_table(2)
2957 table=2 actions=group:1234
2959 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-group br0 'group_id=1234,type=all,bucket=output:10,bucket=output:CONTROLLER'])
2960 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 add-flows br0 flows.txt])
2962 dnl Singleton controller action.
2963 AT_CHECK([ovs-ofctl monitor -P openflow10 --protocols=OpenFlow14 br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
2966 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)'
2968 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
2969 ovs-appctl -t ovs-ofctl exit
2971 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
2973 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
2974 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2975 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2977 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via group) data_len=60 (unbuffered)
2978 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2980 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action_set) data_len=60 (unbuffered)
2981 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2983 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2984 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2986 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via group) data_len=60 (unbuffered)
2987 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2989 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action_set) data_len=60 (unbuffered)
2990 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2992 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
2993 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2995 OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=2 cookie=0x0 total_len=60 in_port=1 (via group) data_len=60 (unbuffered)
2996 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
2998 OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action_set) data_len=60 (unbuffered)
2999 tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0
3002 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
3004 AT_CHECK([ovs-ofctl --protocols=OpenFlow14 dump-flows br0 | ofctl_strip | sort], [0], [dnl
3005 n_packets=3, n_bytes=180, in_port=1 actions=write_actions(CONTROLLER:65535),goto_table:1
3006 table=1, n_packets=3, n_bytes=180, actions=CONTROLLER:65535,goto_table:2
3007 table=2, n_packets=3, n_bytes=180, actions=group:1234
3008 OFPST_FLOW reply (OF1.4):
3015 AT_SETUP([ofproto-dpif - ARP modification slow-path])
3017 ADD_OF_PORTS([br0], [1], [2])
3019 ovs-vsctl -- set Interface p2 type=dummy options:pcap=p2.pcap
3020 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'
3022 # Input some packets that should follow the arp modification slow-path.
3024 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)'
3026 AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
3028 # Check the packets that were output.
3029 AT_CHECK([ovs-ofctl parse-pcap p2.pcap], [0], [dnl
3030 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
3031 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
3032 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
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
3044 AT_SETUP([ofproto-dpif - VLAN handling])
3046 [set Bridge br0 fail-mode=standalone -- \
3047 add-port br0 p1 trunks=10,12 -- \
3048 add-port br0 p2 tag=10 -- \
3049 add-port br0 p3 tag=12 \
3050 other-config:priority-tags=true -- \
3051 add-port br0 p4 tag=12 -- \
3052 add-port br0 p5 vlan_mode=native-tagged tag=10 -- \
3053 add-port br0 p6 vlan_mode=native-tagged tag=10 trunks=10,12 -- \
3054 add-port br0 p7 vlan_mode=native-untagged tag=12 -- \
3055 add-port br0 p8 vlan_mode=native-untagged tag=12 trunks=10,12 \
3056 other-config:priority-tags=true -- \
3057 set Interface p1 type=dummy -- \
3058 set Interface p2 type=dummy -- \
3059 set Interface p3 type=dummy -- \
3060 set Interface p4 type=dummy -- \
3061 set Interface p5 type=dummy -- \
3062 set Interface p6 type=dummy -- \
3063 set Interface p7 type=dummy -- \
3064 set Interface p8 type=dummy --])
3066 dnl Each of these specifies an in_port by number, a VLAN VID (or "none"),
3067 dnl a VLAN PCP (used if the VID isn't "none") and the expected set of datapath
3073 "100 10 0 1,5,6,7,8,pop_vlan,2" \
3074 "100 10 1 1,5,6,7,8,pop_vlan,2" \
3077 "100 12 0 1,5,6,pop_vlan,3,4,7,8" \
3078 "100 12 1 1,5,6,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3082 "1 10 0 5,6,7,8,100,pop_vlan,2" \
3083 "1 10 1 5,6,7,8,100,pop_vlan,2" \
3086 "1 12 0 5,6,100,pop_vlan,3,4,7,8" \
3087 "1 12 1 5,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3088 "2 none 0 push_vlan(vid=10,pcp=0),1,5,6,7,8,100" \
3089 "2 0 0 pop_vlan,push_vlan(vid=10,pcp=0),1,5,6,7,8,100" \
3090 "2 0 1 pop_vlan,push_vlan(vid=10,pcp=1),1,5,6,7,8,100" \
3097 "3 none 0 4,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3098 "3 0 0 pop_vlan,4,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3099 "3 0 1 8,pop_vlan,4,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
3106 "4 none 0 3,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3107 "4 0 0 pop_vlan,3,7,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3108 "4 0 1 3,8,pop_vlan,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
3115 "5 none 0 2,push_vlan(vid=10,pcp=0),1,6,7,8,100" \
3116 "5 0 0 pop_vlan,2,push_vlan(vid=10,pcp=0),1,6,7,8,100" \
3117 "5 0 1 pop_vlan,2,push_vlan(vid=10,pcp=1),1,6,7,8,100" \
3118 "5 10 0 1,6,7,8,100,pop_vlan,2" \
3119 "5 10 1 1,6,7,8,100,pop_vlan,2" \
3122 "5 12 0 1,6,100,pop_vlan,3,4,7,8" \
3123 "5 12 1 1,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3124 "6 none 0 2,push_vlan(vid=10,pcp=0),1,5,7,8,100" \
3125 "6 0 0 pop_vlan,2,push_vlan(vid=10,pcp=0),1,5,7,8,100" \
3126 "6 0 1 pop_vlan,2,push_vlan(vid=10,pcp=1),1,5,7,8,100" \
3127 "6 10 0 1,5,7,8,100,pop_vlan,2" \
3128 "6 10 1 1,5,7,8,100,pop_vlan,2" \
3131 "6 12 0 1,5,100,pop_vlan,3,4,7,8" \
3132 "6 12 1 1,5,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3,8" \
3133 "7 none 0 3,4,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3134 "7 0 0 pop_vlan,3,4,8,push_vlan(vid=12,pcp=0),1,5,6,100" \
3135 "7 0 1 3,8,pop_vlan,4,push_vlan(vid=12,pcp=1),1,5,6,100" \
3136 "7 10 0 1,5,6,8,100,pop_vlan,2" \
3137 "7 10 1 1,5,6,8,100,pop_vlan,2" \
3140 "7 12 0 1,5,6,100,pop_vlan,3,4,8" \
3141 "7 12 1 1,5,6,100,pop_vlan,4,push_vlan(vid=0,pcp=1),3,8" \
3142 "8 none 0 3,4,7,push_vlan(vid=12,pcp=0),1,5,6,100" \
3143 "8 0 0 pop_vlan,3,4,7,push_vlan(vid=12,pcp=0),1,5,6,100" \
3144 "8 0 1 3,pop_vlan,4,7,push_vlan(vid=12,pcp=1),1,5,6,100" \
3145 "8 10 0 1,5,6,7,100,pop_vlan,2" \
3146 "8 10 1 1,5,6,7,100,pop_vlan,2" \
3149 "8 12 0 1,5,6,100,pop_vlan,3,4,7" \
3150 "8 12 1 1,5,6,100,pop_vlan,4,7,push_vlan(vid=0,pcp=1),3"
3158 if test $vlan = none; then
3159 flow="in_port($in_port),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff),eth_type(0xabcd)"
3161 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))"
3164 echo "----------------------------------------------------------------------"
3165 echo "in_port=$in_port vlan=$vlan pcp=$pcp"
3167 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3168 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
3170 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
3172 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
3178 AT_SETUP([ofproto-dpif - MPLS handling])
3179 OVS_VSWITCHD_START([dnl
3180 add-port br0 p1 -- set Interface p1 type=dummy
3182 ON_EXIT([kill `cat ovs-ofctl.pid`])
3184 AT_CAPTURE_FILE([ofctl_monitor.log])
3185 AT_DATA([flows.txt], [dnl
3186 dl_src=40:44:44:44:00:00 actions=push_mpls:0x8847,controller
3187 dl_src=40:44:44:44:00:01,mpls actions=push_mpls:0x8847,controller
3188 dl_src=40:44:44:44:00:02,mpls actions=push_mpls:0x8848,controller
3190 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt])
3192 dnl In this test, we push an MPLS tag to an ethernet packet.
3193 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3196 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)'
3198 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3199 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3201 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3202 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3203 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3204 00000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
3205 00000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
3206 00000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
3207 00000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
3209 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3210 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3211 00000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
3212 00000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
3213 00000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
3214 00000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
3216 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3217 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3218 00000000 50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
3219 00000010 01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
3220 00000020 00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
3221 00000030 00 00 50 00 00 00 00 00-00 00 00 00 00 00 00 00
3224 dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
3225 dnl copied exactly, except for the BOS bit.
3226 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3229 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)'
3231 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3232 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3234 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3235 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3236 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:01,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
3237 00000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
3238 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3239 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3240 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3242 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3243 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:01,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
3244 00000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
3245 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3246 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3247 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3249 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3250 mpls,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:01,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
3251 00000000 50 54 00 00 00 07 40 44-44 44 00 01 88 47 00 00
3252 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3253 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3254 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3257 dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
3258 dnl copied exactly, except for the BOS bit. The ethertype should be updated
3259 dnl to the MPLS ethertype of the MPLS push action which differs to that
3260 dnl of the input packet.
3261 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3264 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)'
3266 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3267 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
3269 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3270 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3271 mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:02,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
3272 00000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
3273 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3274 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3275 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3277 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3278 mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:02,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
3279 00000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
3280 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3281 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3282 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3284 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3285 mplsm,in_port=0,vlan_tci=0x0000,dl_src=40:44:44:44:00:02,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=41280
3286 00000000 50 54 00 00 00 07 40 44-44 44 00 02 88 48 00 00
3287 00000010 a0 40 00 00 a1 40 00 00-00 00 00 00 00 00 00 00
3288 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3289 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
3295 AT_SETUP([ofproto-dpif - VLAN+MPLS handling])
3296 OVS_VSWITCHD_START([dnl
3297 add-port br0 p1 -- set Interface p1 type=dummy
3299 ON_EXIT([kill `cat ovs-ofctl.pid`])
3301 AT_CAPTURE_FILE([ofctl_monitor.log])
3302 AT_DATA([flows.txt], [dnl
3303 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
3304 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
3305 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
3306 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
3307 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
3308 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
3309 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
3310 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
3311 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
3312 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
3314 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt])
3316 dnl Modified MPLS controller action.
3317 dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see
3318 dnl both of these in the final flow
3319 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3322 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)'
3324 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3325 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3327 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3328 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3329 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3330 00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
3331 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3332 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3333 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3334 00000040 00 00 00 00
3336 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3337 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3338 00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
3339 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3340 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3341 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3342 00000040 00 00 00 00
3344 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3345 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3346 00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
3347 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3348 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3349 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3350 00000040 00 00 00 00
3353 dnl Modified MPLS controller action.
3354 dnl In this test, the input packet in vlan-tagged, which should be stripped
3355 dnl before we push the MPLS and VLAN tags.
3356 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3359 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))'
3361 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3362 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3364 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3365 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3366 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3367 00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
3368 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3369 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3370 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3372 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3373 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3374 00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
3375 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3376 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3377 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3379 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3380 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3381 00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
3382 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3383 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3384 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3387 dnl Modified MPLS controller action.
3388 dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see
3389 dnl both of these in the final flow
3390 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3393 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)'
3395 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3396 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3398 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3399 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3400 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3401 00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
3402 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3403 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3404 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3405 00000040 00 00 00 00
3407 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3408 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3409 00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
3410 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3411 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3412 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3413 00000040 00 00 00 00
3415 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3416 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3417 00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
3418 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3419 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3420 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3421 00000040 00 00 00 00
3424 dnl Modified MPLS controller action.
3425 dnl In this test, the input packet in vlan-tagged, which should be stripped
3426 dnl before we push the MPLS and VLAN tags.
3427 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3430 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))'
3432 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3433 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3435 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3436 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3437 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3438 00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
3439 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3440 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3441 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3443 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3444 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3445 00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
3446 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3447 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3448 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3450 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3451 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3452 00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
3453 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3454 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3455 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3458 dnl Modified MPLS controller action.
3459 dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these
3460 dnl actions are reordered, so we see both of these in the final flow.
3461 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3464 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)'
3466 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3467 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3469 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3470 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3471 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3472 00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
3473 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3474 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3475 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3476 00000040 00 00 00 00
3478 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3479 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3480 00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
3481 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3482 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3483 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3484 00000040 00 00 00 00
3486 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3487 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3488 00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
3489 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3490 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3491 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3492 00000040 00 00 00 00
3495 dnl Modified MPLS controller action.
3496 dnl In this test, the input packet in vlan-tagged, which should be stripped
3497 dnl before we push the MPLS and VLAN tags.
3498 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3501 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))'
3503 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3504 OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
3506 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3507 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3508 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3509 00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
3510 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3511 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3512 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3514 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3515 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3516 00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
3517 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3518 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3519 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3521 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3522 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3523 00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
3524 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3525 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3526 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3529 dnl Modified MPLS controller action.
3530 dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these
3531 dnl actions are reordered, so we see both of these in the final flow.
3532 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3535 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)'
3537 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3538 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3540 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3541 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3542 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3543 00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
3544 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3545 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3546 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3547 00000040 00 00 00 00
3549 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3550 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3551 00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
3552 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3553 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3554 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3555 00000040 00 00 00 00
3557 OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered)
3558 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3559 00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
3560 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3561 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3562 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3563 00000040 00 00 00 00
3566 dnl Modified MPLS controller action.
3567 dnl In this test, the input packet in vlan-tagged, which should be stripped
3568 dnl before we push the MPLS and VLAN tags.
3569 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 -m 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log])
3572 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))'
3574 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3575 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3577 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3578 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3579 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3580 00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
3581 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3582 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3583 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3585 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3586 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3587 00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
3588 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3589 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3590 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3592 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3593 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3594 00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
3595 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3596 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3597 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3600 dnl Modified MPLS controller action.
3601 dnl In this test, the input packet in vlan-tagged, which should be stripped
3602 dnl before we push the MPLS and VLAN tags.
3603 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3606 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))'
3608 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3609 OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
3611 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3612 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3613 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3614 00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
3615 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3616 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3617 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3619 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3620 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3621 00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
3622 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3623 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3624 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3626 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3627 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3628 00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
3629 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3630 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3631 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3634 dnl Modified MPLS controller action.
3635 dnl In this test, the input packet in vlan-tagged, which should be modified
3636 dnl before we push MPLS and VLAN tags.
3637 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log])
3640 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))'
3642 OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN ofctl_monitor.log | wc -l` -ge 3])
3643 ovs-appctl -t ovs-ofctl exit
3645 AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl
3646 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3647 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3648 00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
3649 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3650 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3651 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3653 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3654 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3655 00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
3656 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3657 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3658 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3660 OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered)
3661 mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
3662 00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
3663 00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
3664 00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
3665 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00
3668 AT_CHECK([ovs-appctl revalidator/purge], [0])
3669 AT_CHECK([ovs-ofctl --protocols=OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl
3670 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
3671 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
3672 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
3673 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
3674 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
3675 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
3676 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
3677 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
3678 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
3679 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
3680 OFPST_FLOW reply (OF1.2):
3686 AT_SETUP([ofproto-dpif - fragment handling - trace])
3688 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3689 AT_DATA([flows.txt], [dnl
3690 priority=75 tcp ip_frag=no tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:1
3691 priority=75 tcp ip_frag=first tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:2
3692 priority=50 tcp ip_frag=no actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:4
3693 priority=50 tcp ip_frag=first actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:5
3694 priority=50 tcp ip_frag=later actions=output:6
3696 AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
3698 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"
3699 no_flow="$base_flow,frag=no),tcp(src=12345,dst=80)"
3700 first_flow="$base_flow,frag=first),tcp(src=12345,dst=80)"
3701 later_flow="$base_flow,frag=later)"
3703 # mode no first later
3706 'drop 1 drop drop' \
3715 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3716 for type in no first later; do
3717 eval flow=\$${type}_flow exp_output=\$$type
3718 printf "\n%s\n" "----$mode $type-----"
3719 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3721 if test $mode = drop && test $type != no; then
3722 echo 'Packets dropped because they are IP fragments and the fragment handling mode is "drop".' >> expout
3723 echo "Datapath actions: $exp_output" >> expout
3724 elif test $type = later; then
3725 echo "Datapath actions: $exp_output" >> expout
3727 echo "Datapath actions: set(tcp(src=80,dst=80)),$exp_output" >> expout
3729 AT_CHECK([grep 'IP fragments' stdout; tail -1 stdout], [0], [expout])
3735 AT_SETUP([ofproto-dpif - fragment handling - upcall])
3737 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3738 AT_DATA([flows.txt], [dnl
3739 priority=75 tcp ip_frag=no tp_dst=80 actions=set_field:81->tcp_dst,output:1
3740 priority=75 tcp ip_frag=first tp_dst=80 actions=set_field:81->tcp_dst,output:2
3741 priority=50 tcp ip_frag=no actions=set_field:81->tcp_dst,output:4
3742 priority=50 tcp ip_frag=first actions=set_field:81->tcp_dst,output:5
3743 priority=50 tcp ip_frag=later actions=output:6
3745 AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
3747 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"
3748 no_flow="$base_flow,frag=no),tcp(src=12345,dst=80)"
3749 first_flow="$base_flow,frag=first),tcp(src=12345,dst=80)"
3750 later_flow="$base_flow,frag=later)"
3752 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
3756 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3757 for type in no first later; do
3758 eval flow=\$${type}_flow
3759 printf "\n%s\n" "----$mode $type-----"
3761 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3764 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3765 flow-dump from non-dpdk interfaces:
3766 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
3767 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
3768 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, bytes:0, used:never, actions:6
3773 AT_CHECK([ovs-appctl revalidator/purge], [0])
3774 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3775 for type in no first later; do
3776 eval flow=\$${type}_flow
3777 printf "\n%s\n" "----$mode $type-----"
3779 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3782 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3783 flow-dump from non-dpdk interfaces:
3784 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
3785 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=first), packets:0, bytes:0, used:never, actions:drop
3786 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=later), packets:0, bytes:0, used:never, actions:drop
3791 AT_CHECK([ovs-appctl revalidator/purge], [0])
3792 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3793 for type in no first later; do
3794 eval flow=\$${type}_flow
3795 printf "\n%s\n" "----$mode $type-----"
3797 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "$flow"], [0], [stdout])
3800 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [dnl
3801 flow-dump from non-dpdk interfaces:
3802 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
3803 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
3804 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, bytes:0, used:never, actions:6
3810 AT_SETUP([ofproto-dpif - fragment handling - actions])
3812 ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
3814 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])
3815 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3816 source field tcp_dst lacks correct prerequisites
3817 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3820 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])
3821 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3822 destination field tcp_src lacks correct prerequisites
3823 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3826 AT_CHECK([ovs-ofctl add-flow br0 "udp,ip_frag=later actions=set_field:8888->udp_src,output:1"], [1], [], [stderr])
3827 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3828 set_field udp_src lacks correct prerequisities
3829 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3832 AT_CHECK([ovs-ofctl add-flow br0 "udp,ip_frag=later actions=load:8888->NXM_OF_UDP_DST[[]],output:1"], [1], [], [stderr])
3833 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3834 set_field udp_dst lacks correct prerequisities
3835 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3838 AT_CHECK([ovs-ofctl add-flow br0 "sctp,ip_frag=later actions=set_field:8888->sctp_src,output:1"], [1], [], [stderr])
3839 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3840 set_field sctp_src lacks correct prerequisities
3841 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3844 AT_CHECK([ovs-ofctl add-flow br0 "sctp,ip_frag=later actions=set_field:8888->sctp_dst,output:1"], [1], [], [stderr])
3845 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3846 set_field sctp_dst lacks correct prerequisities
3847 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3850 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])
3851 AT_CHECK([tail -2 stderr | sed 's/^.*|WARN|//'], [0], [dnl
3852 source field tcp_dst lacks correct prerequisites
3853 ovs-ofctl: actions are invalid with specified match (OFPBAC_MATCH_INCONSISTENT)
3856 AT_DATA([flows.txt], [dnl
3857 priority=75 tcp actions=load:42->OXM_OF_TCP_SRC[[0..7]],output:1
3859 AT_CHECK([ovs-ofctl -O OpenFlow12 replace-flows br0 flows.txt])
3861 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
3865 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3866 for frag in 4000 6000 6008 4010; do
3867 printf "\n%s\n" "----$mode $frag-----"
3869 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"])
3872 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3873 flow-dump from non-dpdk interfaces:
3874 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
3875 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
3876 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:74, used:0.001s, actions:1
3879 AT_CHECK([ovs-appctl revalidator/purge], [0])
3880 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3881 for frag in 4000 6000 6008 4010; do
3882 printf "\n%s\n" "----$mode $frag truncated transport header -----"
3884 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 0018 2e24 $frag 40 06 465d ac11370d ac11370b 828b 0016"])
3887 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3888 flow-dump from non-dpdk interfaces:
3889 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
3890 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
3891 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1
3894 AT_CHECK([ovs-appctl revalidator/purge], [0])
3895 AT_CHECK([ovs-ofctl set-frags br0 $mode])
3896 for frag in 4000 6000 6001 4002; do
3897 printf "\n%s\n" "----$mode $frag missing transport header-----"
3899 AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9 0800 4500 0014 2e24 $frag 40 06 465d ac11370d ac11370b"])
3902 AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
3903 flow-dump from non-dpdk interfaces:
3904 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
3905 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
3906 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1
3912 AT_SETUP([ofproto-dpif - exit])
3914 ADD_OF_PORTS([br0], [1], [2], [3], [10], [11], [12], [13], [14])
3915 AT_DATA([flows.txt], [dnl
3916 in_port=1 actions=output:10,exit,output:11
3917 in_port=2 actions=output:12,resubmit:1,output:12
3918 in_port=3 actions=output:13,resubmit:2,output:14
3920 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3921 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])
3922 AT_CHECK([tail -1 stdout], [0],
3923 [Datapath actions: 10
3925 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])
3926 AT_CHECK([tail -1 stdout], [0],
3927 [Datapath actions: 12,10
3929 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])
3930 AT_CHECK([tail -1 stdout], [0],
3931 [Datapath actions: 13,12,10
3937 AT_SETUP([ofproto-dpif - mirroring, select_all])
3939 ADD_OF_PORTS([br0], 1, 2, 3)
3941 set Bridge br0 mirrors=@m --\
3942 --id=@p3 get Port p3 --\
3943 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
3945 AT_DATA([flows.txt], [dnl
3946 in_port=1 actions=output:2
3947 in_port=2 actions=output:1
3949 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3951 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)"
3952 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3953 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3954 [Datapath actions: 2,3
3957 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)"
3958 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3959 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3960 [Datapath actions: 1,3
3967 AT_SETUP([ofproto-dpif - mirroring, select_src])
3969 ADD_OF_PORTS([br0], 1, 2, 3)
3971 set Bridge br0 mirrors=@m --\
3972 --id=@p1 get Port p1 -- --id=@p3 get Port p3 --\
3973 --id=@m create Mirror name=mymirror select_src_port=@p1 output_port=@p3
3975 AT_DATA([flows.txt], [dnl
3976 in_port=1 actions=output:2
3977 in_port=2 actions=output:1
3979 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
3981 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)"
3982 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3983 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3984 [Datapath actions: 2,3
3987 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)"
3988 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
3989 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
3990 [Datapath actions: 1
3995 AT_SETUP([ofproto-dpif - mirroring, OFPP_NONE ingress port])
3997 ADD_OF_PORTS([br0], 1, 2)
3999 set Bridge br0 mirrors=@m --\
4000 --id=@p2 get Port p2 --\
4001 --id=@m create Mirror name=mymirror select_all=true output_port=@p2
4003 AT_CHECK([ovs-ofctl add-flow br0 action=output:1])
4005 # "in_port" defaults to OFPP_NONE if it's not specified.
4006 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"
4007 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
4008 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4009 [Datapath actions: 1,2
4016 AT_SETUP([ofproto-dpif - mirroring, select_dst])
4018 ADD_OF_PORTS([br0], 1, 2, 3)
4020 set Bridge br0 mirrors=@m --\
4021 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
4022 --id=@m create Mirror name=mymirror select_dst_port=@p2 output_port=@p3
4024 AT_DATA([flows.txt], [dnl
4025 in_port=1 actions=output:2
4026 in_port=2 actions=output:1
4028 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4030 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)"
4031 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4032 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4033 [Datapath actions: 2,3
4036 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)"
4037 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4038 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4039 [Datapath actions: 1
4046 AT_SETUP([ofproto-dpif - mirroring, select_vlan])
4048 ADD_OF_PORTS([br0], 1, 2, 3)
4050 set Bridge br0 mirrors=@m --\
4051 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
4052 --id=@m create Mirror name=mymirror select_all=true select_vlan=11 output_port=@p3
4054 AT_DATA([flows.txt], [dnl
4055 in_port=1, actions=output:2
4057 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4059 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)"
4060 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4061 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4062 [Datapath actions: 2
4065 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))"
4066 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4067 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4068 [Datapath actions: 2
4071 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))"
4072 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4073 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4074 [Datapath actions: 2,3
4081 AT_SETUP([ofproto-dpif - mirroring, output_port])
4083 ADD_OF_PORTS([br0], 1, 2, 3)
4085 set Bridge br0 mirrors=@m --\
4086 --id=@p3 get Port p3 --\
4087 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
4089 AT_DATA([flows.txt], [dnl
4090 in_port=1 actions=mod_vlan_vid:17,output:2
4091 in_port=2 actions=output:1
4093 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4095 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)"
4096 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4097 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4098 [Datapath actions: push_vlan(vid=17,pcp=0),2,pop_vlan,3
4101 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)"
4102 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4103 AT_CHECK_UNQUOTED([tail -1 stdout], [0],
4104 [Datapath actions: 1,3
4110 AT_SETUP([ofproto-dpif - mirroring, output_vlan])
4112 ADD_OF_PORTS([br0], 1, 2)
4114 set Bridge br0 mirrors=@m --\
4115 --id=@m create Mirror name=mymirror select_all=true output_vlan=12
4117 AT_DATA([flows.txt], [dnl
4118 in_port=1 actions=output:2
4119 in_port=2 actions=mod_vlan_vid:17,output:1
4121 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4123 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)"
4124 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4125 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4127 expected="2,push_vlan(vid=12,pcp=0),1,2,100"
4128 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
4130 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
4132 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)"
4133 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout])
4134 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4136 expected="push_vlan(vid=17,pcp=0),1,pop_vlan,push_vlan(vid=12,pcp=0),1,2,100"
4137 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout])
4139 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout])
4144 # Two testcases below are for the ofproto/trace command
4145 # The first one tests all correct syntax:
4146 # ofproto/trace [dp_name] odp_flow [-generate|packet]
4147 # ofproto/trace br_name br_flow [-generate|packet]
4148 AT_SETUP([ofproto-dpif - ofproto/trace command 1])
4149 OVS_VSWITCHD_START([set bridge br0 fail-mode=standalone])
4150 ADD_OF_PORTS([br0], 1, 2, 3)
4152 AT_DATA([flows.txt], [dnl
4153 in_port=1 actions=output:2
4154 in_port=2 actions=output:1
4156 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4158 odp_flow="in_port(1)"
4160 # Test command: ofproto/trace odp_flow with in_port as a name.
4161 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
4162 AT_CHECK([tail -1 stdout], [0], [dnl
4166 odp_flow="in_port(1)"
4167 # Test command: ofproto/trace odp_flow
4168 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
4169 AT_CHECK([tail -1 stdout], [0], [dnl
4173 # Test command: ofproto/trace dp_name odp_flow
4174 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$odp_flow"], [0], [stdout])
4175 AT_CHECK([tail -1 stdout], [0], [dnl
4178 # Test commmand: ofproto/trace br_name br_flow
4179 AT_CHECK([ovs-appctl ofproto/trace br0 "$br_flow"], [0], [stdout])
4180 AT_CHECK([tail -1 stdout], [0], [dnl
4184 # Delete the inserted flows
4185 AT_CHECK([ovs-ofctl del-flows br0 "in_port=1"], [0], [stdout])
4186 AT_CHECK([ovs-ofctl del-flows br0 "in_port=2"], [0], [stdout])
4188 # This section below tests the [-generate] option
4189 odp_flow="in_port(3),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff)"
4190 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"
4192 # Test command: ofproto/trace odp_flow
4193 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow"], [0], [stdout])
4194 # Check for no MAC learning entry
4195 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4199 # Test command: ofproto/trace br_name br_flow
4200 AT_CHECK([ovs-appctl ofproto/trace br0 "$br_flow"], [0], [stdout])
4201 # Check for no MAC learning entry
4202 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4206 # Test command: ofproto/trace odp_flow -generate
4207 AT_CHECK([ovs-appctl ofproto/trace "$odp_flow" -generate], [0], [stdout])
4208 # Check for the MAC learning entry
4209 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4211 3 0 50:54:00:00:00:05 ?
4214 # Test command: ofproto/trace dp_name odp_flow -generate
4215 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4216 "in_port(1),eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:05)" \
4217 -generate], [0], [stdout])
4218 # Check for both MAC learning entries
4219 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4221 3 0 50:54:00:00:00:05 ?
4222 1 0 50:54:00:00:00:06 ?
4225 # Test command: ofproto/trace br_name br_flow -generate
4226 AT_CHECK([ovs-appctl ofproto/trace br0 \
4227 "in_port=2,dl_src=50:54:00:00:00:07,dl_dst=50:54:00:00:00:06" \
4228 -generate], [0], [stdout])
4229 # Check for both MAC learning entries.
4230 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4232 3 0 50:54:00:00:00:05 ?
4233 1 0 50:54:00:00:00:06 ?
4234 2 0 50:54:00:00:00:07 ?
4237 # This section beflow tests the [packet] option
4238 # The ovs-tcpundump of packets between port1 and port2
4239 pkt1to2="50540000000250540000000108064500001C000100004001F98CC0A80001C0A800020800F7FF00000000"
4240 pkt2to1="50540000000150540000000208064500001C000100004001F98CC0A80002C0A800010800F7FF00000000"
4242 # Construct the MAC learning table
4243 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4244 "in_port(1),eth(src=50:54:00:00:00:01,dst=ff:ff:ff:ff:ff:ff)" \
4245 -generate], [0], [stdout])
4247 # Construct the MAC learning table
4248 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4249 "in_port(2),eth(src=50:54:00:00:00:02,dst=ff:ff:ff:ff:ff:ff)" \
4250 -generate], [0], [stdout])
4252 # Test command: ofproto/trace odp_flow packet
4253 AT_CHECK([ovs-appctl ofproto/trace \
4254 "in_port(1),skb_priority(1),skb_mark(2)" "$pkt1to2"], [0], [stdout])
4255 AT_CHECK([tail -1 stdout], [0], [dnl
4258 AT_CHECK([head -n 2 stdout], [0], [dnl
4260 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
4263 # Test command: ofproto/trace dp_name odp_flow packet
4264 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy \
4265 "in_port(1),skb_priority(1),skb_mark(2)" "$pkt1to2"], [0], [stdout])
4266 AT_CHECK([tail -1 stdout], [0], [dnl
4269 AT_CHECK([head -n 2 stdout], [0], [dnl
4271 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
4274 # Test command: ofproto/trace br_name br_flow packet
4275 AT_CHECK([ovs-appctl ofproto/trace br0 \
4276 "in_port=2,skb_priority=2,pkt_mark=1" "$pkt2to1"], [0], [stdout],[stderr])
4277 AT_CHECK([tail -1 stdout], [0], [dnl
4280 AT_CHECK([head -n 2 stdout], [0], [dnl
4282 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
4288 # The second test tests the corner cases
4289 AT_SETUP([ofproto-dpif - ofproto/trace command 2])
4291 ADD_OF_PORTS([br0], 1, 2)
4294 odp_flow="in_port(1),eth(src=50:54:00:00:00:01,dst=50:54:00:00:00:02)"
4295 br_flow="in_port=1,dl_src=50:54:00:00:00:01,dl_dst=50:54:00:00:00:02"
4297 generate="-generate"
4298 pkt="50540000000250540000000108064500001C000100004001F98CC0A80001C0A800020800F7FF00000000"
4300 # Test incorrect command: ofproto/trace wrong_name odp_flow [-generate|packet]
4306 [AT_CHECK([ovs-appctl ofproto/trace wrong_name "$odp_flow" option],
4308 AT_CHECK([tail -2 stderr], [0], [dnl
4309 Cannot find the datapath
4310 ovs-appctl: ovs-vswitchd: server returned an error
4313 # Test incorrect command: ofproto/trace empty_string odp_flow [-generate|packet]
4319 [AT_CHECK([ovs-appctl ofproto/trace "" "$odp_flow" option],
4321 AT_CHECK([tail -2 stderr], [0], [dnl
4322 Cannot find the datapath
4323 ovs-appctl: ovs-vswitchd: server returned an error
4326 # Test incorrect command: ofproto/trace nonexist_dp_name odp_flow [-generate|packet]
4332 [AT_CHECK([ovs-appctl ofproto/trace ovs-system "$odp_flow" option],
4334 AT_CHECK([tail -2 stderr], [0], [dnl
4335 Cannot find the datapath
4336 ovs-appctl: ovs-vswitchd: server returned an error
4339 # Test incorrect command: ofproto/trace br_name odp_flow [-generate|packet]
4345 [AT_CHECK([ovs-appctl ofproto/trace br0 "$odp_flow" option],
4347 AT_CHECK([tail -2 stderr], [0], [dnl
4348 Cannot find the datapath
4349 ovs-appctl: ovs-vswitchd: server returned an error
4352 # Test incorrect command: ofproto/trace dp_name br_flow [-generate|packet]
4358 [AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$br_flow" option],
4360 AT_CHECK([tail -2 stderr], [0], [dnl
4362 ovs-appctl: ovs-vswitchd: server returned an error
4365 # Test incorrect command: ofproto/trace br_flow [-generate|packet]
4371 [AT_CHECK([ovs-appctl ofproto/trace "$br_flow" option],
4373 AT_CHECK([tail -2 stderr], [0], [dnl
4374 Must specify bridge name
4375 ovs-appctl: ovs-vswitchd: server returned an error
4378 # Test incorrect command: ofproto/trace dp_name odp_flow garbage_option
4379 AT_CHECK([ovs-appctl ofproto/trace \
4380 ovs-dummy "$odp_flow" garbage_option],
4381 [2], [stdout],[stderr])
4382 AT_CHECK([tail -2 stderr], [0], [dnl
4383 Trailing garbage in packet data
4384 ovs-appctl: ovs-vswitchd: server returned an error
4387 # Test incorrect command: ofproto/trace with 4 arguments
4388 AT_CHECK([ovs-appctl ofproto/trace \
4389 arg1, arg2, arg3, arg4], [2], [stdout],[stderr])
4390 AT_CHECK([tail -2 stderr], [0], [dnl
4391 "ofproto/trace" command takes at most 3 arguments
4392 ovs-appctl: ovs-vswitchd: server returned an error
4395 # Test incorrect command: ofproto/trace with 0 argument
4396 AT_CHECK([ovs-appctl ofproto/trace ], [2], [stdout],[stderr])
4397 AT_CHECK([tail -2 stderr], [0], [dnl
4398 "ofproto/trace" command requires at least 1 arguments
4399 ovs-appctl: ovs-vswitchd: server returned an error
4405 AT_SETUP([ofproto-dpif - ofproto/trace-packet-out])
4407 ADD_OF_PORTS([br0], 1, 2, 3)
4409 AT_DATA([flows.txt], [dnl
4410 in_port=1 actions=output:2
4411 in_port=2 actions=output:1
4413 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
4415 AT_CHECK([ovs-appctl ofproto/trace-packet-out br0 in_port=1 'mod_vlan_vid:123,resubmit(,0)'], [0], [stdout])
4416 AT_CHECK([tail -1 stdout], [0], [dnl
4417 Datapath actions: push_vlan(vid=123,pcp=0),2
4424 m4_define([OFPROTO_TRACE],
4426 AT_CHECK([ovs-appctl ofproto/trace $1 "$flow" $3], [0], [stdout])
4427 actual=`tail -1 stdout | sed 's/Datapath actions: //'`
4429 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected" $5],
4432 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual" $5],
4435 AT_SETUP([ofproto-dpif - MAC learning])
4436 OVS_VSWITCHD_START([set bridge br0 fail-mode=standalone])
4437 ADD_OF_PORTS([br0], 1, 2, 3)
4439 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)'
4441 # Trace an ARP packet arriving on p3, to create a MAC learning entry.
4444 [in_port(3),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff),$arp],
4448 # Check for the MAC learning entry.
4449 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4451 3 0 50:54:00:00:00:05 ?
4454 # Trace a packet arrival destined for the learned MAC.
4455 # (This will also learn a MAC.)
4458 [in_port(1),eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:05),$arp],
4462 # Check for both MAC learning entries.
4463 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4465 3 0 50:54:00:00:00:05 ?
4466 1 0 50:54:00:00:00:06 ?
4469 # Trace a packet arrival that updates the first learned MAC entry.
4472 [in_port(2),eth(src=50:54:00:00:00:05,dst=ff:ff:ff:ff:ff:ff),$arp],
4476 # Check that the MAC learning entry was updated.
4477 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4479 1 0 50:54:00:00:00:06 ?
4480 2 0 50:54:00:00:00:05 ?
4483 # Add another bridge.
4487 -- set bridge br1 datapath-type=dummy])
4488 ADD_OF_PORTS([br1], 4, 5)
4490 # Trace some packet arrivals in br1 to create MAC learning entries there too.
4493 [in_port(4),eth(src=50:54:00:00:00:06,dst=ff:ff:ff:ff:ff:ff),$arp],
4498 [in_port(5),eth(src=50:54:00:00:00:07,dst=ff:ff:ff:ff:ff:ff),$arp],
4502 # Check that the MAC learning entries were added.
4503 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br1 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4505 4 0 50:54:00:00:00:06 ?
4506 5 0 50:54:00:00:00:07 ?
4509 # Delete port p1 and see that its MAC learning entry disappeared, and
4510 # that the MAC learning entry for the same MAC was also deleted from br1.
4511 AT_CHECK([ovs-vsctl del-port p1])
4512 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4514 2 0 50:54:00:00:00:05 ?
4516 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br1 | sed 's/[[0-9]]\{1,\}$/?/'], [0], [dnl
4518 5 0 50:54:00:00:00:07 ?
4524 AT_SETUP([ofproto-dpif - MAC table overflow])
4526 [set bridge br0 fail-mode=standalone other-config:mac-table-size=10])
4527 ADD_OF_PORTS([br0], 1, 2, 3)
4529 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)'
4531 AT_CHECK([ovs-appctl time/stop])
4533 # Trace 10 ARP packets arriving on p3, to create MAC learning entries.
4534 for i in 0 1 2 3 4 5 6 7 8 9; do
4537 [in_port(3),eth(src=50:54:00:00:00:0$i,dst=ff:ff:ff:ff:ff:ff),$arp],
4540 ovs-appctl time/warp 1000
4543 # Check for the MAC learning entries.
4544 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4546 3 0 50:54:00:00:00:00
4547 3 0 50:54:00:00:00:01
4548 3 0 50:54:00:00:00:02
4549 3 0 50:54:00:00:00:03
4550 3 0 50:54:00:00:00:04
4551 3 0 50:54:00:00:00:05
4552 3 0 50:54:00:00:00:06
4553 3 0 50:54:00:00:00:07
4554 3 0 50:54:00:00:00:08
4555 3 0 50:54:00:00:00:09
4559 # Trace another ARP packet on another MAC.
4562 [in_port(3),eth(src=50:54:00:00:00:10,dst=ff:ff:ff:ff:ff:ff),$arp],
4566 # Check that the new one chased the oldest one out of the table.
4567 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/' | sort],
4569 3 0 50:54:00:00:00:01 ?
4570 3 0 50:54:00:00:00:02 ?
4571 3 0 50:54:00:00:00:03 ?
4572 3 0 50:54:00:00:00:04 ?
4573 3 0 50:54:00:00:00:05 ?
4574 3 0 50:54:00:00:00:06 ?
4575 3 0 50:54:00:00:00:07 ?
4576 3 0 50:54:00:00:00:08 ?
4577 3 0 50:54:00:00:00:09 ?
4578 3 0 50:54:00:00:00:10 ?
4584 AT_SETUP([ofproto-dpif - MAC table overflow fairness])
4586 [set bridge br0 fail-mode=standalone other-config:mac-table-size=10])
4587 ADD_OF_PORTS([br0], 1, 2, 3, 4, 5, 6)
4589 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)'
4591 AT_CHECK([ovs-appctl time/stop])
4593 # Trace packets with 2 different source MACs arriving on each of the 5
4594 # ports, filling up the 10-entry learning table.
4595 for i in 0 1 2 3 4 5 6 7 8 9; do
4597 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
4598 ovs-appctl time/warp 1000
4601 # Check for the MAC learning entries.
4602 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4604 1 0 50:54:00:00:00:00
4605 1 0 50:54:00:00:00:01
4606 2 0 50:54:00:00:00:02
4607 2 0 50:54:00:00:00:03
4608 3 0 50:54:00:00:00:04
4609 3 0 50:54:00:00:00:05
4610 4 0 50:54:00:00:00:06
4611 4 0 50:54:00:00:00:07
4612 5 0 50:54:00:00:00:08
4613 5 0 50:54:00:00:00:09
4617 # Now trace 16 new MACs on another port.
4618 for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
4619 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
4620 ovs-appctl time/warp 1000
4623 # Check the results.
4625 # Our eviction algorithm on overflow is that an arbitrary (but deterministic)
4626 # one of the ports with the most learned MACs loses the least recently used
4627 # one. Thus, the new port will end up with 3 MACs, 3 of the old ports with 1
4628 # MAC each, and the other 2 of the old ports with 2 MACs each.
4630 # (If someone changes lib/heap.c to do something different with equal-priority
4631 # nodes, then the output below could change, but it would still follow the
4632 # rules explained above.)
4633 AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/ *[[0-9]]\{1,\}$//' | sort],
4635 1 0 50:54:00:00:00:01
4636 2 0 50:54:00:00:00:03
4637 3 0 50:54:00:00:00:04
4638 3 0 50:54:00:00:00:05
4639 4 0 50:54:00:00:00:07
4640 5 0 50:54:00:00:00:08
4641 5 0 50:54:00:00:00:09
4642 6 0 50:54:00:00:0d:ff
4643 6 0 50:54:00:00:0e:ff
4644 6 0 50:54:00:00:0f:ff
4650 # CHECK_SFLOW_SAMPLING_PACKET(LOOPBACK_ADDR, ADDR_WITHOUT_BRACKETS)
4652 # Test that sFlow samples packets correctly using IPv4/IPv6 sFlow collector
4654 # IP_VERSION_TYPE is used in AT_SETUP
4655 m4_define([CHECK_SFLOW_SAMPLING_PACKET],
4656 [AT_SETUP([ofproto-dpif - sFlow packet sampling - $2 collector])
4657 AT_XFAIL_IF([test "$IS_WIN32" = "yes"])
4658 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
4660 ON_EXIT([kill `cat test-sflow.pid`])
4661 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:$1 > sflow.log], [0], [], [ignore])
4662 AT_CAPTURE_FILE([sflow.log])
4663 SFLOW_PORT=`parse_listening_port < test-sflow.log`
4664 ovs-appctl time/stop
4666 ADD_OF_PORTS([br0], 1, 2)
4668 set Interface br0 options:ifindex=1002 -- \
4669 set Interface p1 options:ifindex=1004 -- \
4670 set Interface p2 options:ifindex=1003 -- \
4671 set Bridge br0 sflow=@sf -- \
4672 --id=@sf create sflow targets=\"$1:$SFLOW_PORT\" \
4673 header=128 sampling=1 polling=1 agent=$LOOPBACK_INTERFACE
4675 dnl open with ARP packets to seed the bridge-learning. The output
4676 dnl ifIndex numbers should be reported predictably after that.
4677 dnl Since we set sampling=1 we should see all of these packets
4678 dnl reported. Sorting the output by data-source and seqNo makes
4679 dnl it deterministic. Ensuring that we send at least two packets
4680 dnl into each port means we get to check the seq nos are
4681 dnl incrementing correctly.
4682 dnl because packets from different ports can be handled by separate
4683 dnl threads, put some sleeps
4685 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)'
4687 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)'
4689 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)'
4691 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)'
4692 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)'
4694 dnl sleep long enough to get more than one counter sample
4695 dnl from each datasource so we can check sequence numbers
4696 ovs-appctl time/warp 3000 100
4698 ovs-appctl -t test-sflow exit
4700 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
4721 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
4741 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
4761 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
4781 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
4801 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
4804 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'IFCOUNTERS|ERROR|PORTNAME|OPENFLOWPORT' | head -18 | sed 's/ /\
4818 in_broadcasts=4294967295
4821 in_unknownprotos=4294967295
4824 out_multicasts=4294967295
4825 out_broadcasts=4294967295
4841 in_broadcasts=4294967295
4844 in_unknownprotos=4294967295
4847 out_multicasts=4294967295
4848 out_broadcasts=4294967295
4864 in_broadcasts=4294967295
4867 in_unknownprotos=4294967295
4870 out_multicasts=4294967295
4871 out_broadcasts=4294967295
4887 in_broadcasts=4294967295
4890 in_unknownprotos=4294967295
4893 out_multicasts=4294967295
4894 out_broadcasts=4294967295
4910 in_broadcasts=4294967295
4913 in_unknownprotos=4294967295
4916 out_multicasts=4294967295
4917 out_broadcasts=4294967295
4933 in_broadcasts=4294967295
4936 in_unknownprotos=4294967295
4939 out_multicasts=4294967295
4940 out_broadcasts=4294967295
4945 datapath_id=18364758544493064720
4948 datapath_id=18364758544493064720
4951 datapath_id=18364758544493064720
4954 datapath_id=18364758544493064720
4957 datapath_id=18364758544493064720
4960 datapath_id=18364758544493064720
4977 CHECK_SFLOW_SAMPLING_PACKET([127.0.0.1], [IPv4])
4978 CHECK_SFLOW_SAMPLING_PACKET([[[::1]]], [IPv6])
4980 dnl Test sFlow LAG structures
4981 AT_SETUP([ofproto-dpif - sFlow LACP structures])
4982 AT_SKIP_IF([test "$IS_WIN32" = "yes"])
4983 OVS_VSWITCHD_START([dnl
4984 add-bond br0 bond p1 p2 -- \
4985 set Port bond lacp=active bond-mode=active-backup \
4986 other_config:lacp-time="fast" \
4987 other_config:lacp-system-id=11:22:33:44:55:66 \
4988 other_config:lacp-system-priority=54321 -- \
4989 set Interface p1 type=dummy \
4990 other_config:lacp-port-id=11 \
4991 other_config:lacp-port-priority=111 \
4992 other_config:lacp-aggregation-key=3333 -- \
4993 set Interface p2 type=dummy \
4994 other_config:lacp-port-id=22 \
4995 other_config:lacp-port-priority=222 \
4996 other_config:lacp-aggregation-key=3333 ])
4998 ON_EXIT([kill `cat test-sflow.pid`])
4999 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
5000 AT_CAPTURE_FILE([sflow.log])
5001 SFLOW_PORT=`parse_listening_port < test-sflow.log`
5003 ovs-appctl time/stop
5006 set Interface p1 options:ifindex=1003 -- \
5007 set Bridge br0 sflow=@sf -- \
5008 --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \
5009 header=128 sampling=1 polling=1
5011 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
5012 AT_CHECK([ovs-appctl time/warp 2000 100], [0], [ignore])
5013 AT_CHECK([ovs-appctl revalidator/purge], [0])
5015 ovs-appctl -t test-sflow exit
5016 AT_CHECK([[sort sflow.log | $EGREP 'LACPCOUNTERS|ERROR' | head -n 1 | sed 's/ /\
5019 sysID=11:22:33:44:55:66
5020 partnerID=00:00:00:00:00:00
5027 markerPDUsRx=4294967295
5028 markerRespPDUsRx=4294967295
5029 unknownRx=4294967295
5032 markerPDUsTx=4294967295
5033 markerRespPDUsTx=4294967295
5038 # CHECK_NETFLOW_EXPIRATION(LOOPBACK_ADDR, IP_VERSION_TYPE)
5040 # Test that basic NetFlow reports flow statistics correctly:
5041 # The initial packet of a flow are correctly accounted.
5042 # Later packets within a flow are correctly accounted.
5043 # Flow actions changing (in this case, due to MAC learning)
5044 # cause a record to be sent.
5046 # IP_VERSION_TYPE is used in AT_SETUP
5047 m4_define([CHECK_NETFLOW_EXPIRATION],
5048 [AT_SETUP([ofproto-dpif - NetFlow flow expiration - $2 collector])
5049 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
5050 ADD_OF_PORTS([br0], 1, 2)
5052 ovs-appctl time/stop
5053 ON_EXIT([kill `cat test-netflow.pid`])
5054 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
5055 AT_CAPTURE_FILE([netflow.log])
5056 NETFLOW_PORT=`parse_listening_port < test-netflow.log`
5059 set Bridge br0 netflow=@nf -- \
5060 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
5061 engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
5063 for delay in 1000 30000; do
5064 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)'
5065 sleep 1 # ensure the order in which these two packets are processed
5066 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)'
5068 ovs-appctl time/warp $delay
5071 ovs-appctl time/warp 6000
5072 ovs-appctl revalidator/wait
5074 ovs-appctl -t test-netflow exit
5076 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])
5078 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])
5080 combined=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 2 pkts, 120 bytes, ICMP 0:0" netflow.log | wc -l`
5081 separate=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 1 pkts, 60 bytes, ICMP 0:0" netflow.log | wc -l`
5082 AT_CHECK([test $separate = 2 || test $combined = 1], [0])
5086 CHECK_NETFLOW_EXPIRATION([127.0.0.1], [IPv4])
5087 CHECK_NETFLOW_EXPIRATION([[[::1]]], [IPv6])
5089 # CHECK_NETFLOW_ACTIVE_EXPIRATION(LOOPBACK_ADDR, IP_VERSION_TYPE)
5091 # Test that basic NetFlow reports active expirations correctly.
5093 # IP_VERSION_TYPE is used in AT_SETUP
5094 m4_define([CHECK_NETFLOW_ACTIVE_EXPIRATION],
5095 [AT_SETUP([ofproto-dpif - NetFlow active expiration - $2 collector])
5097 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
5098 ADD_OF_PORTS([br0], 1, 2)
5100 ON_EXIT([kill `cat test-netflow.pid`])
5101 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
5102 AT_CAPTURE_FILE([netflow.log])
5103 NETFLOW_PORT=`parse_listening_port < test-netflow.log`
5106 set Bridge br0 netflow=@nf -- \
5107 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
5108 engine_id=1 engine_type=2 active_timeout=10 add-id-to-interface=false
5110 AT_CHECK([ovs-appctl time/stop])
5112 while test $n -le 60; do
5115 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)'
5116 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)'
5118 ovs-appctl time/warp 1000
5121 ovs-appctl time/warp 10000
5123 ovs-appctl revalidator/wait
5125 ovs-appctl -t test-netflow exit
5127 # Count the number of reported packets:
5128 # - From source to destination before MAC learning kicks in (just one).
5129 # - From source to destination after that.
5130 # - From destination to source.
5138 pkts=`echo "$line" | sed 's/.*, \([[0-9]]*\) pkts,.*/\1/'`
5145 "seq "*": 192.168.0.1 > 192.168.0.2, if 1 > 65535, "*" pkts, "*" bytes, TCP 1234 > 80, time "*)
5148 "seq "*": 192.168.0.1 > 192.168.0.2, if 1 > 2, "*" pkts, "*" bytes, TCP 1234 > 80, time "*)
5151 "seq "*": 192.168.0.2 > 192.168.0.1, if 2 > 1, "*" pkts, "*" bytes, TCP 80 > 1234, time "*)
5158 eval $counter=\`expr \$$counter + \$pkts\`
5159 n_recs=`expr $n_recs + 1`
5162 # There should be exactly 1 MAC learning packet,
5163 # exactly 59 other packets in that direction,
5164 # and exactly 60 packets in the other direction.
5165 AT_CHECK([echo $n_learn $n_in $n_out $n_other], [0], [1 59 60 0
5170 CHECK_NETFLOW_ACTIVE_EXPIRATION([127.0.0.1], [IPv4])
5171 CHECK_NETFLOW_ACTIVE_EXPIRATION([[[::1]]], [IPv6])
5173 AT_SETUP([ofproto-dpif - flow stats])
5175 AT_CHECK([ovs-ofctl add-flow br0 "ip,actions=NORMAL"])
5176 AT_CHECK([ovs-ofctl add-flow br0 "icmp,actions=NORMAL"])
5178 ovs-appctl time/stop
5180 for i in `seq 1 10`; do
5181 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)'
5184 AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
5185 AT_CHECK([ovs-appctl revalidator/purge], [0])
5186 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
5187 AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl
5188 cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL
5189 cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=600, idle_age=1, ip actions=NORMAL
5194 AT_SETUP([ofproto-dpif - flow stats, set-n-threads])
5196 AT_CHECK([ovs-ofctl add-flow br0 "ip,actions=NORMAL"])
5197 AT_CHECK([ovs-ofctl add-flow br0 "icmp,actions=NORMAL"])
5199 ovs-appctl time/stop
5201 for i in `seq 1 10`; do
5202 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)'
5205 ovs-appctl time/warp 100
5206 AT_CHECK([ovs-vsctl set Open_vSwitch . other-config:n-revalidator-threads=2])
5207 ovs-appctl time/warp 1000
5209 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
5210 AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl
5211 cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL
5212 cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=600, idle_age=1, ip actions=NORMAL
5217 AT_SETUP([idle_age and hard_age increase over time])
5220 # get_ages DURATION HARD IDLE
5222 # Fetch the flow duration, hard age, and idle age into the variables
5223 # whose names are given as arguments. Rounds DURATION down to the
5224 # nearest integer. If hard_age doesn't appear in the output, sets
5225 # HARD to "none". If idle_age doesn't appear in the output, sets IDLE
5228 AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
5230 duration=`sed -n 's/.*duration=\([[0-9]]*\)\(\.[[0-9]]*\)\{0,1\}s.*/\1/p' stdout`
5231 AT_CHECK([[expr X"$duration" : 'X[0-9][0-9]*$']], [0], [ignore])
5232 AS_VAR_COPY([$1], [duration])
5234 hard=`sed -n 's/.*hard_age=\([[0-9]]*\),.*/\1/p' stdout`
5235 if test X"$hard" = X; then
5238 AT_CHECK([[expr X"$hard" : 'X[0-9][0-9]*$']], [0], [ignore])
5240 AS_VAR_COPY([$2], [hard])
5242 idle=`sed -n 's/.*idle_age=\([[0-9]]*\),.*/\1/p' stdout`
5243 if test X"$idle" = X; then
5246 AT_CHECK([[expr X"$idle" : 'X[0-9][0-9]*$']], [0], [ignore])
5248 AS_VAR_COPY([$3], [idle])
5251 # Add a flow and get its initial hard and idle age.
5252 AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=199,idle_timeout=188,actions=drop])
5253 get_ages duration1 hard1 idle1
5255 ovs-appctl time/stop
5256 # Warp time forward by 10 seconds, then modify the flow's actions.
5257 ovs-appctl time/warp 10000
5258 get_ages duration2 hard2 idle2
5259 AT_CHECK([ovs-ofctl mod-flows br0 actions=flood])
5261 # Warp time forward by 10 seconds.
5262 ovs-appctl time/warp 10000
5263 get_ages duration3 hard3 idle3
5265 # Warp time forward 10 more seconds, then pass some packets through the flow,
5266 # then warp forward a few more times because idle times are only updated
5268 ovs-appctl time/warp 10000
5269 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)'
5270 ovs-appctl time/warp 3000 1000
5272 get_ages duration4 hard4 idle4
5274 printf "duration: %4s => %4s => %4s => %4s\n" $duration1 $duration2 $duration3 $duration4
5275 printf "hard_age: %4s => %4s => %4s => %4s\n" $hard1 $hard2 $hard3 $hard4
5276 printf "idle_age: %4s => %4s => %4s => %4s\n" $idle1 $idle2 $idle3 $idle4
5278 # Duration should increase steadily over time.
5279 AT_CHECK([test $duration1 -lt $duration2])
5280 AT_CHECK([test $duration2 -lt $duration3])
5281 AT_CHECK([test $duration3 -lt $duration4])
5283 # Hard age should be "none" initially because it's the same as flow_duration,
5284 # then it should increase.
5285 AT_CHECK([test $hard1 = none])
5286 AT_CHECK([test $hard2 = none])
5287 AT_CHECK([test $hard3 != none])
5288 AT_CHECK([test $hard4 != none])
5289 AT_CHECK([test $hard3 -lt $hard4])
5291 # Idle age should increase from 1 to 2 to 3, then decrease.
5292 AT_CHECK([test $idle1 -lt $idle2])
5293 AT_CHECK([test $idle2 -lt $idle3])
5294 AT_CHECK([test $idle3 -gt $idle4])
5296 # Check some invariant relationships.
5297 AT_CHECK([test $duration1 = $idle1])
5298 AT_CHECK([test $duration2 = $idle2])
5299 AT_CHECK([test $duration3 = $idle3])
5300 AT_CHECK([test $idle3 -gt $hard3])
5301 AT_CHECK([test $idle4 -lt $hard4])
5302 AT_CHECK([test $hard4 -lt $duration4])
5307 AT_SETUP([ofproto-dpif - fin_timeout])
5309 ovs-appctl time/stop
5310 AT_CHECK([ovs-ofctl add-flow br0 'idle_timeout=60,actions=fin_timeout(idle_timeout=5)'])
5311 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5313 idle_timeout=60, actions=fin_timeout(idle_timeout=5)
5316 # Check that a TCP SYN packet does not change the timeout. (Because
5317 # flow stats updates are mainly what implements the fin_timeout
5318 # feature, we warp forward a couple of times to ensure that flow stats
5319 # run before re-checking the flow table.)
5320 AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f908004500003c2e2440004006465dac11370dac11370b828b0016751e267b00000000a00216d017360000020405b40402080a2d25085f0000000001030307])
5321 AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped
5324 AT_CHECK([ovs-appctl revalidator/purge], [0])
5325 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5327 n_packets=1, n_bytes=74, idle_timeout=60, actions=fin_timeout(idle_timeout=5)
5329 # Check that a TCP FIN packet does change the timeout.
5330 AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f90800451000342e3e40004006463bac11370dac11370b828b0016751e319dfc96399b801100717ae800000101080a2d250a9408579588])
5331 AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped
5334 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0],
5336 n_packets=2, n_bytes=140, idle_timeout=5, actions=fin_timeout(idle_timeout=5)
5341 AT_SETUP([ofproto-dpif - ovs-appctl dpif/dump-dps])
5342 OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy])
5343 ADD_OF_PORTS([br0], [1], [2])
5344 ADD_OF_PORTS([br1], [3])
5346 AT_CHECK([ovs-appctl dpif/dump-dps], [0], [dnl
5353 AT_SETUP([ofproto-dpif - ovs-appctl dpif/show])
5354 OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy])
5355 ADD_OF_PORTS([br0], [1], [2])
5356 ADD_OF_PORTS([br1], [3])
5358 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
5359 dummy@ovs-dummy: hit:0 missed:0
5361 br0 65534/100: (dummy)
5365 br1 65534/101: (dummy)
5371 AT_SETUP([ofproto-dpif - ovs-appctl dpif/dump-flows])
5372 # bump max-idle to avoid the flows being reclaimed behind us
5373 OVS_VSWITCHD_START([add-br br1 -- \
5374 set bridge br1 datapath-type=dummy fail-mode=secure -- \
5375 set Open_vSwitch . other_config:max-idle=10000])
5376 ADD_OF_PORTS([br0], [1], [2])
5377 ADD_OF_PORTS([br1], [3])
5379 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)'])
5380 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)'])
5381 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)'])
5382 ovs-appctl revalidator/wait
5383 AT_CHECK([ovs-appctl dpif/dump-flows br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5384 recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5385 recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5388 AT_CHECK([ovs-appctl dpif/dump-flows br1 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5389 recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5392 AT_CHECK([ovs-appctl dpif/dump-flows -m br0 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5393 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
5394 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
5397 AT_CHECK([ovs-appctl dpif/dump-flows -m br1 | STRIP_UFID | STRIP_USED | sort], [0], [dnl
5398 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
5404 AT_SETUP([ofproto-dpif - ovs-appctl dpif/get-flow])
5406 OVS_VSWITCHD_START([add-br br1 -- \
5407 set bridge br1 datapath-type=dummy fail-mode=secure -- \
5408 set Open_vSwitch . other_config:max-idle=10000])
5409 ADD_OF_PORTS([br0], [1], [2])
5411 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)'])
5412 ovs-appctl revalidator/wait
5413 AT_CHECK([ovs-appctl dpif/dump-flows -m br0], [0], [stdout])
5415 UFID=`sed -n 's/\(ufid:[[0-9a-fA-F]]*\).*/\1/p' stdout`
5416 AT_CHECK([ovs-appctl dpctl/get-flow $UFID], [0], [dnl
5417 recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:0, bytes:0, used:never, actions:drop
5423 AT_SETUP([ofproto-dpif - MPLS actions that result in a userspace action])
5424 OVS_VSWITCHD_START([dnl
5425 add-port br0 p1 -- set Interface p1 type=dummy
5427 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5428 ON_EXIT([kill `cat ovs-ofctl.pid`])
5430 AT_CAPTURE_FILE([ofctl_monitor.log])
5431 AT_DATA([flows.txt], [dnl
5432 dl_src=60:66:66:66:66:00 actions=push_mpls:0x8847,controller
5433 dl_src=60:66:66:66:66:01 actions=pop_mpls:0x8849,controller
5435 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5437 dnl Packet is sent to userspace because a MPLS push or pop action is applied to
5438 dnl a packet with 2 MPLS LSEs but dpif-netdev can't handle any labels.
5440 dnl The input is a frame with two MPLS labels which tcpdump -vve shows as:
5441 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)
5442 dnl (label 20, exp 0, [S], ttl 32)
5443 dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44, bad cksum 3b78 (->f978)!)
5444 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
5446 for dl_src in 00 01; do
5447 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"])
5449 sleep 1 # wait for the datapath flow installed
5450 AT_CHECK_UNQUOTED([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5451 recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:00,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5452 recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:01,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5459 AT_SETUP([ofproto-dpif - MPLS actions that result in a drop])
5460 OVS_VSWITCHD_START([dnl
5461 add-port br0 p1 -- set Interface p1 type=dummy
5463 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5464 ON_EXIT([kill `cat ovs-ofctl.pid`])
5466 AT_CAPTURE_FILE([ofctl_monitor.log])
5467 AT_DATA([flows.txt], [dnl
5468 dl_src=60:66:66:66:66:00 actions=push_mpls:0x8847,controller
5469 dl_src=60:66:66:66:66:01 actions=pop_mpls:0x8849,controller
5471 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5473 dnl Packet is dropped because an MPLS PUSH action is applied to a packet with
5474 dnl 4 MPLS LSEs but ovs-vswtichd can only handle up to 3 MPLS LSEs and thus
5475 dnl can't determine the resulting MPLS label after MPLS push/pop actions.
5477 dnl The input is a frame with two MPLS headers which tcpdump -vve shows as:
5478 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)
5479 dnl (label 20, exp 0, ttl 32)
5480 dnl (label 20, exp 0, ttl 32)
5481 dnl (label 20, exp 0, [S], ttl 32)
5482 dnl (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto TCP (6), length 44, bad cksum 3b78 (->f978)!)
5483 dnl 192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
5485 for dl_src in 00 01; do
5486 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"])
5488 sleep 1 # wait for the datapath flow installed
5489 AT_CHECK_UNQUOTED([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5490 recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:00,mpls_label=20,mpls_tc=0,mpls_ttl=32,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5491 recirc_id=0,mpls,in_port=1,dl_src=60:66:66:66:66:01,mpls_bos=0,mpls_lse1=82208, actions:userspace(pid=0,slow_path(controller))
5497 AT_SETUP([ofproto-dpif - patch ports])
5498 OVS_VSWITCHD_START([add-br br1 \
5499 -- set bridge br1 datapath-type=dummy fail-mode=secure \
5500 -- add-port br1 pbr1 -- set int pbr1 type=patch options:peer=pbr0 \
5501 -- add-port br0 pbr0 -- set int pbr0 type=patch options:peer=pbr1])
5503 ADD_OF_PORTS([br0], [2])
5504 ADD_OF_PORTS([br1], [3])
5506 AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
5508 AT_CHECK([ovs-appctl time/stop])
5509 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5511 AT_CHECK([ovs-ofctl add-flow br0 actions=LOCAL,output:1,output:2])
5512 AT_CHECK([ovs-ofctl add-flow br1 actions=LOCAL,output:1,output:3])
5514 for i in $(seq 1 10); do
5515 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)'
5516 if [[ $i -eq 1 ]]; then
5521 for i in $(seq 1 5); do
5522 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)'
5523 if [[ $i -eq 1 ]]; then
5528 AT_CHECK([ovs-appctl time/warp 500], [0],
5531 sleep 1 # wait for log writer
5533 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
5534 dummy@ovs-dummy: hit:13 missed:2
5536 br0 65534/100: (dummy)
5538 pbr0 1/none: (patch: peer=pbr1)
5540 br1 65534/101: (dummy)
5542 pbr1 1/none: (patch: peer=pbr0)
5545 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5546 recirc_id=0,ip,in_port=100,nw_frag=no, actions:101,3,2
5547 recirc_id=0,ip,in_port=101,nw_frag=no, actions:100,2,3
5550 AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(100).*packets:9' | STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
5551 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
5553 AT_CHECK([cat ovs-vswitchd.log | grep -e 'in_port(101).*packets:4' | STRIP_UFID | FILTER_FLOW_DUMP], [0], [dnl
5554 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
5557 AT_CHECK([ovs-ofctl dump-ports br0 pbr0], [0], [dnl
5558 OFPST_PORT reply (xid=0x4): 1 ports
5559 port 1: rx pkts=5, bytes=300, drop=0, errs=0, frame=0, over=0, crc=0
5560 tx pkts=10, bytes=600, drop=0, errs=0, coll=0
5563 AT_CHECK([ovs-ofctl dump-ports br1 pbr1], [0], [dnl
5564 OFPST_PORT reply (xid=0x4): 1 ports
5565 port 1: rx pkts=10, bytes=600, drop=0, errs=0, frame=0, over=0, crc=0
5566 tx pkts=5, bytes=300, drop=0, errs=0, coll=0
5572 AT_SETUP([ofproto-dpif - patch ports - stack])
5573 OVS_VSWITCHD_START([add-br br1 \
5574 -- set bridge br1 datapath-type=dummy fail-mode=secure \
5575 -- add-port br1 pbr1 -- set int pbr1 type=patch options:peer=pbr0 \
5576 -- add-port br0 pbr0 -- set int pbr0 type=patch options:peer=pbr1])
5578 ADD_OF_PORTS([br0], [2])
5579 ADD_OF_PORTS([br1], [3])
5581 AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
5583 AT_CHECK([ovs-appctl time/stop])
5584 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5586 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"])
5587 # Try to pop from empty stack, and push and leave data to stack.
5588 AT_CHECK([ovs-ofctl add-flow br1 "ip actions=pop:OXM_OF_IPV4_DST[[0..31]],push:NXM_NX_REG1[[0..31]],LOCAL"])
5590 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)'
5592 AT_CHECK([ovs-appctl time/warp 500], [0],
5596 OVS_WAIT_UNTIL([test `grep flow_add ovs-vswitchd.log | wc -l` -ge 1])
5598 AT_CHECK([ovs-appctl dpif/show], [0], [dnl
5599 dummy@ovs-dummy: hit:0 missed:1
5601 br0 65534/100: (dummy)
5603 pbr0 1/none: (patch: peer=pbr1)
5605 br1 65534/101: (dummy)
5607 pbr1 1/none: (patch: peer=pbr0)
5610 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
5611 recirc_id=0,ip,in_port=100,nw_src=192.168.0.1,nw_frag=no, actions:101,set(ipv4(src=255.255.255.254)),2
5614 AT_CHECK([cat ovs-vswitchd.log | grep -e '|nx_match|WARN|' | sed "s/^.*|WARN|//"], [0], [dnl
5615 Failed to pop from an empty stack. On flow
5618 OVS_VSWITCHD_STOP(["/Failed to pop from an empty stack/d"])
5621 AT_SETUP([ofproto-dpif - port duration])
5622 OVS_VSWITCHD_START([set Bridge br0 protocols=OpenFlow13])
5623 ADD_OF_PORTS([br0], 1, 2)
5625 ovs-appctl time/stop
5626 ovs-appctl time/warp 10000
5628 AT_CHECK([ovs-ofctl -O openflow13 dump-ports br0], [0], [stdout])
5629 AT_CHECK([sed -n 's/=[[0-9]][[0-9]]\(\.[[0-9]][[0-9]]*\)\{0,1\}s/=?s/p' stdout], [0],
5638 dnl ----------------------------------------------------------------------
5639 AT_BANNER([ofproto-dpif -- megaflows])
5641 AT_SETUP([ofproto-dpif megaflow - port classification])
5643 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5644 ADD_OF_PORTS([br0], [1], [2])
5645 AT_DATA([flows.txt], [dnl
5646 table=0 in_port=1 actions=output(2)
5648 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5649 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5651 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)'])
5653 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5654 recirc_id=0,ip,in_port=1,nw_frag=no, actions: <del>
5659 AT_SETUP([ofproto-dpif megaflow - L2 classification])
5661 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5662 ADD_OF_PORTS([br0], [1], [2])
5663 AT_DATA([flows.txt], [dnl
5664 table=0 in_port=1,dl_src=50:54:00:00:00:09 actions=output(2)
5666 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5667 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)'])
5668 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)'])
5670 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5671 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5672 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b/ff:ff:00:00:00:02,nw_frag=no, actions: <del>
5677 AT_SETUP([ofproto-dpif megaflow - L3 classification])
5679 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5680 ADD_OF_PORTS([br0], [1], [2])
5681 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], [])
5682 AT_DATA([flows.txt], [dnl
5683 table=0 in_port=1,icmp,nw_src=10.0.0.4 actions=output(2)
5685 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5686 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)'])
5687 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)'])
5689 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5690 recirc_id=0,icmp,in_port=1,nw_src=10.0.0.4,nw_frag=no, actions: <del>
5691 recirc_id=0,ip,in_port=1,nw_src=10.0.0.2/0.0.0.2,nw_frag=no, actions: <del>
5696 AT_SETUP([ofproto-dpif megaflow - IPv6 classification])
5698 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5699 ADD_OF_PORTS([br0], [1], [2])
5700 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], [])
5701 AT_DATA([flows.txt], [dnl
5702 table=0 in_port=1,ipv6,ipv6_src=2001:db8:3c4d:1:2:3:4:5 actions=output(2)
5704 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5705 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)'])
5706 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)'])
5708 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5709 recirc_id=0,ipv6,in_port=1,ipv6_src=2001:db8:3c4d:1:2:3:4:5,nw_frag=no, actions: <del>
5710 recirc_id=0,ipv6,in_port=1,ipv6_src=2001:db8:3c4d:5:4:3:2:1/0:0:0:4::,nw_frag=no, actions: <del>
5715 AT_SETUP([ofproto-dpif megaflow - L4 classification])
5717 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5718 ADD_OF_PORTS([br0], [1], [2])
5719 AT_DATA([flows.txt], [dnl
5720 table=0 in_port=1,icmp,icmp_type=8 actions=output(2)
5722 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5723 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)'])
5725 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)'])
5727 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5728 recirc_id=0,icmp,in_port=1,nw_frag=no,icmp_type=0x8/0xff, actions: <del>
5733 AT_SETUP([ofproto-dpif megaflow - normal])
5735 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5736 ADD_OF_PORTS([br0], [1], [2])
5737 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5738 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)'])
5739 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)'])
5741 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5742 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>
5743 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>
5748 AT_SETUP([ofproto-dpif megaflow - mpls])
5750 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5751 ADD_OF_PORTS([br0], [1], [2])
5752 AT_DATA([flows.txt], [dnl
5753 table=0 dl_src=50:54:00:00:00:09 actions=push_mpls:0x8847,2
5754 table=0 dl_src=50:54:00:00:00:0b actions=pop_mpls:0x0800,2
5756 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5757 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)'])
5758 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)'])
5760 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5761 recirc_id=0,mpls,in_port=1,dl_src=50:54:00:00:00:09,mpls_label=11,mpls_tc=3,mpls_ttl=64,mpls_bos=1, actions: <del>
5762 recirc_id=0,mpls,in_port=1,dl_src=50:54:00:00:00:0b,mpls_bos=1, actions: <del>
5767 # CHECK_MEGAFLOW_NETFLOW(LOOPBACK_ADDR, IP_VERSION_TYPE)
5769 # IP_VERSION_TYPE is used in AT_SETUP
5770 m4_define([CHECK_MEGAFLOW_NETFLOW],
5771 [AT_SETUP([ofproto-dpif megaflow - netflow - $2 collector])
5773 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5774 ADD_OF_PORTS([br0], [1], [2])
5776 dnl NetFlow configuration disables wildcarding relevant fields
5777 ON_EXIT([kill `cat test-netflow.pid`])
5778 AT_CHECK([ovstest test-netflow --log-file --detach --no-chdir --pidfile 0:$1 > netflow.log], [0], [], [ignore])
5779 AT_CAPTURE_FILE([netflow.log])
5780 NETFLOW_PORT=`parse_listening_port < test-netflow.log`
5782 set Bridge br0 netflow=@nf -- \
5783 --id=@nf create NetFlow targets=\"$1:$NETFLOW_PORT\" \
5784 engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
5786 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5787 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)'])
5788 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)'])
5790 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5791 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>
5792 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>
5797 CHECK_MEGAFLOW_NETFLOW([127.0.0.1], [IPv4])
5798 CHECK_MEGAFLOW_NETFLOW([[[::1]]], [IPv6])
5800 AT_SETUP([ofproto-dpif megaflow - normal, active-backup bonding])
5802 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \
5803 add-bond br0 bond0 p2 p3 bond_mode=active-backup -- \
5804 set interface p2 type=dummy ofport_request=2 -- \
5805 set interface p3 type=dummy ofport_request=3])
5806 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
5808 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5810 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5811 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)'])
5812 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)'])
5814 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5815 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>
5816 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>
5821 AT_SETUP([ofproto-dpif megaflow - normal, balance-slb bonding])
5823 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \
5824 add-bond br0 bond0 p2 p3 bond_mode=balance-slb -- \
5825 set interface p2 type=dummy ofport_request=2 -- \
5826 set interface p3 type=dummy ofport_request=3])
5827 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
5829 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5831 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5832 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)'])
5833 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)'])
5835 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5836 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>
5837 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>
5842 AT_SETUP([ofproto-dpif megaflow - normal, balance-tcp bonding])
5843 # Create bond0 on br0 with interfaces p0 and p1
5844 # and bond1 on br1 with interfaces p2 and p3
5845 # with p0 patched to p2 and p1 patched to p3.
5847 [add-bond br0 bond0 p0 p1 bond_mode=balance-tcp lacp=active \
5848 other-config:lacp-time=fast \
5849 other-config:bond-rebalance-interval=0 -- \
5850 set interface p0 type=patch options:peer=p2 ofport_request=1 -- \
5851 set interface p1 type=patch options:peer=p3 ofport_request=2 -- \
5853 set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
5854 set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
5855 fail-mode=secure -- \
5856 add-bond br1 bond1 p2 p3 bond_mode=balance-tcp lacp=active \
5857 other-config:lacp-time=fast \
5858 other-config:bond-rebalance-interval=0 -- \
5859 set interface p2 type=patch options:peer=p0 ofport_request=3 -- \
5860 set interface p3 type=patch options:peer=p1 ofport_request=4 --])
5862 AT_CHECK([ovs-appctl netdev-dummy/set-admin-state up], 0, [OK
5864 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5865 ADD_OF_PORTS([br0], [7])
5866 AT_CHECK([ovs-ofctl add-flow br0 action=normal])
5867 AT_CHECK([ovs-ofctl add-flow br1 action=normal])
5868 ovs-appctl time/stop
5869 ovs-appctl time/warp 5000
5870 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)'])
5871 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)'])
5873 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5874 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>
5875 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>
5880 AT_SETUP([ofproto-dpif megaflow - resubmit port action])
5882 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5883 ADD_OF_PORTS([br0], [1], [2])
5884 AT_DATA([flows.txt], [dnl
5885 table=0 in_port=1,ip actions=resubmit(90)
5886 table=0 in_port=90,dl_src=50:54:00:00:00:09 actions=output(2)
5888 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5889 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)'])
5890 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)'])
5892 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5893 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5894 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b/ff:ff:00:00:00:02,nw_frag=no, actions: <del>
5899 AT_SETUP([ofproto-dpif megaflow - resubmit table action])
5901 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5902 ADD_OF_PORTS([br0], [1], [2])
5903 AT_DATA([flows.txt], [dnl
5904 table=0 in_port=1,ip actions=resubmit(,1)
5905 table=1 dl_src=50:54:00:00:00:09 actions=output(2)
5907 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5908 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)'])
5909 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=
5910 1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
5912 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5913 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5914 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
5919 AT_SETUP([ofproto-dpif megaflow - goto_table action])
5921 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5922 ADD_OF_PORTS([br0], [1], [2])
5923 AT_DATA([flows.txt], [dnl
5924 table=0 in_port=1,ip actions=goto_table(1)
5925 table=1 dl_src=50:54:00:00:00:09 actions=output(2)
5927 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt])
5928 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)'])
5929 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)'])
5931 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5932 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
5933 recirc_id=0,ip,in_port=1,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
5938 AT_SETUP([ofproto-dpif megaflow - mirroring, select_all])
5940 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5941 ADD_OF_PORTS([br0], [1], [2], [3])
5943 set Bridge br0 mirrors=@m --\
5944 --id=@p3 get Port p3 --\
5945 --id=@m create Mirror name=mymirror select_all=true output_port=@p3
5947 AT_DATA([flows.txt], [dnl
5948 in_port=1 actions=output:2
5950 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5951 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)'])
5953 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)'])
5955 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5956 recirc_id=0,ip,in_port=1,nw_frag=no, actions: <del>
5961 AT_SETUP([ofproto-dpif megaflow - mirroring, select_vlan])
5963 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5964 ADD_OF_PORTS([br0], [1], [2], [3])
5966 set Bridge br0 mirrors=@m --\
5967 --id=@p2 get Port p2 -- --id=@p3 get Port p3 --\
5968 --id=@m create Mirror name=mymirror select_all=true select_vlan=11 output_port=@p3
5970 AT_DATA([flows.txt], [dnl
5971 in_port=1 actions=output:2
5973 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5974 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))'])
5975 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)'])
5977 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5978 recirc_id=0,ip,in_port=1,dl_vlan=11,nw_frag=no, actions: <del>
5979 recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x1fff,nw_frag=no, actions: <del>
5984 AT_SETUP([ofproto-dpif megaflow - move action])
5986 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
5987 ADD_OF_PORTS([br0], [1], [2])
5988 AT_DATA([flows.txt], [dnl
5989 table=0 in_port=1 ip,actions=move:NXM_OF_IP_SRC[[]]->NXM_NX_REG0[[]],resubmit(90)
5990 table=0 in_port=90 ip,actions=move:NXM_NX_REG0[[]]->NXM_NX_REG1[[]],resubmit(91)
5991 table=0 in_port=91 reg0=0x0a000002,actions=output(2)
5993 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
5994 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)'])
5995 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)'])
5997 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
5998 recirc_id=0,ip,in_port=1,nw_src=10.0.0.2,nw_frag=no, actions: <del>
5999 recirc_id=0,ip,in_port=1,nw_src=10.0.0.4,nw_frag=no, actions: <del>
6004 AT_SETUP([ofproto-dpif megaflow - push action])
6006 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6007 ADD_OF_PORTS([br0], [1], [2])
6008 AT_DATA([flows.txt], [dnl
6009 table=0 in_port=1 ip,actions=push:NXM_OF_IP_SRC[[]],output(2)
6011 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6012 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)'])
6013 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)'])
6015 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6016 recirc_id=0,ip,in_port=1,nw_src=10.0.0.2,nw_frag=no, actions: <del>
6017 recirc_id=0,ip,in_port=1,nw_src=10.0.0.4,nw_frag=no, actions: <del>
6022 AT_SETUP([ofproto-dpif megaflow - learning])
6024 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6025 ADD_OF_PORTS([br0], [1], [2])
6026 AT_DATA([flows.txt], [dnl
6027 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
6029 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6030 ovs-appctl time/stop
6031 # We send each packet twice because the first packet in each flow causes the
6032 # flow table to change and thus revalidations, which (depending on timing)
6033 # can keep a megaflow from being installed. The revalidations are done by
6034 # the second iteration, allowing the flows to be installed.
6036 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)'])
6037 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)'])
6038 ovs-appctl time/warp 100
6041 dnl The original flow is missing due to a revalidation.
6042 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6043 recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x0fff,dl_src=50:54:00:00:00:09,nw_frag=no, actions: <del>
6044 recirc_id=0,ip,in_port=1,vlan_tci=0x0000/0x0fff,dl_src=50:54:00:00:00:0b,nw_frag=no, actions: <del>
6049 AT_SETUP([ofproto-dpif megaflow - tunnels])
6051 [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1])
6052 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6053 AT_CHECK([ovs-vsctl add-port br0 p2 -- set Interface p2 type=gre \
6054 options:remote_ip=1.1.1.1 ofport_request=2 options:key=flow])
6055 AT_CHECK([ovs-vsctl add-port br0 p3 -- set Interface p3 type=dummy \
6057 AT_CHECK([ovs-vsctl add-port br0 p4 -- set Interface p4 type=gre \
6058 options:remote_ip=1.1.1.2 options:tos=inherit options:ttl=inherit \
6059 ofport_request=4 options:key=flow])
6060 AT_DATA([flows.txt], [dnl
6061 in_port=1,actions=output(2)
6062 in_port=3,actions=output(4)
6064 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6065 dnl ECN bits are always copied out, but don't use 0x3 (CE), since that
6066 dnl will cause the packet to be dropped.
6067 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)'])
6069 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)'])
6070 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)'])
6072 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)'])
6074 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6075 recirc_id=0,ip,in_port=1,nw_ecn=1,nw_frag=no, actions: <del>
6076 recirc_id=0,ip,in_port=3,nw_tos=0,nw_ecn=1,nw_ttl=64,nw_frag=no, actions: <del>
6077 recirc_id=0,ip,in_port=3,nw_tos=252,nw_ecn=1,nw_ttl=128,nw_frag=no, actions: <del>
6082 AT_SETUP([ofproto-dpif megaflow - dec_ttl])
6084 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6085 ADD_OF_PORTS([br0], [1], [2])
6086 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], [])
6087 AT_DATA([flows.txt], [dnl
6088 table=0 in_port=1,icmp,nw_src=10.0.0.4 actions=dec_ttl,output(2)
6090 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6091 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)'])
6092 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)'])
6094 AT_CHECK([cat ovs-vswitchd.log | FILTER_FLOW_INSTALL | STRIP_XOUT], [0], [dnl
6095 recirc_id=0,icmp,in_port=1,nw_src=10.0.0.4,nw_ttl=64,nw_frag=no, actions: <del>
6096 recirc_id=0,ip,in_port=1,nw_src=10.0.0.2/0.0.0.2,nw_frag=no, actions: <del>
6101 AT_SETUP([ofproto-dpif megaflow - set dl_dst])
6103 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6104 ADD_OF_PORTS([br0], [1], [2])
6105 AT_DATA([flows.txt], [dnl
6106 table=0 in_port=1 actions=mod_dl_dst(50:54:00:00:00:0a),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: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)'])
6110 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)'])
6112 dnl The first packet is essentially a no-op, as the new destination MAC is the
6113 dnl same as the original. The second entry actually updates the destination
6115 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
6116 recirc_id=0,ip,in_port=1,dl_dst=50:54:00:00:00:0a,nw_frag=no, actions:2
6117 recirc_id=0,ip,in_port=1,dl_dst=50:54:00:00:00:0c,nw_frag=no, actions:set(eth(dst=50:54:00:00:00:0a)),2
6122 AT_SETUP([ofproto-dpif megaflow - disabled])
6124 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
6125 ADD_OF_PORTS([br0], [1], [2])
6126 AT_DATA([flows.txt], [dnl
6127 table=0 in_port=1,ip,nw_dst=10.0.0.1 actions=output(2)
6128 table=0 in_port=1,ip,nw_dst=10.0.0.3 actions=drop
6130 AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [megaflows disabled
6132 AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled
6134 AT_CHECK([ovs-appctl vlog/set dpif_netdev:dbg], [0], [], [])
6135 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
6136 for i in 1 2 3 4; do
6137 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)'])
6138 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)'])
6139 if [[ $i -eq 1 ]]; then
6144 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl
6145 pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0, actions:2
6146 pkt_mark=0,recirc_id=0,dp_hash=0,skb_priority=0,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:0b,dl_dst=50:54:00:00:00:0c,nw_src=10.0.0.4,nw_dst=10.0.0.3,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0, actions:drop
6148 AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_DUMP | grep 'packets:3'], [0], [dnl
6149 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
6150 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
6155 AT_SETUP([ofproto-dpif - datapath port number change])
6156 OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
6157 ADD_OF_PORTS([br0], 1)
6159 # Trace a flow that should output to p1.
6160 AT_CHECK([ovs-appctl ofproto/trace br0 in_port=LOCAL,dl_src=10:20:30:40:50:60],
6162 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 1
6165 # Change p1's port number to 5.
6166 AT_CHECK([ovs-appctl dpif-dummy/change-port-number ovs-dummy p1 5])
6168 # Trace a flow that should output to p1 in its new location.
6169 AT_CHECK([ovs-appctl ofproto/trace br0 in_port=LOCAL,dl_src=10:20:30:40:50:60],
6171 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 5
6176 # Tests the bundling with various bfd and cfm configurations.
6177 AT_SETUP([ofproto - bundle with variable bfd/cfm config])
6178 OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
6179 add-bond br0 br0bond p0 p2 bond-mode=active-backup -- \
6180 add-bond br1 br1bond p1 p3 bond-mode=active-backup -- \
6181 set Interface p1 type=patch options:peer=p0 ofport_request=2 -- \
6182 set Interface p3 type=patch options:peer=p2 ofport_request=4 -- \
6183 set Interface p0 type=patch options:peer=p1 ofport_request=1 -- \
6184 set Interface p2 type=patch options:peer=p3 ofport_request=3 -- \
6185 set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 -- \
6186 set Interface p0 cfm_mpid=1 -- \
6187 set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
6189 ovs-appctl time/stop
6190 # advance the clock to stablize everything.
6191 ovs-appctl time/warp 5000 100
6192 # cfm/show should show 'recv' fault.
6193 AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
6196 # bfd/show should show 'up'.
6197 AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
6198 Local Session State: up
6199 Remote Session State: up
6200 Local Session State: up
6201 Remote Session State: up
6203 # bond/show should show 'may-enable: true' for all slaves.
6204 AT_CHECK([ovs-appctl bond/show | sed -n '/^.*may_enable:.*/p'], [0], [dnl
6211 # now disable the bfd on p1.
6212 AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false])
6213 # advance the clock to stablize everything.
6214 ovs-appctl time/warp 5000 100
6215 # cfm/show should show 'recv' fault.
6216 AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
6219 # bfd/show should show 'down'.
6220 AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
6221 Local Session State: down
6222 Remote Session State: down
6224 # bond/show should show 'may-enable: false' for p0.
6225 AT_CHECK([ovs-appctl bond/show br0bond | sed -n '/^.*may_enable:.*/p'], [0], [dnl
6230 # now enable the bfd on p1 and disable bfd on p0.
6231 AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true])
6232 AT_CHECK([ovs-vsctl set Interface p0 bfd:enable=false])
6233 # advance the clock to stablize everything.
6234 ovs-appctl time/warp 5000 100
6235 # cfm/show should show 'recv' fault.
6236 AT_CHECK([ovs-appctl cfm/show | sed -n '/^.*fault:.*/p'], [0], [dnl
6239 # bfd/show should show 'down'.
6240 AT_CHECK([ovs-appctl bfd/show | sed -n '/^.*Session State:.*/p'], [0], [dnl
6241 Local Session State: down
6242 Remote Session State: down
6244 # bond/show should show 'may-enable: false' for p0 and p1.
6245 AT_CHECK([ovs-appctl bond/show | sed -n '/^.*may_enable:.*/p'], [0], [dnl
6255 AT_SETUP([ofproto-dpif - ofproto-dpif-monitor 1])
6256 OVS_VSWITCHD_START([add-port br0 p0 -- set interface p0 type=gre options:remote_ip=1.2.3.4])
6259 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true])
6261 OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
6262 # disable bfd on p0.
6263 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false])
6265 OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
6266 AT_CHECK([cat ovs-vswitchd.log | sed -e '/^.*ofproto_dpif_monitor.*$/d' > ovs-vswitchd.log])
6269 AT_CHECK([ovs-vsctl set interface p0 cfm_mpid=10])
6271 OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
6272 # disable cfm on p0.
6273 AT_CHECK([ovs-vsctl remove interface p0 cfm_mpid 10])
6275 OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
6276 AT_CHECK([cat ovs-vswitchd.log | sed -e '/^.*ofproto_dpif_monitor.*$/d' > ovs-vswitchd.log])
6278 # enable both bfd and cfm on p0.
6279 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true cfm_mpid=10])
6281 OVS_WAIT_UNTIL([grep "monitor thread created" ovs-vswitchd.log])
6282 # disable bfd on p0.
6283 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false])
6284 # check log, there should not be the log of thread terminated.
6285 AT_CHECK([sed -n "s/^.*|ofproto_dpif_monitor(monitor[[0-9]]*)|INFO|\(.* terminated\)$/\1/p" ovs-vswitchd.log], [0], [dnl
6287 # reenable bfd on p0.
6288 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=true])
6289 # check log, should still be on log of thread created.
6290 AT_CHECK([sed -n "s/^.*|ofproto_dpif_monitor(monitor[[0-9]]*)|INFO|\(.* created\)$/\1/p" ovs-vswitchd.log], [0], [dnl
6291 monitor thread created
6293 # disable bfd and cfm together.
6294 AT_CHECK([ovs-vsctl set interface p0 bfd:enable=false -- remove interface p0 cfm_mpid 10])
6296 OVS_WAIT_UNTIL([grep "monitor thread terminated" ovs-vswitchd.log])
6301 # this test helps avoid the deadlock between the main thread and monitor thread.
6302 AT_SETUP([ofproto-dpif - ofproto-dpif-monitor 2])
6305 for i in `seq 1 199`
6307 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])
6313 AT_BANNER([ofproto-dpif - flow translation resource limits])
6315 AT_SETUP([ofproto-dpif - infinite resubmit])
6317 AT_CHECK([ovs-ofctl add-flow br0 actions=resubmit:1,resubmit:2,output:3])
6318 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'eth_dst=ff:ff:ff:ff:ff:ff'],
6320 AT_CHECK([tail -1 stdout], [0], [Datapath actions: drop
6322 AT_CHECK([grep -c 'resubmit actions recursed over 64 times' ovs-vswitchd.log],
6325 OVS_VSWITCHD_STOP(["/resubmit actions recursed/d"])
6328 AT_SETUP([ofproto-dpif - exponential resubmit chain])
6330 ADD_OF_PORTS([br0], 1)
6331 (for i in `seq 1 64`; do
6333 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
6335 echo "in_port=65, actions=local") > flows
6336 AT_CHECK([ovs-ofctl add-flows br0 flows])
6337 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
6338 AT_CHECK([grep -c 'over 4096 resubmit actions' ovs-vswitchd.log], [0], [1
6340 OVS_VSWITCHD_STOP(["/over.*resubmit actions/d"])
6343 AT_SETUP([ofproto-dpif - too many output actions])
6345 ADD_OF_PORTS([br0], 1)
6346 (for i in `seq 1 12`; do
6348 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
6350 echo "in_port=13, actions=local,local,local,local,local,local,local,local") > flows
6351 AT_CHECK([ovs-ofctl add-flows br0 flows])
6352 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
6353 AT_CHECK([grep -c -e '- Uses action(s) not supported by datapath' stdout],
6356 AT_CHECK([grep -c 'resubmits yielded over 64 kB of actions' ovs-vswitchd.log], [0], [1
6358 OVS_VSWITCHD_STOP(["/resubmits yielded over 64 kB of actions/d"])
6361 AT_SETUP([ofproto-dpif - stack too deep])
6363 ADD_OF_PORTS([br0], 1)
6364 (for i in `seq 1 12`; do
6366 echo "in_port=$i, actions=resubmit:$j, resubmit:$j, local"
6368 push="push:NXM_NX_REG0[[]]"
6369 echo "in_port=13, actions=$push,$push,$push,$push,$push,$push,$push,$push") > flows
6370 AT_CHECK([ovs-ofctl add-flows br0 flows])
6371 AT_CHECK([ovs-appctl -vpoll_loop:off ofproto/trace br0 'in_port=1'], [0], [stdout])
6372 AT_CHECK([grep -c 'resubmits yielded over 64 kB of stack' ovs-vswitchd.log], [0], [1
6374 OVS_VSWITCHD_STOP(["/resubmits yielded over 64 kB of stack/d"])
6378 AT_SETUP([ofproto-dpif packet-out controller])
6380 ADD_OF_PORTS([br0], 1, 2)
6382 AT_CHECK([ovs-ofctl add-flow br0 'dl_dst=50:54:00:00:00:0a actions=controller'])
6384 AT_CAPTURE_FILE([ofctl_monitor.log])
6385 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6388 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER controller '50540000000a5054000000091234'])
6391 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6392 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6393 NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
6394 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6396 NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
6397 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6399 NXT_PACKET_IN (xid=0x0): total_len=14 in_port=CONTROLLER (via action) data_len=14 (unbuffered)
6400 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6403 AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
6404 dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6408 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6410 active=1, lookup=0, matched=0"
6412 while test $x -lt 254; do
6415 active=0, lookup=0, matched=0"
6418 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6423 AT_SETUP([ofproto-dpif packet-out controller (patch port)])
6426 add-port br0 p1 -- \
6427 set interface p1 type=patch options:peer=p2 -- \
6429 set bridge br1 datapath-type=dummy -- \
6430 set bridge br1 fail-mode=secure -- \
6431 set bridge br1 protocols='[OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13]' -- \
6432 add-port br1 p2 -- \
6433 set interface p2 type=patch options:peer=p1 --])
6435 AT_CAPTURE_FILE([ofctl_monitor.log])
6436 AT_CHECK([ovs-ofctl monitor br1 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6439 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER output:1 '50540000000a5054000000091234'])
6442 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6443 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6444 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
6445 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6447 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
6448 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6450 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via no_match) data_len=14 (unbuffered)
6451 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6454 (printf "OFPST_TABLE reply (OF1.3) (xid=0x2):"
6456 while test $x -lt 254; do
6459 active=0, lookup=0, matched=0"
6462 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6464 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6466 active=0, lookup=3, matched=0"
6468 while test $x -lt 254; do
6471 active=0, lookup=0, matched=0"
6474 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br1 ], [0], [expout])
6480 AT_SETUP([ofproto-dpif packet-out goto_table])
6482 ADD_OF_PORTS([br0], 1, 2)
6484 AT_DATA([flows.txt], [dnl
6485 table=0 dl_dst=50:54:00:00:00:0a actions=goto_table(1)
6486 table=1 dl_dst=50:54:00:00:00:0a actions=controller
6488 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows.txt])
6490 AT_CAPTURE_FILE([ofctl_monitor.log])
6491 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6494 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)'
6497 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6498 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6499 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6500 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6501 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6503 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6504 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6506 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6507 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6510 AT_CHECK([ovs-appctl revalidator/purge], [0])
6511 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl
6512 n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=goto_table:1
6513 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6514 OFPST_FLOW reply (OF1.3):
6517 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6519 active=1, lookup=3, matched=3
6522 active=1, lookup=3, matched=3"
6524 while test $x -lt 254; do
6527 active=0, lookup=0, matched=0"
6530 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6536 AT_SETUP([ofproto-dpif packet-out table-miss (continue)])
6538 ADD_OF_PORTS([br0], 1, 2)
6540 AT_CHECK([ovs-ofctl -O OpenFlow11 add-flow br0 'table=1 dl_dst=50:54:00:00:00:0a actions=controller'])
6541 AT_CHECK([ovs-ofctl -O OpenFlow11 mod-table br0 all continue])
6543 AT_CAPTURE_FILE([ofctl_monitor.log])
6544 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6547 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)'
6550 OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6])
6551 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6552 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6553 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6554 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6556 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6557 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6559 NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
6560 in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
6563 AT_CHECK([ovs-appctl revalidator/purge], [0])
6564 AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip | sort], [0], [dnl
6565 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535
6566 OFPST_FLOW reply (OF1.1):
6569 (echo "OFPST_TABLE reply (OF1.3) (xid=0x2):
6571 active=0, lookup=3, matched=0
6574 active=1, lookup=3, matched=3"
6576 while test $x -lt 254; do
6579 active=0, lookup=0, matched=0"
6582 AT_CHECK([ovs-ofctl -O OpenFlow13 dump-tables br0 ], [0], [expout])
6587 AT_SETUP([ofproto-dpif - ICMPv6])
6589 ADD_OF_PORTS([br0], 1)
6591 AT_CAPTURE_FILE([ofctl_monitor.log])
6593 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6595 ovs-appctl netdev-dummy/receive p1 '0060970769ea0000860580da86dd6000000000203afffe80000000000000020086fffe0580dafe80000000000000026097fffe0769ea870068bd00000000fe80000000000000026097fffe0769ea01010000860580da'
6597 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6599 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6600 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via no_match) data_len=86 (unbuffered)
6601 icmp6,in_port=0,vlan_tci=0x0000,dl_src=00:00:86:05:80:da,dl_dst=00:60:97:07:69:ea,ipv6_src=fe80::200:86ff:fe05:80da,ipv6_dst=fe80::260:97ff:fe07:69ea,ipv6_label=0x00000,nw_tos=0,nw_ecn=0,nw_ttl=255,icmp_type=135,icmp_code=0,nd_target=fe80::260:97ff:fe07:69ea,nd_sll=00:00:86:05:80:da,nd_tll=00:00:00:00:00:00 icmp6_csum:68bd
6607 AT_SETUP([ofproto-dpif - Neighbor Discovery set-field with checksum update])
6609 ADD_OF_PORTS([br0], 1)
6610 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])
6612 AT_CAPTURE_FILE([ofctl_monitor.log])
6614 AT_CHECK([ovs-ofctl monitor br0 65534 --detach --no-chdir --pidfile 2> ofctl_monitor.log])
6616 ovs-appctl netdev-dummy/receive p1 '0060970769ea0000860580da86dd6000000000203afffe80000000000000020086fffe0580dafe80000000000000026097fffe0769ea870068bd00000000fe80000000000000026097fffe0769ea01010000860580da'
6618 OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
6620 AT_CHECK([cat ofctl_monitor.log], [0], [dnl
6621 NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via action) data_len=86 (unbuffered)
6622 icmp6,in_port=0,vlan_tci=0x0000,dl_src=00:00:86:05:80:da,dl_dst=00:60:97:07:69:ea,ipv6_src=fe80::200:86ff:fe05:80da,ipv6_dst=fe80::260:97ff:fe07:69ea,ipv6_label=0x00000,nw_tos=0,nw_ecn=0,nw_ttl=255,icmp_type=135,icmp_code=0,nd_target=fe80::1,nd_sll=32:21:14:86:11:74,nd_tll=00:00:00:00:00:00 icmp6_csum:19d3