Commit 00a7e470 authored by Namhyung Kim's avatar Namhyung Kim
Browse files

tools headers: Sync linux/socket.h with kernel sources



To pick up changes from:

  d73c1677 ("socket: Split out a getsockname helper for io_uring")
  4677e788 ("socket: Unify getsockname and getpeername implementation")
  bf33247a ("net: Add struct sockaddr_unsized for sockaddr of unknown length")

This should be used to beautify socket syscall arguments and it addresses
these tools/perf build warnings:

  Warning: Kernel ABI header differences:
    diff -u tools/perf/trace/beauty/include/linux/socket.h include/linux/socket.h

Please see tools/include/uapi/README.

Cc: netdev@vger.kernel.org
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent d0783e1f
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -32,11 +32,29 @@ typedef __kernel_sa_family_t sa_family_t;
 *	1003.1g requires sa_family_t and that sa_data is char.
 */

/* Deprecated for in-kernel use. Use struct sockaddr_unsized instead. */
struct sockaddr {
	sa_family_t	sa_family;	/* address family, AF_xxx	*/
	char		sa_data[14];	/* 14 bytes of protocol address	*/
};

/**
 * struct sockaddr_unsized - Unspecified size sockaddr for callbacks
 * @sa_family: Address family (AF_UNIX, AF_INET, AF_INET6, etc.)
 * @sa_data: Flexible array for address data
 *
 * This structure is designed for callback interfaces where the
 * total size is known via the sockaddr_len parameter. Unlike struct
 * sockaddr which has a fixed 14-byte sa_data limit or struct
 * sockaddr_storage which has a fixed 128-byte sa_data limit, this
 * structure can accommodate addresses of any size, but must be used
 * carefully.
 */
struct sockaddr_unsized {
	__kernel_sa_family_t	sa_family;	/* address family, AF_xxx */
	char			sa_data[];	/* flexible address data */
};

struct linger {
	int		l_onoff;	/* Linger active		*/
	int		l_linger;	/* How long to linger for	*/
@@ -450,10 +468,10 @@ extern int __sys_connect(int fd, struct sockaddr __user *uservaddr,
			 int addrlen);
extern int __sys_listen(int fd, int backlog);
extern int __sys_listen_socket(struct socket *sock, int backlog);
extern int do_getsockname(struct socket *sock, int peer,
			  struct sockaddr __user *usockaddr, int __user *usockaddr_len);
extern int __sys_getsockname(int fd, struct sockaddr __user *usockaddr,
			     int __user *usockaddr_len);
extern int __sys_getpeername(int fd, struct sockaddr __user *usockaddr,
			     int __user *usockaddr_len);
			     int __user *usockaddr_len, int peer);
extern int __sys_socketpair(int family, int type, int protocol,
			    int __user *usockvec);
extern int __sys_shutdown_sock(struct socket *sock, int how);