selftests: mptcp: add wrapper for showing addrs
This patch implemented a new function named pm_nl_show_endpoints(), wrapped the PM netlink commands 'ip mptcp endpoint show' and 'pm_nl_ctl dump' in it, used a new argument 'ip_mptcp' to choose which one to use to show all the PM endpoints. Used this wrapper in do_transfer() instead of using the pm_nl_ctl commands directly. The original 'pos+=5' in the remoing tests only works for the output of 'pm_nl_ctl show': id 1 flags subflow 10.0.1.1 It doesn't work for the output of 'ip mptcp endpoint show': 10.0.1.1 id 1 subflow So implemented a more flexible approach to get the address ID from the PM dump output to fit for both commands. Signed-off-by: Geliang Tang <geliang.tang@suse.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
34aa6e3bcc
commit
dda61b3dbe
@ -365,6 +365,17 @@ pm_nl_flush_endpoint()
|
||||
fi
|
||||
}
|
||||
|
||||
pm_nl_show_endpoints()
|
||||
{
|
||||
local ns=$1
|
||||
|
||||
if [ $ip_mptcp -eq 1 ]; then
|
||||
ip -n $ns mptcp endpoint show
|
||||
else
|
||||
ip netns exec $ns ./pm_nl_ctl dump
|
||||
fi
|
||||
}
|
||||
|
||||
do_transfer()
|
||||
{
|
||||
listener_ns="$1"
|
||||
@ -472,20 +483,25 @@ do_transfer()
|
||||
elif [ $addr_nr_ns1 -lt 0 ]; then
|
||||
let rm_nr_ns1=-addr_nr_ns1
|
||||
if [ $rm_nr_ns1 -lt 8 ]; then
|
||||
counter=1
|
||||
pos=1
|
||||
dump=(`ip netns exec ${listener_ns} ./pm_nl_ctl dump`)
|
||||
if [ ${#dump[@]} -gt 0 ]; then
|
||||
while [ $counter -le $rm_nr_ns1 ]
|
||||
do
|
||||
id=${dump[$pos]}
|
||||
rm_addr=$(rm_addr_count ${connector_ns})
|
||||
pm_nl_del_endpoint ${listener_ns} $id
|
||||
wait_rm_addr ${connector_ns} ${rm_addr}
|
||||
let counter+=1
|
||||
let pos+=5
|
||||
counter=0
|
||||
pm_nl_show_endpoints ${listener_ns} | while read line; do
|
||||
local arr=($line)
|
||||
local nr=0
|
||||
|
||||
for i in ${arr[@]}; do
|
||||
if [ $i = "id" ]; then
|
||||
if [ $counter -eq $rm_nr_ns1 ]; then
|
||||
break
|
||||
fi
|
||||
id=${arr[$nr+1]}
|
||||
rm_addr=$(rm_addr_count ${connector_ns})
|
||||
pm_nl_del_endpoint ${listener_ns} $id
|
||||
wait_rm_addr ${connector_ns} ${rm_addr}
|
||||
let counter+=1
|
||||
fi
|
||||
let nr+=1
|
||||
done
|
||||
fi
|
||||
done
|
||||
elif [ $rm_nr_ns1 -eq 8 ]; then
|
||||
pm_nl_flush_endpoint ${listener_ns}
|
||||
elif [ $rm_nr_ns1 -eq 9 ]; then
|
||||
@ -520,21 +536,27 @@ do_transfer()
|
||||
elif [ $addr_nr_ns2 -lt 0 ]; then
|
||||
let rm_nr_ns2=-addr_nr_ns2
|
||||
if [ $rm_nr_ns2 -lt 8 ]; then
|
||||
counter=1
|
||||
pos=1
|
||||
dump=(`ip netns exec ${connector_ns} ./pm_nl_ctl dump`)
|
||||
if [ ${#dump[@]} -gt 0 ]; then
|
||||
while [ $counter -le $rm_nr_ns2 ]
|
||||
do
|
||||
# rm_addr are serialized, allow the previous one to complete
|
||||
id=${dump[$pos]}
|
||||
rm_addr=$(rm_addr_count ${listener_ns})
|
||||
pm_nl_del_endpoint ${connector_ns} $id
|
||||
wait_rm_addr ${listener_ns} ${rm_addr}
|
||||
let counter+=1
|
||||
let pos+=5
|
||||
counter=0
|
||||
pm_nl_show_endpoints ${connector_ns} | while read line; do
|
||||
local arr=($line)
|
||||
local nr=0
|
||||
|
||||
for i in ${arr[@]}; do
|
||||
if [ $i = "id" ]; then
|
||||
if [ $counter -eq $rm_nr_ns2 ]; then
|
||||
break
|
||||
fi
|
||||
# rm_addr are serialized, allow the previous one to
|
||||
# complete
|
||||
id=${arr[$nr+1]}
|
||||
rm_addr=$(rm_addr_count ${listener_ns})
|
||||
pm_nl_del_endpoint ${connector_ns} $id
|
||||
wait_rm_addr ${listener_ns} ${rm_addr}
|
||||
let counter+=1
|
||||
fi
|
||||
let nr+=1
|
||||
done
|
||||
fi
|
||||
done
|
||||
elif [ $rm_nr_ns2 -eq 8 ]; then
|
||||
pm_nl_flush_endpoint ${connector_ns}
|
||||
elif [ $rm_nr_ns2 -eq 9 ]; then
|
||||
@ -551,7 +573,7 @@ do_transfer()
|
||||
if [ ! -z $sflags ]; then
|
||||
sleep 1
|
||||
for netns in "$ns1" "$ns2"; do
|
||||
ip netns exec $netns ./pm_nl_ctl dump | while read line; do
|
||||
pm_nl_show_endpoints $netns | while read line; do
|
||||
local arr=($line)
|
||||
local addr
|
||||
local port=0
|
||||
|
Loading…
Reference in New Issue
Block a user