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