From: Masatake YAMATO Date: Thu, 7 May 2026 21:40:10 +0000 (+0900) Subject: tests: (lsfd/mkfds-udp*) make UDPLite related test cases skippable X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98a242e556d9d68dcd4cdd3a1949878e016eddb7;p=thirdparty%2Futil-linux.git tests: (lsfd/mkfds-udp*) make UDPLite related test cases skippable Signed-off-by: Masatake YAMATO --- diff --git a/tests/expected/lsfd/mkfds-udp b/tests/expected/lsfd/mkfds-udp index d3ca906e0..831f50b97 100644 --- a/tests/expected/lsfd/mkfds-udp +++ b/tests/expected/lsfd/mkfds-udp @@ -10,15 +10,3 @@ LADDR/LPORT pattern match: OK 3 UDP SOCK state=close laddr=127.0.0.1:56789 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:56789 56789 0.0.0.0:0 0 4 UDP SOCK state=close laddr=127.0.0.1:45678 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:45678 45678 0.0.0.0:0 0 ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDP.LADDR,UDP.LPORT,UDP.RADDR,UDP.RPORT: 0 -3 UDP-Lite SOCK state=close laddr=127.0.0.1:56789 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:56789 56789 0.0.0.0:0 0 -4 UDP-Lite SOCK state=established laddr=127.0.0.1:45678 raddr=127.0.0.1:56789 established dgram 0 127.0.0.1 127.0.0.1 127.0.0.1:45678 45678 127.0.0.1:56789 56789 -ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 -3 UDP-Lite SOCK 0 -ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 -NAME pattern match: OK -4 UDP-Lite SOCK established dgram 0 127.0.0.1 127.0.0.1 127.0.0.1:56789 56789 -ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.RADDR,UDPLite.RPORT: 0 -LADDR/LPORT pattern match: OK -3 UDP-Lite SOCK state=close laddr=127.0.0.1:56789 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:56789 56789 0.0.0.0:0 0 -4 UDP-Lite SOCK state=close laddr=127.0.0.1:45678 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:45678 45678 0.0.0.0:0 0 -ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 diff --git a/tests/expected/lsfd/mkfds-udp-lite b/tests/expected/lsfd/mkfds-udp-lite new file mode 100644 index 000000000..e88b6d850 --- /dev/null +++ b/tests/expected/lsfd/mkfds-udp-lite @@ -0,0 +1,12 @@ +3 UDP-Lite SOCK state=close laddr=127.0.0.1:56789 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:56789 56789 0.0.0.0:0 0 +4 UDP-Lite SOCK state=established laddr=127.0.0.1:45678 raddr=127.0.0.1:56789 established dgram 0 127.0.0.1 127.0.0.1 127.0.0.1:45678 45678 127.0.0.1:56789 56789 +ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 +3 UDP-Lite SOCK 0 +ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 +NAME pattern match: OK +4 UDP-Lite SOCK established dgram 0 127.0.0.1 127.0.0.1 127.0.0.1:56789 56789 +ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.RADDR,UDPLite.RPORT: 0 +LADDR/LPORT pattern match: OK +3 UDP-Lite SOCK state=close laddr=127.0.0.1:56789 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:56789 56789 0.0.0.0:0 0 +4 UDP-Lite SOCK state=close laddr=127.0.0.1:45678 close dgram 0 127.0.0.1 0.0.0.0 127.0.0.1:45678 45678 0.0.0.0:0 0 +ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 diff --git a/tests/expected/lsfd/mkfds-udp6 b/tests/expected/lsfd/mkfds-udp6 index cbf44d047..99b365b51 100644 --- a/tests/expected/lsfd/mkfds-udp6 +++ b/tests/expected/lsfd/mkfds-udp6 @@ -10,15 +10,3 @@ LADDR/LPORT pattern match: OK 3 UDPv6 SOCK state=close laddr=[::1]:56789 close dgram 0 ::1 :: [::1]:56789 56789 [::]:0 0 4 UDPv6 SOCK state=close laddr=[::1]:45678 close dgram 0 ::1 :: [::1]:45678 45678 [::]:0 0 ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDP.LADDR,UDP.LPORT,UDP.RADDR,UDP.RPORT: 0 -3 UDPLITEv6 SOCK state=close laddr=[::1]:56789 close dgram 0 ::1 :: [::1]:56789 56789 [::]:0 0 -4 UDPLITEv6 SOCK state=established laddr=[::1]:45678 raddr=[::1]:56789 established dgram 0 ::1 ::1 [::1]:45678 45678 [::1]:56789 56789 -ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 -3 UDPLITEv6 SOCK 0 -ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 -NAME pattern match: OK -4 UDPLITEv6 SOCK established dgram 0 ::1 ::1 [::1]:56789 56789 -ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.RADDR,UDPLite.RPORT: 0 -LADDR/LPORT pattern match: OK -3 UDPLITEv6 SOCK state=close laddr=[::1]:56789 close dgram 0 ::1 :: [::1]:56789 56789 [::]:0 0 -4 UDPLITEv6 SOCK state=close laddr=[::1]:45678 close dgram 0 ::1 :: [::1]:45678 45678 [::]:0 0 -ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 diff --git a/tests/expected/lsfd/mkfds-udp6-lite b/tests/expected/lsfd/mkfds-udp6-lite new file mode 100644 index 000000000..28bccc1cb --- /dev/null +++ b/tests/expected/lsfd/mkfds-udp6-lite @@ -0,0 +1,12 @@ +3 UDPLITEv6 SOCK state=close laddr=[::1]:56789 close dgram 0 ::1 :: [::1]:56789 56789 [::]:0 0 +4 UDPLITEv6 SOCK state=established laddr=[::1]:45678 raddr=[::1]:56789 established dgram 0 ::1 ::1 [::1]:45678 45678 [::1]:56789 56789 +ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 +3 UDPLITEv6 SOCK 0 +ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 +NAME pattern match: OK +4 UDPLITEv6 SOCK established dgram 0 ::1 ::1 [::1]:56789 56789 +ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.RADDR,UDPLite.RPORT: 0 +LADDR/LPORT pattern match: OK +3 UDPLITEv6 SOCK state=close laddr=[::1]:56789 close dgram 0 ::1 :: [::1]:56789 56789 [::]:0 0 +4 UDPLITEv6 SOCK state=close laddr=[::1]:45678 close dgram 0 ::1 :: [::1]:45678 45678 [::]:0 0 +ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,UDPLite.LADDR,UDPLite.LPORT,UDPLite.RADDR,UDPLite.RPORT: 0 diff --git a/tests/ts/lsfd/mkfds-udp b/tests/ts/lsfd/mkfds-udp index 2b70b3081..eb6d45af7 100755 --- a/tests/ts/lsfd/mkfds-udp +++ b/tests/ts/lsfd/mkfds-udp @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (C) 2022 Masatake YAMATO +# Copyright (C) 2022,2026 Masatake YAMATO # # This file is part of util-linux. # @@ -15,124 +15,13 @@ # GNU General Public License for more details. # TS_TOPDIR="${0%/*}/../.." -TS_DESC="UDP and UDP-Lite sockets" +TS_DESC="UDP sockets" . "$TS_TOPDIR"/functions.sh -ts_init "$*" - -ts_check_test_command "$TS_CMD_LSFD" -ts_check_test_command "$TS_HELPER_MKFDS" -ts_check_native_byteorder - -ts_cd "$TS_OUTDIR" - -PID= -FDS=3 -FDC=4 -EXPR=( - '(TYPE == "UDP") and (FD >= 3) and (FD <= 4)' - '(TYPE == "UDP-Lite") and (FD >= 3) and (FD <= 4)' -) -EXPR_server=( - '(TYPE == "UDP") and (FD == 3)' - '(TYPE == "UDP-Lite") and (FD == 3)' -) -EXPR_client=( - '(TYPE == "UDP") and (FD == 4)' - '(TYPE == "UDP-Lite") and (FD == 4)' -) -COLNS=( - 'UDP' - 'UDPLite' -) -NAME= -LADDR= -LPORT= - -for lite in 0 1; do - coproc MKFDS { "$TS_HELPER_MKFDS" udp $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR[$lite]}" - echo "ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? - - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" - - coproc MKFDS { "$TS_HELPER_MKFDS" udp $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - server-do-bind=no \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR_server[$lite]}" - echo "ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? - NAME=$(${TS_CMD_LSFD} -n \ - --raw \ - -o NAME \ - -p "${PID}" -Q "${EXPR_server[$lite]}") - if [[ "$NAME" =~ ^socket:\[[[:digit:]]+\]$ ]]; then - echo "NAME pattern match: OK" - else - echo "NAME pattern match: FAILED (NAME=$NAME)" - fi - - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" - - coproc MKFDS { "$TS_HELPER_MKFDS" udp $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - client-do-bind=no \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR_client[$lite]}" - echo "ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? - - LADDR=$(${TS_CMD_LSFD} -n \ - --raw \ - -o ${COLNS[$lite]}.LADDR \ - -p "${PID}" -Q "${EXPR_client[$lite]}") - LPORT=$(${TS_CMD_LSFD} -n \ - --raw \ - -o ${COLNS[$lite]}.LPORT \ - -p "${PID}" -Q "${EXPR_client[$lite]}") - - if [[ 127.0.0.1:$LPORT == ${LADDR} ]]; then - echo "LADDR/LPORT pattern match: OK" - else - echo "LADDR/LPORT pattern match: FAILED (LADDR=$LADDR, LPORT=$LPORT)" - fi - - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" - - coproc MKFDS { "$TS_HELPER_MKFDS" udp $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - client-do-connect=no \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR[$lite]}" - echo "ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET.LADDR,INET.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? +ts_init "$*" - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" -done > "$TS_OUTPUT" 2>&1 +. "$TS_SELF/udp-common.bash" +udp_common 4 0 ts_finalize diff --git a/tests/ts/lsfd/mkfds-udp-lite b/tests/ts/lsfd/mkfds-udp-lite new file mode 100755 index 000000000..40bd539bd --- /dev/null +++ b/tests/ts/lsfd/mkfds-udp-lite @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2022,2026 Masatake YAMATO +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +TS_TOPDIR="${0%/*}/../.." +TS_DESC="UDP-Lite sockets" + +. "$TS_TOPDIR"/functions.sh + +ts_init "$*" + +. "$TS_SELF/lsfd-functions.bash" +lsfd_check_udp_lite 4 + +. "$TS_SELF/udp-common.bash" +udp_common 4 1 + +ts_finalize diff --git a/tests/ts/lsfd/mkfds-udp6 b/tests/ts/lsfd/mkfds-udp6 index 59163d6b1..5bc9dd357 100755 --- a/tests/ts/lsfd/mkfds-udp6 +++ b/tests/ts/lsfd/mkfds-udp6 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (C) 2023 Masatake YAMATO +# Copyright (C) 2023,2026 Masatake YAMATO # # This file is part of util-linux. # @@ -15,126 +15,13 @@ # GNU General Public License for more details. # TS_TOPDIR="${0%/*}/../.." -TS_DESC="UDP6 and UDPLITEv6 sockets" +TS_DESC="UDP6 sockets" . "$TS_TOPDIR"/functions.sh -ts_init "$*" - -ts_check_test_command "$TS_CMD_LSFD" -ts_check_test_command "$TS_HELPER_MKFDS" -ts_check_native_byteorder -ts_check_ipv6 -ts_skip_docker - -ts_cd "$TS_OUTDIR" - -PID= -FDS=3 -FDC=4 -EXPR=( - '(TYPE == "UDPv6") and (FD >= 3) and (FD <= 4)' - '(TYPE == "UDPLITEv6") and (FD >= 3) and (FD <= 4)' -) -EXPR_server=( - '(TYPE == "UDPv6") and (FD == 3)' - '(TYPE == "UDPLITEv6") and (FD == 3)' -) -EXPR_client=( - '(TYPE == "UDPv6") and (FD == 4)' - '(TYPE == "UDPLITEv6") and (FD == 4)' -) -COLNS=( - 'UDP' - 'UDPLite' - ) -NAME= -LADDR= -LPORT= - -for lite in 0 1; do - coproc MKFDS { "$TS_HELPER_MKFDS" udp6 $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR[$lite]}" - echo "ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? - - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" - - coproc MKFDS { "$TS_HELPER_MKFDS" udp6 $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - server-do-bind=no \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR_server[$lite]}" - echo "ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? - NAME=$(${TS_CMD_LSFD} -n \ - --raw \ - -o NAME \ - -p "${PID}" -Q "${EXPR_server[$lite]}") - if [[ "$NAME" =~ ^socket:\[[[:digit:]]+\]$ ]]; then - echo "NAME pattern match: OK" - else - echo "NAME pattern match: FAILED (NAME=$NAME)" - fi - - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" - - coproc MKFDS { "$TS_HELPER_MKFDS" udp6 $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - client-do-bind=no \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR_client[$lite]}" - echo "ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? - - LADDR=$(${TS_CMD_LSFD} -n \ - --raw \ - -o ${COLNS[$lite]}.LADDR \ - -p "${PID}" -Q "${EXPR_client[$lite]}") - LPORT=$(${TS_CMD_LSFD} -n \ - --raw \ - -o ${COLNS[$lite]}.LPORT \ - -p "${PID}" -Q "${EXPR_client[$lite]}") - - if [[ '[::1]':$LPORT == "${LADDR}" ]]; then - echo "LADDR/LPORT pattern match: OK" - else - echo "LADDR/LPORT pattern match: FAILED (LADDR=$LADDR, LPORT=$LPORT)" - fi - - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" - - coproc MKFDS { "$TS_HELPER_MKFDS" udp6 $FDS $FDC \ - server-port=56789 \ - client-port=45678 \ - client-do-connect=no \ - lite=$lite; } - if read -r -u "${MKFDS[0]}" PID; then - ${TS_CMD_LSFD} -n \ - -o ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ - -p "${PID}" -Q "${EXPR[$lite]}" - echo "ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET6.LADDR,INET6.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? +ts_init "$*" - echo DONE >&"${MKFDS[1]}" - fi - wait "${MKFDS_PID}" -done > "$TS_OUTPUT" 2>&1 +. "$TS_SELF/udp-common.bash" +udp_common 6 0 ts_finalize diff --git a/tests/ts/lsfd/mkfds-udp6-lite b/tests/ts/lsfd/mkfds-udp6-lite new file mode 100755 index 000000000..4c821d67b --- /dev/null +++ b/tests/ts/lsfd/mkfds-udp6-lite @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2023,2026 Masatake YAMATO +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +TS_TOPDIR="${0%/*}/../.." +TS_DESC="UDPLITEv6 sockets" + +. "$TS_TOPDIR"/functions.sh + +ts_init "$*" + +. "$TS_SELF/lsfd-functions.bash" +lsfd_check_udp_lite 6 + +. "$TS_SELF/udp-common.bash" +udp_common 6 1 + +ts_finalize diff --git a/tests/ts/lsfd/udp-common.bash b/tests/ts/lsfd/udp-common.bash new file mode 100644 index 000000000..6e4ee1b24 --- /dev/null +++ b/tests/ts/lsfd/udp-common.bash @@ -0,0 +1,152 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2022,2026 Masatake YAMATO +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +ts_check_test_command "$TS_CMD_LSFD" +ts_check_test_command "$TS_HELPER_MKFDS" +ts_check_native_byteorder + +udp_common() +{ + local ip=$1 + local lite=$2 + local index=$lite + + if [[ "$ip" == 4 ]]; then + ip= + else + ts_check_ipv6 + ts_skip_docker + + index=$((index + 2)) + fi + + ts_cd "$TS_OUTDIR" + + local PID= + local FDS=3 + local FDC=4 + local -a EXPR=( + '(TYPE == "UDP") and (FD >= 3) and (FD <= 4)' + '(TYPE == "UDP-Lite") and (FD >= 3) and (FD <= 4)' + '(TYPE == "UDPv6") and (FD >= 3) and (FD <= 4)' + '(TYPE == "UDPLITEv6") and (FD >= 3) and (FD <= 4)' + ) + local -a EXPR_server=( + '(TYPE == "UDP") and (FD == 3)' + '(TYPE == "UDP-Lite") and (FD == 3)' + '(TYPE == "UDPv6") and (FD == 3)' + '(TYPE == "UDPLITEv6") and (FD == 3)' + ) + local -a EXPR_client=( + '(TYPE == "UDP") and (FD == 4)' + '(TYPE == "UDP-Lite") and (FD == 4)' + '(TYPE == "UDPv6") and (FD == 4)' + '(TYPE == "UDPLITEv6") and (FD == 4)' + ) + local -a COLNS=( + 'UDP' + 'UDPLite' + ) + local NAME= + local LADDR= + local LPORT= + + coproc MKFDS { "$TS_HELPER_MKFDS" udp$ip $FDS $FDC \ + server-port=56789 \ + client-port=45678 \ + lite=$lite; } + if read -r -u "${MKFDS[0]}" PID; then + ${TS_CMD_LSFD} -n \ + -o ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ + -p "${PID}" -Q "${EXPR[$index]}" + echo "ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? + + echo DONE >&"${MKFDS[1]}" + fi + wait "${MKFDS_PID}" + + coproc MKFDS { "$TS_HELPER_MKFDS" udp$ip $FDS $FDC \ + server-port=56789 \ + client-port=45678 \ + server-do-bind=no \ + lite=$lite; } + if read -r -u "${MKFDS[0]}" PID; then + ${TS_CMD_LSFD} -n \ + -o ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ + -p "${PID}" -Q "${EXPR_server[$index]}" + echo "ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? + + NAME=$(${TS_CMD_LSFD} -n \ + --raw \ + -o NAME \ + -p "${PID}" -Q "${EXPR_server[$index]}") + if [[ "$NAME" =~ ^socket:\[[[:digit:]]+\]$ ]]; then + echo "NAME pattern match: OK" + else + echo "NAME pattern match: FAILED (NAME=$NAME)" + fi + + echo DONE >&"${MKFDS[1]}" + fi + wait "${MKFDS_PID}" + + coproc MKFDS { "$TS_HELPER_MKFDS" udp$ip $FDS $FDC \ + server-port=56789 \ + client-port=45678 \ + client-do-bind=no \ + lite=$lite; } + if read -r -u "${MKFDS[0]}" PID; then + ${TS_CMD_LSFD} -n \ + -o ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ + -p "${PID}" -Q "${EXPR_client[$index]}" + echo "ASSOC,TYPE,STTYPE,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? + + LADDR=$(${TS_CMD_LSFD} -n \ + --raw \ + -o ${COLNS[$lite]}.LADDR \ + -p "${PID}" -Q "${EXPR_client[$index]}") + LPORT=$(${TS_CMD_LSFD} -n \ + --raw \ + -o ${COLNS[$lite]}.LPORT \ + -p "${PID}" -Q "${EXPR_client[$index]}") + + if [[ "$ip" == "" && 127.0.0.1:$LPORT == "${LADDR}" ]]; then + echo "LADDR/LPORT pattern match: OK" + elif [[ "$ip" == 6 && '[::1]':$LPORT == "${LADDR}" ]]; then + echo "LADDR/LPORT pattern match: OK" + else + echo "LADDR/LPORT pattern match: FAILED (LADDR=$LADDR, LPORT=$LPORT)" + fi + + echo DONE >&"${MKFDS[1]}" + fi + wait "${MKFDS_PID}" + + coproc MKFDS { "$TS_HELPER_MKFDS" udp$ip $FDS $FDC \ + server-port=56789 \ + client-port=45678 \ + client-do-connect=no \ + lite=$lite; } + if read -r -u "${MKFDS[0]}" PID; then + ${TS_CMD_LSFD} -n \ + -o ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT \ + -p "${PID}" -Q "${EXPR[$index]}" + echo "ASSOC,TYPE,STTYPE,NAME,SOCK.STATE,SOCK.TYPE,SOCK.LISTENING,INET$ip.LADDR,INET$ip.RADDR,${COLNS[$lite]}.LADDR,${COLNS[$lite]}.LPORT,${COLNS[$lite]}.RADDR,${COLNS[$lite]}.RPORT": $? + + echo DONE >&"${MKFDS[1]}" + fi + wait "${MKFDS_PID}" +} > "$TS_OUTPUT" 2>&1