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