• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 };
57 #define MPTCP_RST_EUNSPEC 0
58 #define MPTCP_RST_EMPTCP 1
59 #define MPTCP_RST_ERESOURCE 2
60 #define MPTCP_RST_EPROHIBIT 3
61 #define MPTCP_RST_EWQ2BIG 4
62 #define MPTCP_RST_EBADPERF 5
63 #define MPTCP_RST_EMIDDLEBOX 6
64 struct mptcp_subflow_data {
65   __u32 size_subflow_data;
66   __u32 num_subflows;
67   __u32 size_kernel;
68   __u32 size_user;
69 } __attribute__((aligned(8)));
70 struct mptcp_subflow_addrs {
71   union {
72     __kernel_sa_family_t sa_family;
73     struct sockaddr sa_local;
74     struct sockaddr_in sin_local;
75     struct sockaddr_in6 sin6_local;
76     struct sockaddr_storage ss_local;
77   };
78   union {
79     struct sockaddr sa_remote;
80     struct sockaddr_in sin_remote;
81     struct sockaddr_in6 sin6_remote;
82     struct sockaddr_storage ss_remote;
83   };
84 };
85 struct mptcp_subflow_info {
86   __u32 id;
87   struct mptcp_subflow_addrs addrs;
88 };
89 struct mptcp_full_info {
90   __u32 size_tcpinfo_kernel;
91   __u32 size_tcpinfo_user;
92   __u32 size_sfinfo_kernel;
93   __u32 size_sfinfo_user;
94   __u32 num_subflows;
95   __u32 size_arrays_user;
96   __aligned_u64 subflow_info;
97   __aligned_u64 tcp_info;
98   struct mptcp_info mptcp_info;
99 };
100 #define MPTCP_INFO 1
101 #define MPTCP_TCPINFO 2
102 #define MPTCP_SUBFLOW_ADDRS 3
103 #define MPTCP_FULL_INFO 4
104 #endif
105