]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: (test_mkfd::tcp-bare) new factory creating an unbound/unconnected TCP socket
authorMasatake YAMATO <yamato@redhat.com>
Sun, 1 Feb 2026 18:00:07 +0000 (03:00 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Tue, 3 Feb 2026 20:23:19 +0000 (05:23 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
tests/helpers/test_mkfds.c

index 027f5aaae9809b60aca7532d23526367d445c912..b7033165f3f31cd2e878c7af96983efc396c9b40 100644 (file)
@@ -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",