Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: mptcp: listener test for in-kernel PM

This patch adds test coverage for listening sockets created by the
in-kernel path manager in mptcp_join.sh.

It adds the listener event checking in the existing "remove single
address with port" test. The output looks like this:

003 remove single address with port syn[ ok ] - synack[ ok ] - ack[ ok ]
add[ ok ] - echo [ ok ] - pt [ ok ]
syn[ ok ] - synack[ ok ] - ack[ ok ]
syn[ ok ] - ack [ ok ]
rm [ ok ] - rmsf [ ok ] invert
CREATE_LISTENER 10.0.2.1:10100[ ok ]
CLOSE_LISTENER 10.0.2.1:10100 [ ok ]

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Geliang Tang and committed by
Jakub Kicinski
178d0232 a3735625

+57 -1
+57 -1
tools/testing/selftests/net/mptcp/mptcp_join.sh
··· 2513 2513 fi 2514 2514 } 2515 2515 2516 + LISTENER_CREATED=15 #MPTCP_EVENT_LISTENER_CREATED 2517 + LISTENER_CLOSED=16 #MPTCP_EVENT_LISTENER_CLOSED 2518 + 2519 + AF_INET=2 2520 + AF_INET6=10 2521 + 2522 + verify_listener_events() 2523 + { 2524 + local evt=$1 2525 + local e_type=$2 2526 + local e_family=$3 2527 + local e_saddr=$4 2528 + local e_sport=$5 2529 + local type 2530 + local family 2531 + local saddr 2532 + local sport 2533 + 2534 + if [ $e_type = $LISTENER_CREATED ]; then 2535 + stdbuf -o0 -e0 printf "\t\t\t\t\t CREATE_LISTENER %s:%s"\ 2536 + $e_saddr $e_sport 2537 + elif [ $e_type = $LISTENER_CLOSED ]; then 2538 + stdbuf -o0 -e0 printf "\t\t\t\t\t CLOSE_LISTENER %s:%s "\ 2539 + $e_saddr $e_sport 2540 + fi 2541 + 2542 + type=$(grep "type:$e_type," $evt | 2543 + sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q') 2544 + family=$(grep "type:$e_type," $evt | 2545 + sed --unbuffered -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q') 2546 + sport=$(grep "type:$e_type," $evt | 2547 + sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q') 2548 + if [ $family ] && [ $family = $AF_INET6 ]; then 2549 + saddr=$(grep "type:$e_type," $evt | 2550 + sed --unbuffered -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q') 2551 + else 2552 + saddr=$(grep "type:$e_type," $evt | 2553 + sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q') 2554 + fi 2555 + 2556 + if [ $type ] && [ $type = $e_type ] && 2557 + [ $family ] && [ $family = $e_family ] && 2558 + [ $saddr ] && [ $saddr = $e_saddr ] && 2559 + [ $sport ] && [ $sport = $e_sport ]; then 2560 + stdbuf -o0 -e0 printf "[ ok ]\n" 2561 + return 0 2562 + fi 2563 + fail_test 2564 + stdbuf -o0 -e0 printf "[fail]\n" 2565 + } 2566 + 2516 2567 add_addr_ports_tests() 2517 2568 { 2518 2569 # signal address with port ··· 2588 2537 fi 2589 2538 2590 2539 # single address with port, remove 2591 - if reset "remove single address with port"; then 2540 + # pm listener events 2541 + if reset_with_events "remove single address with port"; then 2592 2542 pm_nl_set_limits $ns1 0 1 2593 2543 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 2594 2544 pm_nl_set_limits $ns2 1 1 ··· 2597 2545 chk_join_nr 1 1 1 2598 2546 chk_add_nr 1 1 1 2599 2547 chk_rm_nr 1 1 invert 2548 + 2549 + verify_listener_events $evts_ns1 $LISTENER_CREATED $AF_INET 10.0.2.1 10100 2550 + verify_listener_events $evts_ns1 $LISTENER_CLOSED $AF_INET 10.0.2.1 10100 2551 + kill_events_pids 2600 2552 fi 2601 2553 2602 2554 # subflow and signal with port, remove