xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/mptcp.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_MPTCP_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_MPTCP_H
9*8d67ca89SAndroid Build Coastguard Worker #include <netinet/in.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <sys/socket.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/const.h>
12*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
13*8d67ca89SAndroid Build Coastguard Worker #include <linux/in.h>
14*8d67ca89SAndroid Build Coastguard Worker #include <linux/in6.h>
15*8d67ca89SAndroid Build Coastguard Worker #include <linux/socket.h>
16*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
17*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
18*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
19*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_JOIN_LOC _BITUL(3)
20*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_BKUP_REM _BITUL(4)
21*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_BKUP_LOC _BITUL(5)
22*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_FULLY_ESTABLISHED _BITUL(6)
23*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_CONNECTED _BITUL(7)
24*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_FLAG_MAPVALID _BITUL(8)
25*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_CMD_GRP_NAME "mptcp_pm_cmds"
26*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_EV_GRP_NAME "mptcp_pm_events"
27*8d67ca89SAndroid Build Coastguard Worker #include <linux/mptcp_pm.h>
28*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
29*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED _BITUL(1)
30*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_ADDR_FLAG_SIGNAL (1 << 0)
31*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
32*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
33*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
34*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
35*8d67ca89SAndroid Build Coastguard Worker struct mptcp_info {
36*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_subflows;
37*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_add_addr_signal;
38*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_add_addr_accepted;
39*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_subflows_max;
40*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_add_addr_signal_max;
41*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_add_addr_accepted_max;
42*8d67ca89SAndroid Build Coastguard Worker   __u32 mptcpi_flags;
43*8d67ca89SAndroid Build Coastguard Worker   __u32 mptcpi_token;
44*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_write_seq;
45*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_snd_una;
46*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_rcv_nxt;
47*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_local_addr_used;
48*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_local_addr_max;
49*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_csum_enabled;
50*8d67ca89SAndroid Build Coastguard Worker   __u32 mptcpi_retransmits;
51*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_bytes_retrans;
52*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_bytes_sent;
53*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_bytes_received;
54*8d67ca89SAndroid Build Coastguard Worker   __u64 mptcpi_bytes_acked;
55*8d67ca89SAndroid Build Coastguard Worker   __u8 mptcpi_subflows_total;
56*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
57*8d67ca89SAndroid Build Coastguard Worker   __u32 mptcpi_last_data_sent;
58*8d67ca89SAndroid Build Coastguard Worker   __u32 mptcpi_last_data_recv;
59*8d67ca89SAndroid Build Coastguard Worker   __u32 mptcpi_last_ack_recv;
60*8d67ca89SAndroid Build Coastguard Worker };
61*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_EUNSPEC 0
62*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_EMPTCP 1
63*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_ERESOURCE 2
64*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_EPROHIBIT 3
65*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_EWQ2BIG 4
66*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_EBADPERF 5
67*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_RST_EMIDDLEBOX 6
68*8d67ca89SAndroid Build Coastguard Worker struct mptcp_subflow_data {
69*8d67ca89SAndroid Build Coastguard Worker   __u32 size_subflow_data;
70*8d67ca89SAndroid Build Coastguard Worker   __u32 num_subflows;
71*8d67ca89SAndroid Build Coastguard Worker   __u32 size_kernel;
72*8d67ca89SAndroid Build Coastguard Worker   __u32 size_user;
73*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8)));
74*8d67ca89SAndroid Build Coastguard Worker struct mptcp_subflow_addrs {
75*8d67ca89SAndroid Build Coastguard Worker   union {
76*8d67ca89SAndroid Build Coastguard Worker     __kernel_sa_family_t sa_family;
77*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr sa_local;
78*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr_in sin_local;
79*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr_in6 sin6_local;
80*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr_storage ss_local;
81*8d67ca89SAndroid Build Coastguard Worker   };
82*8d67ca89SAndroid Build Coastguard Worker   union {
83*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr sa_remote;
84*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr_in sin_remote;
85*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr_in6 sin6_remote;
86*8d67ca89SAndroid Build Coastguard Worker     struct sockaddr_storage ss_remote;
87*8d67ca89SAndroid Build Coastguard Worker   };
88*8d67ca89SAndroid Build Coastguard Worker };
89*8d67ca89SAndroid Build Coastguard Worker struct mptcp_subflow_info {
90*8d67ca89SAndroid Build Coastguard Worker   __u32 id;
91*8d67ca89SAndroid Build Coastguard Worker   struct mptcp_subflow_addrs addrs;
92*8d67ca89SAndroid Build Coastguard Worker };
93*8d67ca89SAndroid Build Coastguard Worker struct mptcp_full_info {
94*8d67ca89SAndroid Build Coastguard Worker   __u32 size_tcpinfo_kernel;
95*8d67ca89SAndroid Build Coastguard Worker   __u32 size_tcpinfo_user;
96*8d67ca89SAndroid Build Coastguard Worker   __u32 size_sfinfo_kernel;
97*8d67ca89SAndroid Build Coastguard Worker   __u32 size_sfinfo_user;
98*8d67ca89SAndroid Build Coastguard Worker   __u32 num_subflows;
99*8d67ca89SAndroid Build Coastguard Worker   __u32 size_arrays_user;
100*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 subflow_info;
101*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 tcp_info;
102*8d67ca89SAndroid Build Coastguard Worker   struct mptcp_info mptcp_info;
103*8d67ca89SAndroid Build Coastguard Worker };
104*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_INFO 1
105*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_TCPINFO 2
106*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_SUBFLOW_ADDRS 3
107*8d67ca89SAndroid Build Coastguard Worker #define MPTCP_FULL_INFO 4
108*8d67ca89SAndroid Build Coastguard Worker #endif
109