Skip to content

Commit

Permalink
selftests: forwarding: multiple instances in tcpdump helper
Browse files Browse the repository at this point in the history
Extend tcpdump_start() & C:o to handle multiple instances.  Useful when
observing bridge operation, e.g., unicast learning/flooding, and any
case of multicast distribution (to these ports but not that one ...).

This means the interface argument is now a mandatory argument to all
tcpdump_*() functions, hence the changes to the ocelot flower test.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Joachim Wiberg authored and David S. Miller committed Apr 23, 2022
1 parent fe32dff commit 6182c5c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 19 deletions.
24 changes: 12 additions & 12 deletions tools/testing/selftests/drivers/net/ocelot/tc_flower_chains.sh
Original file line number Diff line number Diff line change
Expand Up @@ -215,15 +215,15 @@ test_vlan_pop()

sleep 1

tcpdump_stop
tcpdump_stop $eth2

if tcpdump_show | grep -q "$eth3_mac > $eth2_mac, ethertype IPv4"; then
if tcpdump_show $eth2 | grep -q "$eth3_mac > $eth2_mac, ethertype IPv4"; then
echo "OK"
else
echo "FAIL"
fi

tcpdump_cleanup
tcpdump_cleanup $eth2
}

test_vlan_push()
Expand All @@ -236,15 +236,15 @@ test_vlan_push()

sleep 1

tcpdump_stop
tcpdump_stop $eth3.100

if tcpdump_show | grep -q "$eth2_mac > $eth3_mac"; then
if tcpdump_show $eth3.100 | grep -q "$eth2_mac > $eth3_mac"; then
echo "OK"
else
echo "FAIL"
fi

tcpdump_cleanup
tcpdump_cleanup $eth3.100
}

test_vlan_ingress_modify()
Expand All @@ -267,15 +267,15 @@ test_vlan_ingress_modify()

sleep 1

tcpdump_stop
tcpdump_stop $eth2

if tcpdump_show | grep -q "$eth3_mac > $eth2_mac, .* vlan 300"; then
if tcpdump_show $eth2 | grep -q "$eth3_mac > $eth2_mac, .* vlan 300"; then
echo "OK"
else
echo "FAIL"
fi

tcpdump_cleanup
tcpdump_cleanup $eth2

tc filter del dev $eth0 ingress chain $(IS1 2) pref 3

Expand Down Expand Up @@ -305,15 +305,15 @@ test_vlan_egress_modify()

sleep 1

tcpdump_stop
tcpdump_stop $eth2

if tcpdump_show | grep -q "$eth3_mac > $eth2_mac, .* vlan 300"; then
if tcpdump_show $eth2 | grep -q "$eth3_mac > $eth2_mac, .* vlan 300"; then
echo "OK"
else
echo "FAIL"
fi

tcpdump_cleanup
tcpdump_cleanup $eth2

tc filter del dev $eth1 egress chain $(ES0) pref 3
tc qdisc del dev $eth1 clsact
Expand Down
26 changes: 19 additions & 7 deletions tools/testing/selftests/net/forwarding/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1386,13 +1386,17 @@ stop_traffic()
{ kill %% && wait %%; } 2>/dev/null
}

declare -A cappid
declare -A capfile
declare -A capout

tcpdump_start()
{
local if_name=$1; shift
local ns=$1; shift

capfile=$(mktemp)
capout=$(mktemp)
capfile[$if_name]=$(mktemp)
capout[$if_name]=$(mktemp)

if [ -z $ns ]; then
ns_cmd=""
Expand All @@ -1407,26 +1411,34 @@ tcpdump_start()
fi

$ns_cmd tcpdump $TCPDUMP_EXTRA_FLAGS -e -n -Q in -i $if_name \
-s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&1 &
cappid=$!
-s 65535 -B 32768 $capuser -w ${capfile[$if_name]} \
> "${capout[$if_name]}" 2>&1 &
cappid[$if_name]=$!

sleep 1
}

tcpdump_stop()
{
$ns_cmd kill $cappid
local if_name=$1
local pid=${cappid[$if_name]}

$ns_cmd kill "$pid" && wait "$pid"
sleep 1
}

tcpdump_cleanup()
{
rm $capfile $capout
local if_name=$1

rm ${capfile[$if_name]} ${capout[$if_name]}
}

tcpdump_show()
{
tcpdump -e -n -r $capfile 2>&1
local if_name=$1

tcpdump -e -n -r ${capfile[$if_name]} 2>&1
}

# return 0 if the packet wasn't seen on host2_if or 1 if it was
Expand Down

0 comments on commit 6182c5c

Please sign in to comment.