On Wed, Mar 20, 2024 at 8:37 PM Mark Michelson <[email protected]> wrote:

> Hi Ales, thanks for providing this patch. However, branch-22.03 is now
> in maintenance mode. It only is receiving patches for security issues
> and other high-severity issues. I'm not planning to merge this, but if
> there is a good reason that we should, I'm willing to hear it.
>


I think it's fine, I didn't realize the maintenance mode.


> On 3/20/24 06:13, Ales Musil wrote:
> > The way how tcpdump was called in tests was inconsistent,
> > a lot fo the tests didn't even wait for the tcpdump to properly
> > start, some of them didn't redirect the stderr which could cause
> > leak into the test stderr and fail the test.
> >
> > To prevent that add macro that starts tcpdump and properly
> > waits for the "listening" state, at the same time redirects
> > the stderr into separate file.
> >
> > Signed-off-by: Ales Musil <[email protected]>
> > Signed-off-by: Dumitru Ceara <[email protected]>
> > (cherry picked from commit e8ac18104df0bbd6579d8c62fd4282939631b878)
> > ---
> >   tests/system-common-macros.at |  25 +++--
> >   tests/system-ovn-kmod.at      |  10 +-
> >   tests/system-ovn.at           | 193 +++++++++++++++++-----------------
> >   3 files changed, 114 insertions(+), 114 deletions(-)
> >
> > diff --git a/tests/system-common-macros.at b/tests/
> system-common-macros.at
> > index 28a9873d6..d4f334036 100644
> > --- a/tests/system-common-macros.at
> > +++ b/tests/system-common-macros.at
> > @@ -299,6 +299,18 @@ m4_define([OVS_START_L7],
> >      ]
> >   )
> >
> > +# NETNS_START_TCPDUMP([namespace], [params], [name])
> > +#
> > +# Helper to properly start tcpdump and wait for the startup.
> > +# The tcpdump output is available in <name>.tcpdump file.
> > +m4_define([NETNS_START_TCPDUMP],
> > +    [
> > +     NETNS_DAEMONIZE([$1], [tcpdump -l $2 >$3.tcpdump 2>$3.stderr],
> [$3.pid])
> > +     OVS_WAIT_UNTIL([grep -q "listening" $3.stderr])
> > +    ]
> > +)
> > +
> > +
> >   # OVS_CHECK_VXLAN()
> >   #
> >   # Do basic check for vxlan functionality, skip the test if it's not
> there.
> > @@ -453,8 +465,7 @@ chown root:dhcpd /var/lib/dhcp
> /var/lib/dhcp/dhcpd6.leases
> >   chmod 775 /var/lib/dhcp
> >   chmod 664 /var/lib/dhcp/dhcpd6.leases
> >
> > -NS_CHECK_EXEC([server], [tcpdump -nni s1 > pkt.pcap &])
> > -
> > +NETNS_START_TCPDUMP([server], [-nni s1], [server])
> >   NETNS_DAEMONIZE([server], [dhcpd -6 -f s1 > dhcpd.log 2>&1],
> [dhcpd.pid])
> >   ovn-nbctl --wait=hv sync
> >
> > @@ -477,22 +488,20 @@ ovn-nbctl list logical_router_port rp-public >
> /tmp/rp-public
> >   ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
> >   ovn-nbctl set logical_router_port rp-sw1 options:prefix=false
> >   # Renew message
> > -NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x05 and
> ip6[[113:4]]=0x${prefix} > renew.pcap &])
> > +NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x05 and
> ip6[[113:4]]=0x${prefix}], [renew])
> >   # Reply message with Status OK
> > -NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x07 and
> ip6[[81:4]]=0x${prefix} > reply.pcap &])
> > +NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x07 and
> ip6[[81:4]]=0x${prefix}], [reply])
> >
> >   OVS_WAIT_UNTIL([
> > -    total_pkts=$(cat renew.pcap | wc -l)
> > +    total_pkts=$(cat renew.tcpdump | wc -l)
> >       test "${total_pkts}" = "1"
> >   ])
> >
> >   OVS_WAIT_UNTIL([
> > -    total_pkts=$(cat reply.pcap | wc -l)
> > +    total_pkts=$(cat reply.tcpdump | wc -l)
> >       test "${total_pkts}" = "1"
> >   ])
> >
> > -kill $(pidof tcpdump)
> > -
> >   ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
> >   ovn-nbctl clear logical_router_port rp-sw0 ipv6_prefix
> >   OVS_WAIT_WHILE([test "$(ovn-nbctl get logical_router_port rp-sw0
> ipv6_prefix | cut -c3-16)" = "[2001:1db8:3333]"])
> > diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
> > index db4191f31..7122b909c 100644
> > --- a/tests/system-ovn-kmod.at
> > +++ b/tests/system-ovn-kmod.at
> > @@ -320,14 +320,10 @@ while True:
> >   NETNS_DAEMONIZE([server], [$PYTHON3 ./server.py > server.log],
> [server.pid])
> >
> >   dnl Collect packets on server side.
> > -NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -vnne \
> > -          'ip and (icmp or udp)' > server.tcpdump 2>server_err],
> [tcpdump0.pid])
> > -OVS_WAIT_UNTIL([grep "listening" server_err])
> > +NETNS_START_TCPDUMP([server], [-U -i server -vnne 'ip and (icmp or
> udp)'], [tcpdump-server])
> >
> >   dnl Collect packets on client side.
> > -NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -vnne \
> > -          'ip and (icmp or udp)' > client.tcpdump 2>client_err],
> [tcpdump1.pid])
> > -OVS_WAIT_UNTIL([grep "listening" client_err])
> > +NETNS_START_TCPDUMP([client], [-U -i client -vnne 'ip and (icmp or
> udp)'], [tcpdump-client])
> >
> >   dnl Send two packets to the server with a short interval.
> >   dnl First packet should generate 'needs frag', the second should
> result in
> > @@ -345,7 +341,7 @@ time.sleep(5)
> >   NS_CHECK_EXEC([client], [$PYTHON3 ./client.py])
> >
> >   dnl Expecting 2 outgoing packets and 2 fragments back - 8 lines total.
> > -OVS_WAIT_UNTIL([test "$(cat client.tcpdump | wc -l)" = "8"])
> > +OVS_WAIT_UNTIL([test "$(cat tcpdump-client.tcpdump | wc -l)" = "8"])
> >
> >   ovn-appctl -t ovn-controller vlog/set info
> >
> > diff --git a/tests/system-ovn.at b/tests/system-ovn.at
> > index 9e2507a7a..d66c9ab63 100644
> > --- a/tests/system-ovn.at
> > +++ b/tests/system-ovn.at
> > @@ -1602,12 +1602,11 @@ OVS_WAIT_UNTIL([
> >   ovn-nbctl --reject lb-add lb3 30.0.0.10:80 ""
> >   ovn-nbctl ls-lb-add foo lb3
> >   # Filter reset segments
> > -NS_CHECK_EXEC([foo1], [tcpdump -l -c 1 -neei foo1 ip[[33:1]]=0x14 >
> rst.pcap 2>tcpdump_err &])
> > -OVS_WAIT_UNTIL([grep "listening" tcpdump_err])
> > +NETNS_START_TCPDUMP([foo1], [-c 1 -neei foo1 ip[[33:1]]=0x14], [rst])
> >   NS_CHECK_EXEC([foo1], [wget -q 30.0.0.10],[4])
> >
> >   OVS_WAIT_UNTIL([
> > -    n_reset=$(cat rst.pcap | wc -l)
> > +    n_reset=$(cat rst.tcpdump | wc -l)
> >       test "${n_reset}" = "1"
> >   ])
> >
> > @@ -3644,8 +3643,7 @@
> icmp,orig=(src=192.168.2.2,dst=172.16.1.2,id=<cleared>,type=8,code=0),reply=(src
> >   ])
> >
> >   # Try to ping external network
> > -NS_CHECK_EXEC([ext-net], [tcpdump -l -n -c 3 -i ext-veth dst 172.16.1.3
> and icmp > ext-net.pcap 2>tcpdump_err &])
> > -OVS_WAIT_UNTIL([grep "listening" tcpdump_err])
> > +NETNS_START_TCPDUMP([ext-net], [-n -c 3 -i ext-veth dst 172.16.1.3 and
> icmp], [ext-net])
> >   AT_CHECK([ovn-nbctl lr-nat-del R1 snat])
> >   NS_CHECK_EXEC([foo1], [ping -q -c 3 -i 0.3 -w 2 10.0.0.1 |
> FORMAT_PING], \
> >   [0], [dnl
> > @@ -3653,7 +3651,7 @@ NS_CHECK_EXEC([foo1], [ping -q -c 3 -i 0.3 -w 2
> 10.0.0.1 | FORMAT_PING], \
> >   ])
> >
> >   OVS_WAIT_UNTIL([
> > -    total_pkts=$(cat ext-net.pcap | wc -l)
> > +    total_pkts=$(cat ext-net.tcpdump | wc -l)
> >       test "${total_pkts}" = "3"
> >   ])
> >
> > @@ -4391,19 +4389,19 @@ ovn-nbctl set Logical_Switch sw2 \
> >       other_config:mcast_ip6_src="2000::fe"
> >
> >   # Check that v4 queries are generated.
> > -NS_CHECK_EXEC([sw2-p1], [tcpdump -n -c 2 -i sw2-p1 igmp >
> sw2-p1-v4.pcap &])
> > +NETNS_START_TCPDUMP([sw2-p1], [-n -c 2 -i sw2-p1 igmp], [sw2-p1-v4])
> >
> >   OVS_WAIT_UNTIL([
> > -    total_queries=`grep "igmp query" -c sw2-p1-v4.pcap`
> > +    total_queries=`grep "igmp query" -c sw2-p1-v4.tcpdump`
> >       test "${total_queries}" = "2"
> >   ])
> >
> >   # Check that v6 queries are generated (ip6 next header == Hop-By-Hop
> and
> >   # icmpv6 type == MLD Query).
> > -NS_CHECK_EXEC([sw2-p1], [tcpdump -n -c 2 -i sw2-p1 ip6[[6]]==0 and
> ip6[[48]]==0x82 > sw2-p1-v6.pcap &])
> > +NETNS_START_TCPDUMP([sw2-p1], [-n -c 2 -i sw2-p1 ip6[[6]]==0 and
> ip6[[48]]==0x82], [sw2-p1-v6])
> >
> >   OVS_WAIT_UNTIL([
> > -    total_queries=`grep "multicast listener query" -c sw2-p1-v6.pcap`
> > +    total_queries=`grep "multicast listener query" -c sw2-p1-v6.tcpdump`
> >       test "${total_queries}" = "2"
> >   ])
> >
> > @@ -4621,13 +4619,13 @@ service_monitor protocol=udp | sed '/^$/d' |
> grep offline | wc -l`])
> >   pid_file=$(cat l7_pid_file)
> >   NS_CHECK_EXEC([sw1-p1], [kill $(cat $pid_file)])
> >
> > -NS_CHECK_EXEC([sw0-p2], [tcpdump -c 1 -neei sw0-p2 ip[[33:1]]=0x14 >
> rst.pcap &])
> > +NETNS_START_TCPDUMP([sw0-p2], [-c 1 -neei sw0-p2 ip[[33:1]]=0x14],
> [rst])
> >   OVS_WAIT_UNTIL([test 2 = `ovn-sbctl --bare --columns status find \
> >   service_monitor protocol=tcp | sed '/^$/d' | grep offline | wc -l`])
> >   NS_CHECK_EXEC([sw0-p2], [wget 10.0.0.10 -v -o wget$i.log],[4])
> >
> >   OVS_WAIT_UNTIL([
> > -    n_reset=$(cat rst.pcap | wc -l)
> > +    n_reset=$(cat rst.tcpdump | wc -l)
> >       test "${n_reset}" = "1"
> >   ])
> >
> > @@ -4710,8 +4708,7 @@ NS_CHECK_EXEC([lsp], [nc 88.88.88.90 4041 -z],
> [0], [ignore], [ignore])
> >
> >   # Capture IPv4 UDP hairpinned packets.
> >   filter="dst 42.42.42.1 and dst port 2021 and udp"
> > -NS_CHECK_EXEC([lsp], [tcpdump -l -nn -c 3 -i lsp ${filter} > lsp.pcap
> 2>tcpdump_err &])
> > -OVS_WAIT_UNTIL([grep "listening" tcpdump_err])
> > +NETNS_START_TCPDUMP([lsp], [-nn -c 3 -i lsp ${filter}], [lsp])
> >
> >   # Generate IPv4 UDP hairpin traffic.
> >   NS_CHECK_EXEC([lsp], [echo a | nc -u 88.88.88.88 4040 &], [0])
> > @@ -4720,7 +4717,7 @@ NS_CHECK_EXEC([lsp], [echo a | nc -u 88.88.88.90
> 2021 &], [0])
> >
> >   # Check hairpin traffic.
> >   OVS_WAIT_UNTIL([
> > -    total_pkts=$(cat lsp.pcap | wc -l)
> > +    total_pkts=$(cat lsp.tcpdump | wc -l)
> >       test "${total_pkts}" = "3"
> >   ])
> >
> > @@ -4808,8 +4805,7 @@ NS_CHECK_EXEC([lsp], [nc 8800::0090 4041 -z], [0],
> [ignore], [ignore])
> >
> >   # Capture IPv6 UDP hairpinned packets.
> >   filter="dst 4200::1 and dst port 2021 and udp"
> > -NS_CHECK_EXEC([lsp], [tcpdump -l -nn -c 3 -i lsp $filter > lsp.pcap
> 2>tcpdump_err &])
> > -OVS_WAIT_UNTIL([grep "listening" tcpdump_err])
> > +NETNS_START_TCPDUMP([lsp], [-nn -c 3 -i lsp $filter], [lsp])
> >
> >   # Generate IPv6 UDP hairpin traffic.
> >   NS_CHECK_EXEC([lsp], [echo a | nc -u 8800::0088 4040 &], [0])
> > @@ -4818,7 +4814,7 @@ NS_CHECK_EXEC([lsp], [echo a | nc -u 8800::0090
> 2021 &], [0])
> >
> >   # Check hairpin traffic.
> >   OVS_WAIT_UNTIL([
> > -    total_pkts=$(cat lsp.pcap | wc -l)
> > +    total_pkts=$(cat lsp.tcpdump | wc -l)
> >       test "${total_pkts}" = "3"
> >   ])
> >
> > @@ -4934,7 +4930,7 @@ ADD_VETH(sw1-p1-rej, sw1-p1-rej, br-int, "
> 20.0.0.3/24", "40:54:00:00:00:03", \
> >   sleep 1
> >
> >   # Capture packets in sw0-p1-rej.
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 4 -i sw0-p1-rej tcp >
> sw0-p1-rej-ip4.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 4 -i sw0-p1-rej tcp],
> [sw0-p1-rej-ip4])
> >
> >   sleep 1
> >
> > @@ -4954,7 +4950,7 @@ grep controller | grep tp_dst=84 -c)
> >   ])
> >
> >   OVS_WAIT_UNTIL([
> > -    total=`cat sw0-p1-rej-ip4.pcap |  wc -l`
> > +    total=`cat sw0-p1-rej-ip4.tcpdump |  wc -l`
> >       echo "total = $total"
> >       test "${total}" = "4"
> >   ])
> > @@ -4962,8 +4958,7 @@ OVS_WAIT_UNTIL([
> >   # Without this sleep, test case fails intermittently.
> >   sleep 3
> >
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 2 -i sw0-p2-rej tcp port 80
> > sw0-p2-rej-ip6.pcap &], [0])
> > -
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 2 -i sw0-p2-rej tcp port 80],
> [sw0-p2-rej-ip6])
> >   sleep 1
> >
> >   OVS_WAIT_UNTIL([
> > @@ -4972,7 +4967,7 @@ OVS_WAIT_UNTIL([
> >
> >
> >   OVS_WAIT_UNTIL([
> > -    total=`cat sw0-p2-rej-ip6.pcap |  wc -l`
> > +    total=`cat sw0-p2-rej-ip6.tcpdump |  wc -l`
> >       echo "total = $total"
> >       test "${total}" = "2"
> >   ])
> > @@ -4986,49 +4981,51 @@ OVS_WAIT_UNTIL([
> >   ])
> >
> >   # Now test for IPv4 UDP.
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej udp port 90
> > sw0-p1-rej-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej icmp >
> sw0-p1-rej-icmp.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej udp port 90],
> [sw0-p1-rej-udp])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej icmp],
> [sw0-p1-rej-icmp])
> >
> >   printf '.%.0s' {1..100} > foo
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo
> > -    c=$(cat sw0-p1-rej-icmp.pcap | grep \
> > +    c=$(cat sw0-p1-rej-icmp.tcpdump | grep \
> >   "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq |
> wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej udp port 94
> > sw0-p1-rej-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej icmp >
> sw0-p1-rej-icmp.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej udp port 94],
> [sw0-p1-rej-udp])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej icmp],
> [sw0-p1-rej-icmp])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p1-rej nc -u 10.0.0.4 94 < foo
> > -    c=$(cat sw0-p1-rej-icmp.pcap | grep \
> > +    c=$(cat sw0-p1-rej-icmp.tcpdump | grep \
> >   "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 94 unreachable" | uniq |
> wc -l)
> >       test $c -ge 1
> >   ])
> >
> >   # Now test for IPv6 UDP.
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej udp port 90
> > sw0-p2-rej-ip6-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej icmp6 >
> sw0-p2-rej-icmp6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej udp port 90],
> [sw0-p2-rej-ip6-udp])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej icmp6],
> [sw0-p2-rej-icmp6])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo
> > -    c=$(cat sw0-p2-rej-icmp6.pcap | grep \
> > +    c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \
> >   "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable
> port, \
> >   aef0::3 udp port 90" | uniq | wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej udp port 94
> > sw0-p2-rej-ip6-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej icmp6 >
> sw0-p2-rej-icmp6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej udp port 94],
> [sw0-p2-rej-ip6-udp])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej icmp6],
> [sw0-p2-rej-icmp6])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -u -6 aef0::3 94 < foo
> > -    c=$(cat sw0-p2-rej-icmp6.pcap | grep \
> > +    c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \
> >   "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable
> port, \
> >   aef0::3 udp port 94" | uniq | wc -l)
> >       test $c -ge 1
> > @@ -5047,31 +5044,32 @@ OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -vz6 aef0::3 80 2>&1 | grep -i
> 'connection refused'
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej icmp >
> sw0-p1-rej-icmp.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej icmp],
> [sw0-p1-rej-icmp])
> >
> >   printf '.%.0s' {1..100} > foo
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo
> > -    c=$(cat sw0-p1-rej-icmp.pcap | grep \
> > +    c=$(cat sw0-p1-rej-icmp.tcpdump | grep \
> >   "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq |
> wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >   # Now test for IPv6 UDP.
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej icmp6 >
> sw0-p2-rej-icmp6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej icmp6],
> [sw0-p2-rej-icmp6])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo
> > -    c=$(cat sw0-p2-rej-icmp6.pcap | grep \
> > +    c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \
> >   "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable
> port, \
> >   aef0::3 udp port 90" | uniq | wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -
> >   OVS_APP_EXIT_AND_WAIT([ovn-controller])
> >
> >   as ovn-sb
> > @@ -5175,7 +5173,7 @@ ADD_VETH(sw1-p1-rej, sw1-p1-rej, br-int, "
> 20.0.0.3/24", "40:54:00:00:00:03", \
> >   sleep 1
> >
> >   # Capture packets in sw0-p1-rej.
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 4 -i sw0-p1-rej tcp >
> sw0-p1-rej-ip4.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 4 -i sw0-p1-rej tcp ],
> [sw0-p1-rej-ip4])
> >
> >   sleep 1
> >
> > @@ -5195,7 +5193,7 @@ grep controller | grep tp_dst=84 -c)
> >   ])
> >
> >   OVS_WAIT_UNTIL([
> > -    total=`cat sw0-p1-rej-ip4.pcap |  wc -l`
> > +    total=`cat sw0-p1-rej-ip4.tcpdump |  wc -l`
> >       echo "total = $total"
> >       test "${total}" = "4"
> >   ])
> > @@ -5203,7 +5201,7 @@ OVS_WAIT_UNTIL([
> >   # Without this sleep, test case fails intermittently.
> >   sleep 3
> >
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 2 -i sw0-p2-rej tcp port 80
> > sw0-p2-rej-ip6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 2 -i sw0-p2-rej tcp port 80],
> [sw0-p2-rej-ip6])
> >
> >   sleep 1
> >
> > @@ -5213,7 +5211,7 @@ OVS_WAIT_UNTIL([
> >
> >
> >   OVS_WAIT_UNTIL([
> > -    total=`cat sw0-p2-rej-ip6.pcap |  wc -l`
> > +    total=`cat sw0-p2-rej-ip6.tcpdump |  wc -l`
> >       echo "total = $total"
> >       test "${total}" = "2"
> >   ])
> > @@ -5227,49 +5225,51 @@ OVS_WAIT_UNTIL([
> >   ])
> >
> >   # Now test for IPv4 UDP.
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej udp port 90
> > sw0-p1-rej-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej icmp >
> sw0-p1-rej-icmp.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej udp port 90],
> [sw0-p1-rej-udp])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej icmp],
> [sw0-p1-rej-icmp])
> >
> >   printf '.%.0s' {1..100} > foo
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo
> > -    c=$(cat sw0-p1-rej-icmp.pcap | grep \
> > +    c=$(cat sw0-p1-rej-icmp.tcpdump | grep \
> >   "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq |
> wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej udp port 94
> > sw0-p1-rej-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej icmp >
> sw0-p1-rej-icmp.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej udp port 94],
> [sw0-p1-rej-udp])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej icmp],
> [sw0-p1-rej-icmp])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p1-rej nc -u 10.0.0.4 94 < foo
> > -    c=$(cat sw0-p1-rej-icmp.pcap | grep \
> > +    c=$(cat sw0-p1-rej-icmp.tcpdump | grep \
> >   "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 94 unreachable" | uniq |
> wc -l)
> >       test $c -ge 1
> >   ])
> >
> >   # Now test for IPv6 UDP.
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej udp port 90
> > sw0-p2-rej-ip6-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej icmp6 >
> sw0-p2-rej-icmp6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej udp port 90],
> [sw0-p2-rej-ip6-udp])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej icmp6],
> [sw0-p2-rej-icmp6])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo
> > -    c=$(cat sw0-p2-rej-icmp6.pcap | grep \
> > +    c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \
> >   "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable
> port, \
> >   aef0::3 udp port 90" | uniq | wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej udp port 94
> > sw0-p2-rej-ip6-udp.pcap &], [0])
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej icmp6 >
> sw0-p2-rej-icmp6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej udp port 94],
> [sw0-p2-rej-ip6-udp])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej icmp6],
> [sw0-p2-rej-icmp6])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -u -6 aef0::3 94 < foo
> > -    c=$(cat sw0-p2-rej-icmp6.pcap | grep \
> > +    c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \
> >   "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable
> port, \
> >   aef0::3 udp port 94" | uniq | wc -l)
> >       test $c -ge 1
> > @@ -5288,25 +5288,27 @@ OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -vz6 aef0::3 80 2>&1 | grep -i
> 'connection refused'
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >
> > -NS_CHECK_EXEC([sw0-p1-rej], [tcpdump -nn -c 1 -i sw0-p1-rej icmp >
> sw0-p1-rej-icmp.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -c 1 -i sw0-p1-rej icmp],
> [sw0-p1-rej-icmp])
> >
> >   printf '.%.0s' {1..100} > foo
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo
> > -    c=$(cat sw0-p1-rej-icmp.pcap | grep \
> > +    c=$(cat sw0-p1-rej-icmp.tcpdump | grep \
> >   "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq |
> wc -l)
> >       test $c -ge 1
> >   ])
> >
> > -rm -f *.pcap
> > +kill $(pidof tcpdump)
> > +rm -f *.tcpdump
> >   # Now test for IPv6 UDP.
> > -NS_CHECK_EXEC([sw0-p2-rej], [tcpdump -nn -c 1 -i sw0-p2-rej icmp6 >
> sw0-p2-rej-icmp6.pcap &], [0])
> > +NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -c 1 -i sw0-p2-rej icmp6],
> [sw0-p2-rej-icmp6])
> >
> >   OVS_WAIT_UNTIL([
> >       ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo
> > -    c=$(cat sw0-p2-rej-icmp6.pcap | grep \
> > +    c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \
> >   "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable
> port, \
> >   aef0::3 udp port 90" | uniq | wc -l)
> >       test $c -ge 1
> > @@ -6466,10 +6468,10 @@ OVS_WAIT_UNTIL([ovn-sbctl dump-flows R1 | grep
> 'match=(ip4.dst == 100.0.0.0/8)'
> >   check ovn-nbctl clear logical_router_static_route $route_uuid bfd
> >   wait_column "admin_down" nb:bfd status logical_port=rp-public
> >   OVS_WAIT_UNTIL([ip netns exec server bfdd-control status | grep -qi
> state=Down])
> > -NS_CHECK_EXEC([server], [tcpdump -nni s1 udp port 3784 -Q in > bfd.pcap
> &])
> > +NETNS_START_TCPDUMP([server], [-nni s1 udp port 3784 -Q in], [bfd])
> >   sleep 5
> >   kill $(pidof tcpdump)
> > -AT_CHECK([grep -qi bfd bfd.pcap],[1])
> > +AT_CHECK([grep -qi bfd bfd.tcpdump],[1])
> >
> >   # restart the connection
> >   check ovn-nbctl set logical_router_static_route $route_uuid bfd=$uuid
> > @@ -6495,10 +6497,10 @@ OVS_WAIT_UNTIL([test "$(ovn-sbctl dump-flows R1
> | grep 'match=(ip4.dst == 100.0.
> >   # remove bfd entry
> >   ovn-nbctl destroy bfd $uuid
> >   check_row_count bfd 0
> > -NS_CHECK_EXEC([server], [tcpdump -nni s1 udp port 3784 -Q in > bfd.pcap
> &])
> > +NETNS_START_TCPDUMP([server], [-nni s1 udp port 3784 -Q in], [bfd])
> >   sleep 5
> >   kill $(pidof tcpdump)
> > -AT_CHECK([grep -qi bfd bfd.pcap],[1])
> > +AT_CHECK([grep -qi bfd bfd.tcpdump],[1])
> >
> >   uuid_v6=$(ovn-nbctl create bfd logical_port=rp-public
> dst_ip=\"1000::b\")
> >   check ovn-nbctl lr-route-add R1 2000::/64 1000::b
> > @@ -6944,7 +6946,7 @@ check ovn-nbctl lsp-add public public1 \
> >           -- lsp-set-type public1 localnet \
> >           -- lsp-set-options public1 network_name=phynet
> >
> > -NS_EXEC([sw01], [tcpdump -l -n -i sw01 icmp -Q in > reject.pcap &])
> > +NETNS_START_TCPDUMP([sw01], [-n -i sw01 icmp -Q in], [reject])
> >   check ovn-nbctl meter-add acl-meter drop 1 pktps 0
> >   check ovn-nbctl copp-add copp0 reject acl-meter
> >   check ovn-nbctl ls-copp-add copp0 sw0
> > @@ -6961,14 +6963,14 @@ EOF
> >
> >   # 1pps
> >   OVS_WAIT_UNTIL([
> > -    n_reject=$(grep unreachable reject.pcap | wc -l)
> > +    n_reject=$(grep unreachable reject.tcpdump | wc -l)
> >       test "${n_reject}" = "1"
> >   ])
> >   kill $(pidof tcpdump)
> > -rm -f reject.pcap
> > +rm -f reject.tcpdump
> >
> >   # Let's update the meter
> > -NS_EXEC([sw01], [tcpdump -l -n -i sw01 icmp -Q in > reject.pcap &])
> > +NETNS_START_TCPDUMP([sw01], [-n -i sw01 icmp -Q in], [reject])
> >   check ovn-nbctl --may-exist --wait=hv meter-add acl-meter drop 10
> pktps 0
> >   ip netns exec sw01 scapy -H <<-EOF
> >   p = IP(src="192.168.1.2", dst="192.168.1.1") / UDP(dport = 12345) /
> Raw(b"X"*64)
> > @@ -6977,14 +6979,14 @@ EOF
> >
> >   # 10pps
> >   OVS_WAIT_UNTIL([
> > -    n_reject=$(grep unreachable reject.pcap | wc -l)
> > +    n_reject=$(grep unreachable reject.tcpdump | wc -l)
> >       test "${n_reject}" = "10"
> >   ])
> >
> >   kill $(pidof tcpdump)
> > -rm -f reject.pcap
> > +rm -f reject.tcpdump
> >
> > -NS_EXEC([sw01], [tcpdump -l -n -i sw01 icmp -Q in > reject.pcap &])
> > +NETNS_START_TCPDUMP([sw01], [-n -i sw01 icmp -Q in], [reject])
> >   check ovn-nbctl --wait=hv copp-del copp0 reject
> >
> >   ip netns exec sw01 scapy -H <<-EOF
> > @@ -6993,12 +6995,11 @@ send (p, iface='sw01', loop = 0, verbose = 0,
> count = 20)
> >   EOF
> >
> >   OVS_WAIT_UNTIL([
> > -    n_reject=$(grep unreachable reject.pcap | wc -l)
> > +    n_reject=$(grep unreachable reject.tcpdump | wc -l)
> >       test "${n_reject}" = "20"
> >   ])
> > -kill $(pidof tcpdump)
> >
> > -NS_EXEC([server], [tcpdump -l -n -i s1 arp[[24:4]]=0xac100164 >
> arp.pcap &])
> > +NETNS_START_TCPDUMP([server], [-n -i s1 arp[[24:4]]=0xac100164], [arp])
> >   check ovn-nbctl meter-add arp-meter drop 1 pktps 0
> >   check ovn-nbctl copp-add copp1 arp-resolve arp-meter
> >   check ovn-nbctl --wait=hv lr-copp-add copp1 R1
> > @@ -7013,10 +7014,9 @@ EOF
> >
> >   # 1pps
> >   OVS_WAIT_UNTIL([
> > -    n_arp=$(grep ARP arp.pcap | wc -l)
> > +    n_arp=$(grep ARP arp.tcpdump | wc -l)
> >       test "${n_arp}" = "1"
> >   ])
> > -kill $(pidof tcpdump)
> >
> >   check ovn-nbctl meter-add icmp-meter drop 1 pktps 0
> >   check ovn-nbctl copp-add copp2 icmp4-error icmp-meter
> > @@ -7025,7 +7025,7 @@ AT_CHECK([ovn-nbctl copp-list copp2 |grep
> icmp4-error], [0], [dnl
> >   icmp4-error: icmp-meter
> >   ])
> >
> > -NS_EXEC([sw01], [tcpdump -l -n -i sw01 icmp > icmp.pcap &])
> > +NETNS_START_TCPDUMP([sw01], [-n -i sw01 icmp], [icmp])
> >   ip netns exec sw01 scapy -H <<-EOF
> >   p = IP(src="192.168.1.2", dst="172.16.1.100", ttl=1) / TCP(dport =
> 8080, flags="S") / Raw(b"X"*64)
> >   send (p, iface='sw01', loop = 0, verbose = 0, count = 100)
> > @@ -7033,10 +7033,9 @@ EOF
> >
> >   # 1pps
> >   OVS_WAIT_UNTIL([
> > -    n_icmp=$(grep ICMP icmp.pcap | wc -l)
> > +    n_icmp=$(grep ICMP icmp.tcpdump | wc -l)
> >       test "${n_icmp}" = "1"
> >   ])
> > -kill $(pidof tcpdump)
> >
> >   check ovn-nbctl meter-add bfd-meter drop 1 pktps 0
> >   check ovn-nbctl copp-add copp3 bfd bfd-meter
> > @@ -7047,7 +7046,7 @@ bfd: bfd-meter
> >
> >   check ovn-nbctl --bfd lr-route-add R1 240.0.0.0/8 172.16.1.50
> rp-public
> >   printf "%08x" $(ovn-sbctl get bfd . disc) > /tmp/disc
> > -NS_EXEC([server], [tcpdump -l -nn -i s1 udp port 3784 and
> ip[[29]]==0x90 -Q in > bfd.pcap &])
> > +NETNS_START_TCPDUMP([server], [-nn -i s1 udp port 3784 and
> ip[[29]]==0x90 -Q in], [bfd])
> >   ip netns exec server scapy -H <<-EOF
> >   import binascii
> >   f = open("/tmp/disc", "r")
> > @@ -7062,10 +7061,9 @@ rm /tmp/disc
> >
> >   # 1pps
> >   OVS_WAIT_UNTIL([
> > -    n_bfd=$(grep 3784 bfd.pcap | wc -l)
> > +    n_bfd=$(grep 3784 bfd.tcpdump | wc -l)
> >       test "${n_bfd}" = "1"
> >   ])
> > -kill $(pidof tcpdump)
> >
> >   check ovn-nbctl set nb_global .
> options:svc_monitor_mac="33:33:33:33:33:33"
> >   check ovn-nbctl meter-add svc-meter drop 1 pktps 0
> > @@ -8300,7 +8298,7 @@ NS_CHECK_EXEC([vm2], [ip link set lo up], [0])
> >   check ovs-vsctl set Interface vm2 external_ids:iface-id=vm2
> >
> >   ADD_NAMESPACES(vm3)
> > -NETNS_DAEMONIZE([vm3], [tcpdump -n -i any -nnleX > vm3.pcap
> 2>/dev/null], [tcpdump3.pid])
> > +NETNS_START_TCPDUMP([vm3], [-n -i any -nnleX], [vm3])
> >
> >   ADD_INT([vm3], [vm3], [br-int], [42.42.42.3/24])
> >   NS_CHECK_EXEC([vm3], [ip link set vm3 address 00:00:00:00:00:03], [0])
> > @@ -8318,11 +8316,11 @@ wait_igmp_flows_installed 228.0.0.1
> >   NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 228.0.0.1], [ignore],
> [ignore])
> >
> >   OVS_WAIT_UNTIL([
> > -    requests=`grep "ICMP echo request" -c vm3.pcap`
> > +    requests=`grep "ICMP echo request" -c vm3.tcpdump`
> >       test "${requests}" -ge "3"
> >   ])
> >
> > -NETNS_DAEMONIZE([vm2], [tcpdump -n -i any -nnleX > vm2.pcap
> 2>/dev/null], [tcpdump2.pid])
> > +NETNS_START_TCPDUMP([vm2], [-n -i any -nnleX], [vm2])
> >
> >   for i in `seq 1 40`;do
> >       NS_CHECK_EXEC([vm2], [ip addr add 228.1.$i.1 dev vm2 autojoin &],
> [0])
> > @@ -8341,7 +8339,7 @@ ovn-sbctl list multicast_group
> >   NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 228.1.1.1], [ignore],
> [ignore])
> >
> >   OVS_WAIT_UNTIL([
> > -    requests=`grep "ICMP echo request" -c vm2.pcap`
> > +    requests=`grep "ICMP echo request" -c vm2.tcpdump`
> >       test "${requests}" -ge "3"
> >   ])
> >
> > @@ -8748,16 +8746,13 @@ test_related_traffic() {
> >
> >       check ovs-appctl dpctl/flush-conntrack
> >
> > -    NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -w client.pcap
> 2>client_err], [tcpdump0.pid])
> > -    NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -w server.pcap
> 2>server_err], [tcpdump1.pid])
> > +    NETNS_START_TCPDUMP([client], [-U -i client -w client.pcap],
> [tcpdump0])
> > +    NETNS_START_TCPDUMP([server], [-U -i server -w server.pcap],
> [tcpdump1])
> >
> >       # Setup a dummy UDP listeners so we don't get "port unreachable".
> >       NETNS_DAEMONIZE([client], [nc -l -u 1], [nc0.pid])
> >       NETNS_DAEMONIZE([server], [nc -l -u 2], [nc1.pid])
> >
> > -    OVS_WAIT_UNTIL([grep "listening" client_err])
> > -    OVS_WAIT_UNTIL([grep "listening" server_err])
> > -
> >       # Send UDP client -> server
> >       check ovs-ofctl packet-out br-int
> "in_port=ovs-client,packet=$client_udp,actions=resubmit(,0)"
> >
>
>
Thanks,
Ales

-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA <https://www.redhat.com>

[email protected]
<https://red.ht/sig>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to