mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-20 09:34:44 +08:00
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: 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>
This commit is contained in:
parent
fe32dffdcd
commit
6182c5c509
@ -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()
|
||||
@ -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()
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
@ -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=""
|
||||
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user