Kuniyuki Iwashima
df30285b36
af_unix: Introduce SO_INQ.
...
We have an application that uses almost the same code for TCP and
AF_UNIX (SOCK_STREAM).
TCP can use TCP_INQ, but AF_UNIX doesn't have it and requires an
extra syscall, ioctl(SIOCINQ) or getsockopt(SO_MEMINFO) as an
alternative.
Let's introduce the generic version of TCP_INQ.
If SO_INQ is enabled, recvmsg() will put a cmsg of SCM_INQ that
contains the exact value of ioctl(SIOCINQ). The cmsg is also
included when msg->msg_get_inq is non-zero to make sockets
io_uring-friendly.
Note that SOCK_CUSTOM_SOCKOPT is flagged only for SOCK_STREAM to
override setsockopt() for SOL_SOCKET.
By having the flag in struct unix_sock, instead of struct sock, we
can later add SO_INQ support for TCP and reuse tcp_sk(sk)->recvmsg_inq.
Note also that supporting custom getsockopt() for SOL_SOCKET will need
preparation for other SOCK_CUSTOM_SOCKOPT users (UDP, vsock, MPTCP).
Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com >
Reviewed-by: Willem de Bruijn <willemb@google.com >
Link: https://patch.msgid.link/20250702223606.1054680-7-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-07-08 18:05:25 -07:00
..
2024-05-01 18:07:37 +01:00
2025-06-23 10:59:29 -04:00
2024-10-08 15:33:49 -07:00
2024-12-09 14:44:59 -08:00
2025-06-16 11:40:15 -07:00
2025-07-01 19:17:53 -07:00
2025-05-23 13:57:14 +02:00
2025-04-24 09:29:56 +02:00
2024-11-07 10:21:58 +01:00
2025-07-07 18:40:10 -07:00
2024-10-24 16:03:40 +02:00
2025-05-27 18:18:55 -07:00
2025-06-25 15:28:08 -07:00
2025-07-08 13:00:24 +02:00
2025-01-20 12:16:04 -08:00
2025-04-24 17:03:45 -07:00
2025-07-08 18:05:25 -07:00
2025-05-27 11:05:21 +02:00
2025-07-02 14:22:02 -07:00
2022-07-22 12:53:22 +01:00
2023-03-21 21:32:18 -07:00
2025-03-24 10:26:53 +00:00
2022-08-09 22:14:02 -07:00
2024-08-26 09:37:22 -07:00
2024-08-26 09:37:22 -07:00
2025-07-08 10:59:41 +02:00
2025-07-08 10:59:41 +02:00
2025-02-27 14:03:14 +01:00
2024-10-02 17:23:23 -04:00
2022-11-16 11:31:47 +02:00
2025-06-24 15:19:28 +02:00
2024-03-06 21:01:26 +01:00
2025-05-30 19:53:51 -07:00
2024-10-02 17:23:23 -04:00
2022-07-22 12:53:22 +01:00
2023-07-14 20:39:29 -07:00
2022-07-24 18:39:17 -06:00
2023-07-27 17:17:32 -07:00
2022-07-22 12:53:22 +01:00
2023-01-20 09:33:22 +00:00
2025-07-02 15:39:05 -07:00
2025-06-10 10:23:30 +02:00
2025-02-11 11:58:17 +01:00
2023-10-24 13:08:14 -07:00
2025-06-17 17:52:01 -07:00
2024-05-08 10:35:09 +01:00
2024-08-26 09:37:23 -07:00
2025-02-20 13:17:16 -08:00
2024-05-29 17:34:49 -07:00
2025-07-02 14:32:30 -07:00
2024-11-13 18:49:50 -08:00
2024-08-26 09:37:23 -07:00
2022-07-22 12:53:22 +01:00
2024-04-01 21:27:08 -07:00
2022-07-22 12:53:22 +01:00
2024-10-11 15:35:05 -07:00
2025-04-15 17:54:56 -07:00
2022-07-28 22:21:54 -07:00
2024-07-15 09:14:39 -07:00
2024-10-30 17:33:53 -07:00
2025-04-29 16:22:25 +02:00
2023-04-12 16:40:39 -07:00
2022-12-01 15:09:10 +01:00
2023-08-08 15:58:23 -07:00
2022-07-22 12:53:22 +01:00
2024-12-09 14:44:59 -08:00
2022-10-31 10:43:04 +00:00
2024-04-01 10:49:28 +01:00
2025-02-27 14:03:14 +01:00
2023-06-10 00:11:41 -07:00
2024-05-07 01:35:55 +02:00
2022-07-22 12:53:22 +01:00
2023-07-28 14:07:59 -07:00
2025-03-24 13:58:22 -07:00
2024-08-26 09:37:23 -07:00
2024-05-08 10:35:09 +01:00
2024-10-25 10:44:41 +01:00
2023-11-20 11:43:03 +01:00
2024-02-26 18:40:34 -08:00
2025-03-24 12:10:13 -07:00
2025-07-02 14:32:30 -07:00
2024-05-13 18:19:09 -06:00
2025-03-25 10:34:33 -07:00
2025-03-18 13:18:36 +01:00
2025-07-02 14:32:30 -07:00
2025-01-06 13:49:38 -08:00
2024-12-11 20:17:33 -08:00
2024-12-17 19:37:00 -08:00
2024-02-28 11:19:41 +00:00
2025-04-24 09:29:56 +02:00
2025-07-02 14:32:30 -07:00
2025-07-02 14:32:30 -07:00
2025-04-29 16:22:25 +02:00
2025-06-17 18:18:44 -07:00
2023-04-22 01:39:41 +02:00
2025-07-02 14:32:30 -07:00
2025-03-21 17:36:49 +08:00
2022-07-22 12:53:22 +01:00
2025-03-18 13:18:36 +01:00
2024-08-05 16:27:26 -07:00
2025-03-25 07:31:24 -07:00
2024-10-09 08:53:01 +02:00
2024-08-19 18:36:12 -07:00
2025-04-15 17:54:56 -07:00
2024-12-06 17:43:08 -08:00
2023-08-04 15:33:17 -07:00
2023-08-04 15:33:17 -07:00
2024-07-15 08:51:01 -07:00
2023-07-20 10:46:28 +02:00
2024-08-26 09:37:23 -07:00
2022-07-22 12:53:22 +01:00
2022-07-22 12:53:22 +01:00
2024-07-15 08:51:19 -07:00
2025-07-02 14:32:30 -07:00
2025-06-24 15:19:28 +02:00
2024-10-02 17:23:23 -04:00
2025-01-20 12:20:42 +00:00
2025-07-08 12:39:24 +02:00
2024-11-09 09:04:54 -08:00
2022-07-22 12:53:22 +01:00
2025-04-15 08:21:46 -07:00
2022-11-18 12:14:55 +00:00
2022-07-22 12:53:22 +01:00
2024-08-12 17:23:57 -07:00
2024-11-09 13:22:57 -08:00
2025-06-30 18:14:23 -07:00
2024-11-30 13:41:50 -08:00
2025-04-14 17:08:45 -07:00
2024-10-10 08:30:22 -07:00
2025-05-22 09:42:41 -07:00
2025-03-12 13:32:35 -07:00
2025-06-10 15:27:18 -07:00
2025-04-09 17:01:51 -07:00
2022-07-22 12:53:22 +01:00
2023-11-20 10:15:16 -08:00
2024-11-21 08:28:08 -08:00
2025-07-02 15:39:04 -07:00
2025-07-07 18:40:10 -07:00
2022-07-22 12:53:22 +01:00
2025-04-24 09:29:56 +02:00
2024-08-30 22:30:55 +02:00
2023-07-14 20:39:29 -07:00
2025-06-13 18:17:08 -07:00
2023-07-14 20:39:30 -07:00
2023-06-02 09:55:22 +01:00
2025-01-20 09:21:27 +00:00
2024-02-02 10:57:55 -08:00
2022-07-22 12:53:22 +01:00
2024-04-30 18:46:52 -07:00
2024-03-07 21:12:43 -08:00
2024-07-11 18:11:31 -07:00
2022-07-22 12:53:22 +01:00
2023-04-06 12:01:20 -07:00
2023-03-17 08:56:37 +00:00
2024-08-26 09:37:23 -07:00
2024-08-26 09:37:23 -07:00
2025-06-27 15:34:19 -07:00
2022-08-01 11:59:23 -07:00
2025-07-02 14:32:30 -07:00
2023-06-19 11:32:58 -07:00
2025-05-16 16:03:48 -07:00
2023-07-14 20:39:30 -07:00
2025-04-11 18:58:10 -07:00
2025-02-21 15:28:03 -08:00
2025-06-12 08:05:50 -07:00
2025-05-23 10:24:18 +01:00
2025-04-11 18:58:10 -07:00
2024-05-30 18:29:38 -07:00
2024-06-24 16:41:23 -07:00
2024-05-30 18:29:38 -07:00
2024-04-30 13:24:48 +02:00
2025-03-16 22:05:53 -07:00
2024-08-02 17:16:59 -07:00
2025-06-23 17:05:12 -07:00
2023-10-04 11:49:20 -07:00
2022-07-22 12:53:22 +01:00
2025-05-05 16:48:12 -07:00
2024-02-16 09:36:37 +00:00
2024-02-14 10:49:37 +01:00
2024-11-03 12:10:11 -08:00
2023-12-04 14:45:26 -08:00
2025-07-02 14:22:02 -07:00
2024-07-08 14:07:31 -07:00
2024-05-09 20:25:55 -07:00
2023-07-28 14:07:59 -07:00
2024-12-16 12:47:29 +00:00
2023-08-01 15:06:27 -07:00
2022-12-12 15:04:39 -08:00
2022-07-22 12:53:22 +01:00
2025-06-24 16:31:36 -07:00
2025-07-02 14:22:02 -07:00
2023-09-14 16:16:36 +02:00
2025-06-17 18:18:46 -07:00
2024-08-26 09:37:23 -07:00
2022-07-22 12:53:22 +01:00
2025-02-20 15:13:45 -08:00
2025-04-24 17:11:33 -07:00
2025-04-22 19:57:56 -07:00
2025-05-26 18:32:48 +02:00
2025-04-24 17:11:52 -07:00