/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI_INET_DIAG_H_ #define _UAPI_INET_DIAG_H_ #include <linux/types.h> /* Just some random number */ #define TCPDIAG_GETSOCK … #define DCCPDIAG_GETSOCK … #define INET_DIAG_GETSOCK_MAX … /* Socket identity */ struct inet_diag_sockid { … }; /* Request structure */ struct inet_diag_req { … }; struct inet_diag_req_v2 { … }; /* * SOCK_RAW sockets require the underlied protocol to be * additionally specified so we can use @pad member for * this, but we can't rename it because userspace programs * still may depend on this name. Instead lets use another * structure definition as an alias for struct * @inet_diag_req_v2. */ struct inet_diag_req_raw { … }; enum { … }; #define INET_DIAG_REQ_MAX … /* Bytecode is sequence of 4 byte commands followed by variable arguments. * All the commands identified by "code" are conditional jumps forward: * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be * length of the command and its arguments. */ struct inet_diag_bc_op { … }; enum { … }; struct inet_diag_hostcond { … }; struct inet_diag_markcond { … }; /* Base info structure. It contains socket identity (addrs/ports/cookie) * and, alas, the information shown by netstat. */ struct inet_diag_msg { … }; /* Extensions */ enum { … }; #define INET_DIAG_MAX … enum { … }; #define INET_ULP_INFO_MAX … /* INET_DIAG_MEM */ struct inet_diag_meminfo { … }; /* INET_DIAG_SOCKOPT */ struct inet_diag_sockopt { … }; /* INET_DIAG_VEGASINFO */ struct tcpvegas_info { … }; /* INET_DIAG_DCTCPINFO */ struct tcp_dctcp_info { … }; /* INET_DIAG_BBRINFO */ struct tcp_bbr_info { … }; tcp_cc_info; #endif /* _UAPI_INET_DIAG_H_ */