Files
linux/include/net
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-10-08 15:33:49 -07:00
2024-12-09 14:44:59 -08:00
2025-05-27 18:18:55 -07:00
2025-06-25 15:28:08 -07: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-03-24 10:26:53 +00:00
2022-08-09 22:14:02 -07:00
2024-05-08 10:35:09 +01:00
2024-08-26 09:37:23 -07:00
2024-11-13 18:49:50 -08:00
2024-08-26 09:37:23 -07:00
2024-05-07 01:35:55 +02:00
2024-08-26 09:37:23 -07:00
2024-02-28 11:19:41 +00:00
2025-07-02 14:32:30 -07:00
2023-04-22 01:39:41 +02:00
2024-12-06 17:43:08 -08:00
2024-08-26 09:37:23 -07:00
2025-07-08 12:39:24 +02:00
2025-04-15 08:21:46 -07:00
2024-08-12 17:23:57 -07:00
2023-07-14 20:39:30 -07: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
2025-04-11 18:58:10 -07:00
2025-04-11 18:58:10 -07:00
2024-05-30 18:29:38 -07:00
2024-05-30 18:29:38 -07:00
2025-06-23 17:05:12 -07:00
2023-10-04 11:49:20 -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
2022-12-12 15:04:39 -08:00
2023-09-14 16:16:36 +02:00
2024-08-26 09:37:23 -07:00