Commit 6182c5c5 authored by Joachim Wiberg's avatar Joachim Wiberg Committed by David S. Miller

selftests: forwarding: multiple instances in tcpdump helper

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: default avatarJoachim Wiberg <troglobit@gmail.com>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fe32dffd
...@@ -215,15 +215,15 @@ test_vlan_pop() ...@@ -215,15 +215,15 @@ test_vlan_pop()
sleep 1 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" echo "OK"
else else
echo "FAIL" echo "FAIL"
fi fi
tcpdump_cleanup tcpdump_cleanup $eth2
} }
test_vlan_push() test_vlan_push()
...@@ -236,15 +236,15 @@ test_vlan_push() ...@@ -236,15 +236,15 @@ test_vlan_push()
sleep 1 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" echo "OK"
else else
echo "FAIL" echo "FAIL"
fi fi
tcpdump_cleanup tcpdump_cleanup $eth3.100
} }
test_vlan_ingress_modify() test_vlan_ingress_modify()
...@@ -267,15 +267,15 @@ test_vlan_ingress_modify() ...@@ -267,15 +267,15 @@ test_vlan_ingress_modify()
sleep 1 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" echo "OK"
else else
echo "FAIL" echo "FAIL"
fi fi
tcpdump_cleanup tcpdump_cleanup $eth2
tc filter del dev $eth0 ingress chain $(IS1 2) pref 3 tc filter del dev $eth0 ingress chain $(IS1 2) pref 3
...@@ -305,15 +305,15 @@ test_vlan_egress_modify() ...@@ -305,15 +305,15 @@ test_vlan_egress_modify()
sleep 1 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" echo "OK"
else else
echo "FAIL" echo "FAIL"
fi fi
tcpdump_cleanup tcpdump_cleanup $eth2
tc filter del dev $eth1 egress chain $(ES0) pref 3 tc filter del dev $eth1 egress chain $(ES0) pref 3
tc qdisc del dev $eth1 clsact tc qdisc del dev $eth1 clsact
......
...@@ -1386,13 +1386,17 @@ stop_traffic() ...@@ -1386,13 +1386,17 @@ stop_traffic()
{ kill %% && wait %%; } 2>/dev/null { kill %% && wait %%; } 2>/dev/null
} }
declare -A cappid
declare -A capfile
declare -A capout
tcpdump_start() tcpdump_start()
{ {
local if_name=$1; shift local if_name=$1; shift
local ns=$1; shift local ns=$1; shift
capfile=$(mktemp) capfile[$if_name]=$(mktemp)
capout=$(mktemp) capout[$if_name]=$(mktemp)
if [ -z $ns ]; then if [ -z $ns ]; then
ns_cmd="" ns_cmd=""
...@@ -1407,26 +1411,34 @@ tcpdump_start() ...@@ -1407,26 +1411,34 @@ tcpdump_start()
fi fi
$ns_cmd tcpdump $TCPDUMP_EXTRA_FLAGS -e -n -Q in -i $if_name \ $ns_cmd tcpdump $TCPDUMP_EXTRA_FLAGS -e -n -Q in -i $if_name \
-s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&1 & -s 65535 -B 32768 $capuser -w ${capfile[$if_name]} \
cappid=$! > "${capout[$if_name]}" 2>&1 &
cappid[$if_name]=$!
sleep 1 sleep 1
} }
tcpdump_stop() tcpdump_stop()
{ {
$ns_cmd kill $cappid local if_name=$1
local pid=${cappid[$if_name]}
$ns_cmd kill "$pid" && wait "$pid"
sleep 1 sleep 1
} }
tcpdump_cleanup() tcpdump_cleanup()
{ {
rm $capfile $capout local if_name=$1
rm ${capfile[$if_name]} ${capout[$if_name]}
} }
tcpdump_show() 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 # return 0 if the packet wasn't seen on host2_if or 1 if it was
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment