Re: [PATCH v7 1/2] connect01: Convert to new API

Petr Vorel <[email protected]>
Newsgroups gmane.linux.ltp
Message-ID <20260701083422.GA477554@pevik>
Hi Wei,

to speedup I dared to merge with following diff.

My changes are:
* use designated initializers
* improve doc
* specify salen only     when not detectable
* void => struct sockaddr_in

Thanks!

Kind regards,
Petr

+++ testcases/kernel/syscalls/connect/connect01.c
@@ -1,11 +1,19 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
- * Copyright (c) International Business Machines  Corp., 2001
+ * Copyright (c) International Business Machines Corp., 2001
  * Copyright (c) Linux Test Project, 2006-2026
  */
 
 /*\
- * Verify that :manpage:`connect(2)` returns the proper errno for various failure cases.
+ * Verify that :manpage:`connect(2)` fails with -1 and sets proper errno:
+ *
+ * - EBADF if sockfd is not a valid open file descriptor
+ * - EFAULT if socket structure address is outside the user's address space
+ * - EINVAL if addrlen is not valid
+ * - ENOTSOCK if file descriptor sockfd does not refer to a socket
+ * - EISCONN if socket is already connected
+ * - ECONNREFUSED if connect on a socket found nothing listening on remote address
+ * - EAFNOSUPPORT if address doesn't have the correct address family in sa_family
  */
 
 #include <sys/types.h>
@@ -30,25 +38,25 @@ static pid_t pid;
 
 static struct test_case_t {
 	int *fd;
-	void *addr;
+	struct sockaddr_in *addr;
 	socklen_t salen;
 	int exp_errno;
 	char *desc;
 } tcases[] = {
-	{&fd_invalid, &sock1, sizeof(sock1), EBADF,
-		"sockfd is not a valid open file descriptor"},
-	{&fd_socket, NULL, sizeof(sock1), EFAULT,
-		"socket structure address is outside the user's address space"},
-	{&fd_socket, &sock1, 3, EINVAL,
-		"addrlen is not valid"},
-	{&fd_null, &sock1, sizeof(sock1), ENOTSOCK,
-		"file descriptor sockfd does not refer to a socket"},
-	{&fd_connected, &sock1, sizeof(sock1), EISCONN,
-		"socket is already connected"},
-	{&fd_socket, &sock2, sizeof(sock2), ECONNREFUSED,
-		"connect on a socket found no one listening on remote address"},
-	{&fd_socket, &sock3, sizeof(sock3), EAFNOSUPPORT,
-		"address doesn't have the correct address family in sa_family"},
+	{ .fd = &fd_invalid, .addr = &sock1, .exp_errno = EBADF,
+		.desc = "sockfd is not a valid open file descriptor"},
+	{ .fd = &fd_socket, .salen = sizeof(sock1), .exp_errno = EFAULT,
+		.desc = "socket structure address is outside the user's address space"},
+	{ .fd = &fd_socket, .addr = &sock1, .salen = 3, .exp_errno = EINVAL,
+		.desc = "addrlen is not valid"},
+	{ .fd = &fd_null, .addr = &sock1, .exp_errno = ENOTSOCK,
+		.desc = "file descriptor sockfd does not refer to a socket"},
+	{ .fd = &fd_connected, .addr = &sock1, .exp_errno = EISCONN,
+		.desc = "socket is already connected"},
+	{ .fd = &fd_socket, .addr = &sock2, .exp_errno = ECONNREFUSED,
+		.desc = "connect on a socket found nothing listening on remote address"},
+	{ .fd = &fd_socket, .addr = &sock3, .exp_errno = EAFNOSUPPORT,
+		.desc = "address doesn't have the correct address family in sa_family"},
 };
 
 static int sys_connect(int sockfd, const struct sockaddr *addr,
@@ -126,8 +134,9 @@ static void verify_connect(unsigned int i)
 {
 	struct test_case_t *tc = &tcases[i];
 	void *addr = tc->addr ? tc->addr : bad_addr;
+	socklen_t salen = tc->salen ?: sizeof(*tc->addr);
 
-	TST_EXP_FAIL(sys_connect(*tc->fd, addr, tc->salen),
+	TST_EXP_FAIL(sys_connect(*tc->fd, addr, salen),
 		     tc->exp_errno, "%s", tc->desc);
 }
 

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.