From: Masatake YAMATO Date: Sun, 1 Feb 2026 18:00:07 +0000 (+0900) Subject: tests: (test_mkfd::tcp-bare) new factory creating an unbound/unconnected TCP socket X-Git-Tag: v2.43-devel~95^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8bb703a38424d0df6f253b3095898531f3778285;p=thirdparty%2Futil-linux.git tests: (test_mkfd::tcp-bare) new factory creating an unbound/unconnected TCP socket Signed-off-by: Masatake YAMATO --- diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index 027f5aaae..b7033165f 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -1701,6 +1701,31 @@ static void *make_tcp(const struct factory *factory, struct fdesc fdescs[], (struct sockaddr *)&sin, (struct sockaddr *)&cin); } +static void *make_tcp_bare(const struct factory *factory _U_, struct fdesc fdescs[], + int argc _U_, char ** argv _U_) +{ + int sd = socket(AF_INET, SOCK_STREAM, 0); + if (sd < 0) + err(EXIT_FAILURE, + "failed to make a tcp socket for listening"); + + if (sd != fdescs[0].fd) { + if (dup2(sd, fdescs[0].fd) < 0) { + err(EXIT_FAILURE, "failed to dup %d -> %d", sd, fdescs[0].fd); + } + close(sd); + sd = fdescs[0].fd; + } + + fdescs[0] = (struct fdesc) { + .fd = fdescs[0].fd, + .close = close_fdesc, + .data = NULL, + }; + + return NULL; +} + static void *make_udp_common(const struct factory *factory, struct fdesc fdescs[], int argc, char ** argv, int family, @@ -3805,6 +3830,17 @@ static const struct factory factories[] = { PARAM_END } }, + { + .name = "tcp-bare", + .desc = "AF_INET+SOCK_STREAM sockets (no bind/connect)", + .priv = false, + .N = 1, + .EX_N = 0, + .make = make_tcp_bare, + .params = (struct parameter []) { + PARAM_END + } + }, { .name = "udp", .desc = "AF_INET+SOCK_DGRAM sockets",