1*cda5da8dSAndroid Build Coastguard Worker /* 2*cda5da8dSAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*cda5da8dSAndroid Build Coastguard Worker * 4*cda5da8dSAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*cda5da8dSAndroid Build Coastguard Worker * for more information. 6*cda5da8dSAndroid Build Coastguard Worker */ 7*cda5da8dSAndroid Build Coastguard Worker #ifndef _UAPI_SCTP_H 8*cda5da8dSAndroid Build Coastguard Worker #define _UAPI_SCTP_H 9*cda5da8dSAndroid Build Coastguard Worker #include <linux/types.h> 10*cda5da8dSAndroid Build Coastguard Worker #include <linux/socket.h> 11*cda5da8dSAndroid Build Coastguard Worker typedef __s32 sctp_assoc_t; 12*cda5da8dSAndroid Build Coastguard Worker #define SCTP_FUTURE_ASSOC 0 13*cda5da8dSAndroid Build Coastguard Worker #define SCTP_CURRENT_ASSOC 1 14*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ALL_ASSOC 2 15*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RTOINFO 0 16*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOCINFO 1 17*cda5da8dSAndroid Build Coastguard Worker #define SCTP_INITMSG 2 18*cda5da8dSAndroid Build Coastguard Worker #define SCTP_NODELAY 3 19*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTOCLOSE 4 20*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SET_PEER_PRIMARY_ADDR 5 21*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PRIMARY_ADDR 6 22*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ADAPTATION_LAYER 7 23*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DISABLE_FRAGMENTS 8 24*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PEER_ADDR_PARAMS 9 25*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DEFAULT_SEND_PARAM 10 26*cda5da8dSAndroid Build Coastguard Worker #define SCTP_EVENTS 11 27*cda5da8dSAndroid Build Coastguard Worker #define SCTP_I_WANT_MAPPED_V4_ADDR 12 28*cda5da8dSAndroid Build Coastguard Worker #define SCTP_MAXSEG 13 29*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STATUS 14 30*cda5da8dSAndroid Build Coastguard Worker #define SCTP_GET_PEER_ADDR_INFO 15 31*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DELAYED_ACK_TIME 16 32*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DELAYED_ACK SCTP_DELAYED_ACK_TIME 33*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DELAYED_SACK SCTP_DELAYED_ACK_TIME 34*cda5da8dSAndroid Build Coastguard Worker #define SCTP_CONTEXT 17 35*cda5da8dSAndroid Build Coastguard Worker #define SCTP_FRAGMENT_INTERLEAVE 18 36*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PARTIAL_DELIVERY_POINT 19 37*cda5da8dSAndroid Build Coastguard Worker #define SCTP_MAX_BURST 20 38*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_CHUNK 21 39*cda5da8dSAndroid Build Coastguard Worker #define SCTP_HMAC_IDENT 22 40*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_KEY 23 41*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_ACTIVE_KEY 24 42*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_DELETE_KEY 25 43*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PEER_AUTH_CHUNKS 26 44*cda5da8dSAndroid Build Coastguard Worker #define SCTP_LOCAL_AUTH_CHUNKS 27 45*cda5da8dSAndroid Build Coastguard Worker #define SCTP_GET_ASSOC_NUMBER 28 46*cda5da8dSAndroid Build Coastguard Worker #define SCTP_GET_ASSOC_ID_LIST 29 47*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTO_ASCONF 30 48*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PEER_ADDR_THLDS 31 49*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RECVRCVINFO 32 50*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RECVNXTINFO 33 51*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DEFAULT_SNDINFO 34 52*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_DEACTIVATE_KEY 35 53*cda5da8dSAndroid Build Coastguard Worker #define SCTP_REUSE_PORT 36 54*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PEER_ADDR_THLDS_V2 37 55*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_BINDX_ADD 100 56*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_BINDX_REM 101 57*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_PEELOFF 102 58*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_CONNECTX_OLD 107 59*cda5da8dSAndroid Build Coastguard Worker #define SCTP_GET_PEER_ADDRS 108 60*cda5da8dSAndroid Build Coastguard Worker #define SCTP_GET_LOCAL_ADDRS 109 61*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_CONNECTX 110 62*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_CONNECTX3 111 63*cda5da8dSAndroid Build Coastguard Worker #define SCTP_GET_ASSOC_STATS 112 64*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SUPPORTED 113 65*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DEFAULT_PRINFO 114 66*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_ASSOC_STATUS 115 67*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_STREAM_STATUS 116 68*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RECONFIG_SUPPORTED 117 69*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ENABLE_STREAM_RESET 118 70*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RESET_STREAMS 119 71*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RESET_ASSOC 120 72*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ADD_STREAMS 121 73*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SOCKOPT_PEELOFF_FLAGS 122 74*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_SCHEDULER 123 75*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_SCHEDULER_VALUE 124 76*cda5da8dSAndroid Build Coastguard Worker #define SCTP_INTERLEAVING_SUPPORTED 125 77*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SENDMSG_CONNECT 126 78*cda5da8dSAndroid Build Coastguard Worker #define SCTP_EVENT 127 79*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASCONF_SUPPORTED 128 80*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_SUPPORTED 129 81*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ECN_SUPPORTED 130 82*cda5da8dSAndroid Build Coastguard Worker #define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131 83*cda5da8dSAndroid Build Coastguard Worker #define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 84*cda5da8dSAndroid Build Coastguard Worker #define SCTP_REMOTE_UDP_ENCAPS_PORT 132 85*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PLPMTUD_PROBE_INTERVAL 133 86*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SCTP_NONE 0x0000 87*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SCTP_TTL 0x0010 88*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SCTP_RTX 0x0020 89*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SCTP_PRIO 0x0030 90*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SCTP_MAX SCTP_PR_SCTP_PRIO 91*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SCTP_MASK 0x0030 92*cda5da8dSAndroid Build Coastguard Worker #define __SCTP_PR_INDEX(x) ((x >> 4) - 1) 93*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_INDEX(x) __SCTP_PR_INDEX(SCTP_PR_SCTP_ ##x) 94*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_POLICY(x) ((x) & SCTP_PR_SCTP_MASK) 95*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_SET_POLICY(flags,x) do { flags &= ~SCTP_PR_SCTP_MASK; flags |= x; } while(0) 96*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_TTL_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_TTL) 97*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_RTX_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_RTX) 98*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PR_PRIO_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_PRIO) 99*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ENABLE_RESET_STREAM_REQ 0x01 100*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ENABLE_RESET_ASSOC_REQ 0x02 101*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ENABLE_CHANGE_ASSOC_REQ 0x04 102*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ENABLE_STRRESET_MASK 0x07 103*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_INCOMING 0x01 104*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_OUTGOING 0x02 105*cda5da8dSAndroid Build Coastguard Worker enum sctp_msg_flags { 106*cda5da8dSAndroid Build Coastguard Worker MSG_NOTIFICATION = 0x8000, 107*cda5da8dSAndroid Build Coastguard Worker #define MSG_NOTIFICATION MSG_NOTIFICATION 108*cda5da8dSAndroid Build Coastguard Worker }; 109*cda5da8dSAndroid Build Coastguard Worker struct sctp_initmsg { 110*cda5da8dSAndroid Build Coastguard Worker __u16 sinit_num_ostreams; 111*cda5da8dSAndroid Build Coastguard Worker __u16 sinit_max_instreams; 112*cda5da8dSAndroid Build Coastguard Worker __u16 sinit_max_attempts; 113*cda5da8dSAndroid Build Coastguard Worker __u16 sinit_max_init_timeo; 114*cda5da8dSAndroid Build Coastguard Worker }; 115*cda5da8dSAndroid Build Coastguard Worker struct sctp_sndrcvinfo { 116*cda5da8dSAndroid Build Coastguard Worker __u16 sinfo_stream; 117*cda5da8dSAndroid Build Coastguard Worker __u16 sinfo_ssn; 118*cda5da8dSAndroid Build Coastguard Worker __u16 sinfo_flags; 119*cda5da8dSAndroid Build Coastguard Worker __u32 sinfo_ppid; 120*cda5da8dSAndroid Build Coastguard Worker __u32 sinfo_context; 121*cda5da8dSAndroid Build Coastguard Worker __u32 sinfo_timetolive; 122*cda5da8dSAndroid Build Coastguard Worker __u32 sinfo_tsn; 123*cda5da8dSAndroid Build Coastguard Worker __u32 sinfo_cumtsn; 124*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sinfo_assoc_id; 125*cda5da8dSAndroid Build Coastguard Worker }; 126*cda5da8dSAndroid Build Coastguard Worker struct sctp_sndinfo { 127*cda5da8dSAndroid Build Coastguard Worker __u16 snd_sid; 128*cda5da8dSAndroid Build Coastguard Worker __u16 snd_flags; 129*cda5da8dSAndroid Build Coastguard Worker __u32 snd_ppid; 130*cda5da8dSAndroid Build Coastguard Worker __u32 snd_context; 131*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t snd_assoc_id; 132*cda5da8dSAndroid Build Coastguard Worker }; 133*cda5da8dSAndroid Build Coastguard Worker struct sctp_rcvinfo { 134*cda5da8dSAndroid Build Coastguard Worker __u16 rcv_sid; 135*cda5da8dSAndroid Build Coastguard Worker __u16 rcv_ssn; 136*cda5da8dSAndroid Build Coastguard Worker __u16 rcv_flags; 137*cda5da8dSAndroid Build Coastguard Worker __u32 rcv_ppid; 138*cda5da8dSAndroid Build Coastguard Worker __u32 rcv_tsn; 139*cda5da8dSAndroid Build Coastguard Worker __u32 rcv_cumtsn; 140*cda5da8dSAndroid Build Coastguard Worker __u32 rcv_context; 141*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t rcv_assoc_id; 142*cda5da8dSAndroid Build Coastguard Worker }; 143*cda5da8dSAndroid Build Coastguard Worker struct sctp_nxtinfo { 144*cda5da8dSAndroid Build Coastguard Worker __u16 nxt_sid; 145*cda5da8dSAndroid Build Coastguard Worker __u16 nxt_flags; 146*cda5da8dSAndroid Build Coastguard Worker __u32 nxt_ppid; 147*cda5da8dSAndroid Build Coastguard Worker __u32 nxt_length; 148*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t nxt_assoc_id; 149*cda5da8dSAndroid Build Coastguard Worker }; 150*cda5da8dSAndroid Build Coastguard Worker struct sctp_prinfo { 151*cda5da8dSAndroid Build Coastguard Worker __u16 pr_policy; 152*cda5da8dSAndroid Build Coastguard Worker __u32 pr_value; 153*cda5da8dSAndroid Build Coastguard Worker }; 154*cda5da8dSAndroid Build Coastguard Worker struct sctp_authinfo { 155*cda5da8dSAndroid Build Coastguard Worker __u16 auth_keynumber; 156*cda5da8dSAndroid Build Coastguard Worker }; 157*cda5da8dSAndroid Build Coastguard Worker enum sctp_sinfo_flags { 158*cda5da8dSAndroid Build Coastguard Worker SCTP_UNORDERED = (1 << 0), 159*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_OVER = (1 << 1), 160*cda5da8dSAndroid Build Coastguard Worker SCTP_ABORT = (1 << 2), 161*cda5da8dSAndroid Build Coastguard Worker SCTP_SACK_IMMEDIATELY = (1 << 3), 162*cda5da8dSAndroid Build Coastguard Worker SCTP_SENDALL = (1 << 6), 163*cda5da8dSAndroid Build Coastguard Worker SCTP_PR_SCTP_ALL = (1 << 7), 164*cda5da8dSAndroid Build Coastguard Worker SCTP_NOTIFICATION = MSG_NOTIFICATION, 165*cda5da8dSAndroid Build Coastguard Worker SCTP_EOF = MSG_FIN, 166*cda5da8dSAndroid Build Coastguard Worker }; 167*cda5da8dSAndroid Build Coastguard Worker typedef union { 168*cda5da8dSAndroid Build Coastguard Worker __u8 raw; 169*cda5da8dSAndroid Build Coastguard Worker struct sctp_initmsg init; 170*cda5da8dSAndroid Build Coastguard Worker struct sctp_sndrcvinfo sndrcv; 171*cda5da8dSAndroid Build Coastguard Worker } sctp_cmsg_data_t; 172*cda5da8dSAndroid Build Coastguard Worker typedef enum sctp_cmsg_type { 173*cda5da8dSAndroid Build Coastguard Worker SCTP_INIT, 174*cda5da8dSAndroid Build Coastguard Worker #define SCTP_INIT SCTP_INIT 175*cda5da8dSAndroid Build Coastguard Worker SCTP_SNDRCV, 176*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SNDRCV SCTP_SNDRCV 177*cda5da8dSAndroid Build Coastguard Worker SCTP_SNDINFO, 178*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SNDINFO SCTP_SNDINFO 179*cda5da8dSAndroid Build Coastguard Worker SCTP_RCVINFO, 180*cda5da8dSAndroid Build Coastguard Worker #define SCTP_RCVINFO SCTP_RCVINFO 181*cda5da8dSAndroid Build Coastguard Worker SCTP_NXTINFO, 182*cda5da8dSAndroid Build Coastguard Worker #define SCTP_NXTINFO SCTP_NXTINFO 183*cda5da8dSAndroid Build Coastguard Worker SCTP_PRINFO, 184*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PRINFO SCTP_PRINFO 185*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTHINFO, 186*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTHINFO SCTP_AUTHINFO 187*cda5da8dSAndroid Build Coastguard Worker SCTP_DSTADDRV4, 188*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DSTADDRV4 SCTP_DSTADDRV4 189*cda5da8dSAndroid Build Coastguard Worker SCTP_DSTADDRV6, 190*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DSTADDRV6 SCTP_DSTADDRV6 191*cda5da8dSAndroid Build Coastguard Worker } sctp_cmsg_t; 192*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_change { 193*cda5da8dSAndroid Build Coastguard Worker __u16 sac_type; 194*cda5da8dSAndroid Build Coastguard Worker __u16 sac_flags; 195*cda5da8dSAndroid Build Coastguard Worker __u32 sac_length; 196*cda5da8dSAndroid Build Coastguard Worker __u16 sac_state; 197*cda5da8dSAndroid Build Coastguard Worker __u16 sac_error; 198*cda5da8dSAndroid Build Coastguard Worker __u16 sac_outbound_streams; 199*cda5da8dSAndroid Build Coastguard Worker __u16 sac_inbound_streams; 200*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sac_assoc_id; 201*cda5da8dSAndroid Build Coastguard Worker __u8 sac_info[]; 202*cda5da8dSAndroid Build Coastguard Worker }; 203*cda5da8dSAndroid Build Coastguard Worker enum sctp_sac_state { 204*cda5da8dSAndroid Build Coastguard Worker SCTP_COMM_UP, 205*cda5da8dSAndroid Build Coastguard Worker SCTP_COMM_LOST, 206*cda5da8dSAndroid Build Coastguard Worker SCTP_RESTART, 207*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_COMP, 208*cda5da8dSAndroid Build Coastguard Worker SCTP_CANT_STR_ASSOC, 209*cda5da8dSAndroid Build Coastguard Worker }; 210*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddr_change { 211*cda5da8dSAndroid Build Coastguard Worker __u16 spc_type; 212*cda5da8dSAndroid Build Coastguard Worker __u16 spc_flags; 213*cda5da8dSAndroid Build Coastguard Worker __u32 spc_length; 214*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage spc_aaddr; 215*cda5da8dSAndroid Build Coastguard Worker int spc_state; 216*cda5da8dSAndroid Build Coastguard Worker int spc_error; 217*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t spc_assoc_id; 218*cda5da8dSAndroid Build Coastguard Worker } __attribute__((packed, aligned(4))); 219*cda5da8dSAndroid Build Coastguard Worker enum sctp_spc_state { 220*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_AVAILABLE, 221*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_UNREACHABLE, 222*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_REMOVED, 223*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_ADDED, 224*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_MADE_PRIM, 225*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_CONFIRMED, 226*cda5da8dSAndroid Build Coastguard Worker SCTP_ADDR_POTENTIALLY_FAILED, 227*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ADDR_PF SCTP_ADDR_POTENTIALLY_FAILED 228*cda5da8dSAndroid Build Coastguard Worker }; 229*cda5da8dSAndroid Build Coastguard Worker struct sctp_remote_error { 230*cda5da8dSAndroid Build Coastguard Worker __u16 sre_type; 231*cda5da8dSAndroid Build Coastguard Worker __u16 sre_flags; 232*cda5da8dSAndroid Build Coastguard Worker __u32 sre_length; 233*cda5da8dSAndroid Build Coastguard Worker __be16 sre_error; 234*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sre_assoc_id; 235*cda5da8dSAndroid Build Coastguard Worker __u8 sre_data[]; 236*cda5da8dSAndroid Build Coastguard Worker }; 237*cda5da8dSAndroid Build Coastguard Worker struct sctp_send_failed { 238*cda5da8dSAndroid Build Coastguard Worker __u16 ssf_type; 239*cda5da8dSAndroid Build Coastguard Worker __u16 ssf_flags; 240*cda5da8dSAndroid Build Coastguard Worker __u32 ssf_length; 241*cda5da8dSAndroid Build Coastguard Worker __u32 ssf_error; 242*cda5da8dSAndroid Build Coastguard Worker struct sctp_sndrcvinfo ssf_info; 243*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t ssf_assoc_id; 244*cda5da8dSAndroid Build Coastguard Worker __u8 ssf_data[]; 245*cda5da8dSAndroid Build Coastguard Worker }; 246*cda5da8dSAndroid Build Coastguard Worker struct sctp_send_failed_event { 247*cda5da8dSAndroid Build Coastguard Worker __u16 ssf_type; 248*cda5da8dSAndroid Build Coastguard Worker __u16 ssf_flags; 249*cda5da8dSAndroid Build Coastguard Worker __u32 ssf_length; 250*cda5da8dSAndroid Build Coastguard Worker __u32 ssf_error; 251*cda5da8dSAndroid Build Coastguard Worker struct sctp_sndinfo ssfe_info; 252*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t ssf_assoc_id; 253*cda5da8dSAndroid Build Coastguard Worker __u8 ssf_data[]; 254*cda5da8dSAndroid Build Coastguard Worker }; 255*cda5da8dSAndroid Build Coastguard Worker enum sctp_ssf_flags { 256*cda5da8dSAndroid Build Coastguard Worker SCTP_DATA_UNSENT, 257*cda5da8dSAndroid Build Coastguard Worker SCTP_DATA_SENT, 258*cda5da8dSAndroid Build Coastguard Worker }; 259*cda5da8dSAndroid Build Coastguard Worker struct sctp_shutdown_event { 260*cda5da8dSAndroid Build Coastguard Worker __u16 sse_type; 261*cda5da8dSAndroid Build Coastguard Worker __u16 sse_flags; 262*cda5da8dSAndroid Build Coastguard Worker __u32 sse_length; 263*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sse_assoc_id; 264*cda5da8dSAndroid Build Coastguard Worker }; 265*cda5da8dSAndroid Build Coastguard Worker struct sctp_adaptation_event { 266*cda5da8dSAndroid Build Coastguard Worker __u16 sai_type; 267*cda5da8dSAndroid Build Coastguard Worker __u16 sai_flags; 268*cda5da8dSAndroid Build Coastguard Worker __u32 sai_length; 269*cda5da8dSAndroid Build Coastguard Worker __u32 sai_adaptation_ind; 270*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sai_assoc_id; 271*cda5da8dSAndroid Build Coastguard Worker }; 272*cda5da8dSAndroid Build Coastguard Worker struct sctp_pdapi_event { 273*cda5da8dSAndroid Build Coastguard Worker __u16 pdapi_type; 274*cda5da8dSAndroid Build Coastguard Worker __u16 pdapi_flags; 275*cda5da8dSAndroid Build Coastguard Worker __u32 pdapi_length; 276*cda5da8dSAndroid Build Coastguard Worker __u32 pdapi_indication; 277*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t pdapi_assoc_id; 278*cda5da8dSAndroid Build Coastguard Worker __u32 pdapi_stream; 279*cda5da8dSAndroid Build Coastguard Worker __u32 pdapi_seq; 280*cda5da8dSAndroid Build Coastguard Worker }; 281*cda5da8dSAndroid Build Coastguard Worker enum { 282*cda5da8dSAndroid Build Coastguard Worker SCTP_PARTIAL_DELIVERY_ABORTED = 0, 283*cda5da8dSAndroid Build Coastguard Worker }; 284*cda5da8dSAndroid Build Coastguard Worker struct sctp_authkey_event { 285*cda5da8dSAndroid Build Coastguard Worker __u16 auth_type; 286*cda5da8dSAndroid Build Coastguard Worker __u16 auth_flags; 287*cda5da8dSAndroid Build Coastguard Worker __u32 auth_length; 288*cda5da8dSAndroid Build Coastguard Worker __u16 auth_keynumber; 289*cda5da8dSAndroid Build Coastguard Worker __u16 auth_altkeynumber; 290*cda5da8dSAndroid Build Coastguard Worker __u32 auth_indication; 291*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t auth_assoc_id; 292*cda5da8dSAndroid Build Coastguard Worker }; 293*cda5da8dSAndroid Build Coastguard Worker enum { 294*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTH_NEW_KEY, 295*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTH_NEWKEY SCTP_AUTH_NEW_KEY 296*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTH_FREE_KEY, 297*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTH_NO_AUTH, 298*cda5da8dSAndroid Build Coastguard Worker }; 299*cda5da8dSAndroid Build Coastguard Worker struct sctp_sender_dry_event { 300*cda5da8dSAndroid Build Coastguard Worker __u16 sender_dry_type; 301*cda5da8dSAndroid Build Coastguard Worker __u16 sender_dry_flags; 302*cda5da8dSAndroid Build Coastguard Worker __u32 sender_dry_length; 303*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sender_dry_assoc_id; 304*cda5da8dSAndroid Build Coastguard Worker }; 305*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_INCOMING_SSN 0x0001 306*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002 307*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_DENIED 0x0004 308*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_FAILED 0x0008 309*cda5da8dSAndroid Build Coastguard Worker struct sctp_stream_reset_event { 310*cda5da8dSAndroid Build Coastguard Worker __u16 strreset_type; 311*cda5da8dSAndroid Build Coastguard Worker __u16 strreset_flags; 312*cda5da8dSAndroid Build Coastguard Worker __u32 strreset_length; 313*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t strreset_assoc_id; 314*cda5da8dSAndroid Build Coastguard Worker __u16 strreset_stream_list[]; 315*cda5da8dSAndroid Build Coastguard Worker }; 316*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOC_RESET_DENIED 0x0004 317*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOC_RESET_FAILED 0x0008 318*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_reset_event { 319*cda5da8dSAndroid Build Coastguard Worker __u16 assocreset_type; 320*cda5da8dSAndroid Build Coastguard Worker __u16 assocreset_flags; 321*cda5da8dSAndroid Build Coastguard Worker __u32 assocreset_length; 322*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t assocreset_assoc_id; 323*cda5da8dSAndroid Build Coastguard Worker __u32 assocreset_local_tsn; 324*cda5da8dSAndroid Build Coastguard Worker __u32 assocreset_remote_tsn; 325*cda5da8dSAndroid Build Coastguard Worker }; 326*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOC_CHANGE_DENIED 0x0004 327*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOC_CHANGE_FAILED 0x0008 328*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_CHANGE_DENIED SCTP_ASSOC_CHANGE_DENIED 329*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_CHANGE_FAILED SCTP_ASSOC_CHANGE_FAILED 330*cda5da8dSAndroid Build Coastguard Worker struct sctp_stream_change_event { 331*cda5da8dSAndroid Build Coastguard Worker __u16 strchange_type; 332*cda5da8dSAndroid Build Coastguard Worker __u16 strchange_flags; 333*cda5da8dSAndroid Build Coastguard Worker __u32 strchange_length; 334*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t strchange_assoc_id; 335*cda5da8dSAndroid Build Coastguard Worker __u16 strchange_instrms; 336*cda5da8dSAndroid Build Coastguard Worker __u16 strchange_outstrms; 337*cda5da8dSAndroid Build Coastguard Worker }; 338*cda5da8dSAndroid Build Coastguard Worker struct sctp_event_subscribe { 339*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_data_io_event; 340*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_association_event; 341*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_address_event; 342*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_send_failure_event; 343*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_peer_error_event; 344*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_shutdown_event; 345*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_partial_delivery_event; 346*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_adaptation_layer_event; 347*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_authentication_event; 348*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_sender_dry_event; 349*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_stream_reset_event; 350*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_assoc_reset_event; 351*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_stream_change_event; 352*cda5da8dSAndroid Build Coastguard Worker __u8 sctp_send_failure_event_event; 353*cda5da8dSAndroid Build Coastguard Worker }; 354*cda5da8dSAndroid Build Coastguard Worker union sctp_notification { 355*cda5da8dSAndroid Build Coastguard Worker struct { 356*cda5da8dSAndroid Build Coastguard Worker __u16 sn_type; 357*cda5da8dSAndroid Build Coastguard Worker __u16 sn_flags; 358*cda5da8dSAndroid Build Coastguard Worker __u32 sn_length; 359*cda5da8dSAndroid Build Coastguard Worker } sn_header; 360*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_change sn_assoc_change; 361*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddr_change sn_paddr_change; 362*cda5da8dSAndroid Build Coastguard Worker struct sctp_remote_error sn_remote_error; 363*cda5da8dSAndroid Build Coastguard Worker struct sctp_send_failed sn_send_failed; 364*cda5da8dSAndroid Build Coastguard Worker struct sctp_shutdown_event sn_shutdown_event; 365*cda5da8dSAndroid Build Coastguard Worker struct sctp_adaptation_event sn_adaptation_event; 366*cda5da8dSAndroid Build Coastguard Worker struct sctp_pdapi_event sn_pdapi_event; 367*cda5da8dSAndroid Build Coastguard Worker struct sctp_authkey_event sn_authkey_event; 368*cda5da8dSAndroid Build Coastguard Worker struct sctp_sender_dry_event sn_sender_dry_event; 369*cda5da8dSAndroid Build Coastguard Worker struct sctp_stream_reset_event sn_strreset_event; 370*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_reset_event sn_assocreset_event; 371*cda5da8dSAndroid Build Coastguard Worker struct sctp_stream_change_event sn_strchange_event; 372*cda5da8dSAndroid Build Coastguard Worker struct sctp_send_failed_event sn_send_failed_event; 373*cda5da8dSAndroid Build Coastguard Worker }; 374*cda5da8dSAndroid Build Coastguard Worker enum sctp_sn_type { 375*cda5da8dSAndroid Build Coastguard Worker SCTP_SN_TYPE_BASE = (1 << 15), 376*cda5da8dSAndroid Build Coastguard Worker SCTP_DATA_IO_EVENT = SCTP_SN_TYPE_BASE, 377*cda5da8dSAndroid Build Coastguard Worker #define SCTP_DATA_IO_EVENT SCTP_DATA_IO_EVENT 378*cda5da8dSAndroid Build Coastguard Worker SCTP_ASSOC_CHANGE, 379*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOC_CHANGE SCTP_ASSOC_CHANGE 380*cda5da8dSAndroid Build Coastguard Worker SCTP_PEER_ADDR_CHANGE, 381*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PEER_ADDR_CHANGE SCTP_PEER_ADDR_CHANGE 382*cda5da8dSAndroid Build Coastguard Worker SCTP_SEND_FAILED, 383*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SEND_FAILED SCTP_SEND_FAILED 384*cda5da8dSAndroid Build Coastguard Worker SCTP_REMOTE_ERROR, 385*cda5da8dSAndroid Build Coastguard Worker #define SCTP_REMOTE_ERROR SCTP_REMOTE_ERROR 386*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_EVENT, 387*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SHUTDOWN_EVENT SCTP_SHUTDOWN_EVENT 388*cda5da8dSAndroid Build Coastguard Worker SCTP_PARTIAL_DELIVERY_EVENT, 389*cda5da8dSAndroid Build Coastguard Worker #define SCTP_PARTIAL_DELIVERY_EVENT SCTP_PARTIAL_DELIVERY_EVENT 390*cda5da8dSAndroid Build Coastguard Worker SCTP_ADAPTATION_INDICATION, 391*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ADAPTATION_INDICATION SCTP_ADAPTATION_INDICATION 392*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTHENTICATION_EVENT, 393*cda5da8dSAndroid Build Coastguard Worker #define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT 394*cda5da8dSAndroid Build Coastguard Worker SCTP_SENDER_DRY_EVENT, 395*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SENDER_DRY_EVENT SCTP_SENDER_DRY_EVENT 396*cda5da8dSAndroid Build Coastguard Worker SCTP_STREAM_RESET_EVENT, 397*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_RESET_EVENT SCTP_STREAM_RESET_EVENT 398*cda5da8dSAndroid Build Coastguard Worker SCTP_ASSOC_RESET_EVENT, 399*cda5da8dSAndroid Build Coastguard Worker #define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT 400*cda5da8dSAndroid Build Coastguard Worker SCTP_STREAM_CHANGE_EVENT, 401*cda5da8dSAndroid Build Coastguard Worker #define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT 402*cda5da8dSAndroid Build Coastguard Worker SCTP_SEND_FAILED_EVENT, 403*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SEND_FAILED_EVENT SCTP_SEND_FAILED_EVENT 404*cda5da8dSAndroid Build Coastguard Worker SCTP_SN_TYPE_MAX = SCTP_SEND_FAILED_EVENT, 405*cda5da8dSAndroid Build Coastguard Worker #define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX 406*cda5da8dSAndroid Build Coastguard Worker }; 407*cda5da8dSAndroid Build Coastguard Worker typedef enum sctp_sn_error { 408*cda5da8dSAndroid Build Coastguard Worker SCTP_FAILED_THRESHOLD, 409*cda5da8dSAndroid Build Coastguard Worker SCTP_RECEIVED_SACK, 410*cda5da8dSAndroid Build Coastguard Worker SCTP_HEARTBEAT_SUCCESS, 411*cda5da8dSAndroid Build Coastguard Worker SCTP_RESPONSE_TO_USER_REQ, 412*cda5da8dSAndroid Build Coastguard Worker SCTP_INTERNAL_ERROR, 413*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_GUARD_EXPIRES, 414*cda5da8dSAndroid Build Coastguard Worker SCTP_PEER_FAULTY, 415*cda5da8dSAndroid Build Coastguard Worker } sctp_sn_error_t; 416*cda5da8dSAndroid Build Coastguard Worker struct sctp_rtoinfo { 417*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t srto_assoc_id; 418*cda5da8dSAndroid Build Coastguard Worker __u32 srto_initial; 419*cda5da8dSAndroid Build Coastguard Worker __u32 srto_max; 420*cda5da8dSAndroid Build Coastguard Worker __u32 srto_min; 421*cda5da8dSAndroid Build Coastguard Worker }; 422*cda5da8dSAndroid Build Coastguard Worker struct sctp_assocparams { 423*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sasoc_assoc_id; 424*cda5da8dSAndroid Build Coastguard Worker __u16 sasoc_asocmaxrxt; 425*cda5da8dSAndroid Build Coastguard Worker __u16 sasoc_number_peer_destinations; 426*cda5da8dSAndroid Build Coastguard Worker __u32 sasoc_peer_rwnd; 427*cda5da8dSAndroid Build Coastguard Worker __u32 sasoc_local_rwnd; 428*cda5da8dSAndroid Build Coastguard Worker __u32 sasoc_cookie_life; 429*cda5da8dSAndroid Build Coastguard Worker }; 430*cda5da8dSAndroid Build Coastguard Worker struct sctp_setpeerprim { 431*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sspp_assoc_id; 432*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage sspp_addr; 433*cda5da8dSAndroid Build Coastguard Worker } __attribute__((packed, aligned(4))); 434*cda5da8dSAndroid Build Coastguard Worker struct sctp_prim { 435*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t ssp_assoc_id; 436*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage ssp_addr; 437*cda5da8dSAndroid Build Coastguard Worker } __attribute__((packed, aligned(4))); 438*cda5da8dSAndroid Build Coastguard Worker #define sctp_setprim sctp_prim 439*cda5da8dSAndroid Build Coastguard Worker struct sctp_setadaptation { 440*cda5da8dSAndroid Build Coastguard Worker __u32 ssb_adaptation_ind; 441*cda5da8dSAndroid Build Coastguard Worker }; 442*cda5da8dSAndroid Build Coastguard Worker enum sctp_spp_flags { 443*cda5da8dSAndroid Build Coastguard Worker SPP_HB_ENABLE = 1 << 0, 444*cda5da8dSAndroid Build Coastguard Worker SPP_HB_DISABLE = 1 << 1, 445*cda5da8dSAndroid Build Coastguard Worker SPP_HB = SPP_HB_ENABLE | SPP_HB_DISABLE, 446*cda5da8dSAndroid Build Coastguard Worker SPP_HB_DEMAND = 1 << 2, 447*cda5da8dSAndroid Build Coastguard Worker SPP_PMTUD_ENABLE = 1 << 3, 448*cda5da8dSAndroid Build Coastguard Worker SPP_PMTUD_DISABLE = 1 << 4, 449*cda5da8dSAndroid Build Coastguard Worker SPP_PMTUD = SPP_PMTUD_ENABLE | SPP_PMTUD_DISABLE, 450*cda5da8dSAndroid Build Coastguard Worker SPP_SACKDELAY_ENABLE = 1 << 5, 451*cda5da8dSAndroid Build Coastguard Worker SPP_SACKDELAY_DISABLE = 1 << 6, 452*cda5da8dSAndroid Build Coastguard Worker SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE, 453*cda5da8dSAndroid Build Coastguard Worker SPP_HB_TIME_IS_ZERO = 1 << 7, 454*cda5da8dSAndroid Build Coastguard Worker SPP_IPV6_FLOWLABEL = 1 << 8, 455*cda5da8dSAndroid Build Coastguard Worker SPP_DSCP = 1 << 9, 456*cda5da8dSAndroid Build Coastguard Worker }; 457*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddrparams { 458*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t spp_assoc_id; 459*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage spp_address; 460*cda5da8dSAndroid Build Coastguard Worker __u32 spp_hbinterval; 461*cda5da8dSAndroid Build Coastguard Worker __u16 spp_pathmaxrxt; 462*cda5da8dSAndroid Build Coastguard Worker __u32 spp_pathmtu; 463*cda5da8dSAndroid Build Coastguard Worker __u32 spp_sackdelay; 464*cda5da8dSAndroid Build Coastguard Worker __u32 spp_flags; 465*cda5da8dSAndroid Build Coastguard Worker __u32 spp_ipv6_flowlabel; 466*cda5da8dSAndroid Build Coastguard Worker __u8 spp_dscp; 467*cda5da8dSAndroid Build Coastguard Worker } __attribute__((packed, aligned(4))); 468*cda5da8dSAndroid Build Coastguard Worker struct sctp_authchunk { 469*cda5da8dSAndroid Build Coastguard Worker __u8 sauth_chunk; 470*cda5da8dSAndroid Build Coastguard Worker }; 471*cda5da8dSAndroid Build Coastguard Worker enum { 472*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTH_HMAC_ID_SHA1 = 1, 473*cda5da8dSAndroid Build Coastguard Worker SCTP_AUTH_HMAC_ID_SHA256 = 3, 474*cda5da8dSAndroid Build Coastguard Worker }; 475*cda5da8dSAndroid Build Coastguard Worker struct sctp_hmacalgo { 476*cda5da8dSAndroid Build Coastguard Worker __u32 shmac_num_idents; 477*cda5da8dSAndroid Build Coastguard Worker __u16 shmac_idents[]; 478*cda5da8dSAndroid Build Coastguard Worker }; 479*cda5da8dSAndroid Build Coastguard Worker #define shmac_number_of_idents shmac_num_idents 480*cda5da8dSAndroid Build Coastguard Worker struct sctp_authkey { 481*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sca_assoc_id; 482*cda5da8dSAndroid Build Coastguard Worker __u16 sca_keynumber; 483*cda5da8dSAndroid Build Coastguard Worker __u16 sca_keylength; 484*cda5da8dSAndroid Build Coastguard Worker __u8 sca_key[]; 485*cda5da8dSAndroid Build Coastguard Worker }; 486*cda5da8dSAndroid Build Coastguard Worker struct sctp_authkeyid { 487*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t scact_assoc_id; 488*cda5da8dSAndroid Build Coastguard Worker __u16 scact_keynumber; 489*cda5da8dSAndroid Build Coastguard Worker }; 490*cda5da8dSAndroid Build Coastguard Worker struct sctp_sack_info { 491*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sack_assoc_id; 492*cda5da8dSAndroid Build Coastguard Worker uint32_t sack_delay; 493*cda5da8dSAndroid Build Coastguard Worker uint32_t sack_freq; 494*cda5da8dSAndroid Build Coastguard Worker }; 495*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_value { 496*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t assoc_id; 497*cda5da8dSAndroid Build Coastguard Worker uint32_t assoc_value; 498*cda5da8dSAndroid Build Coastguard Worker }; 499*cda5da8dSAndroid Build Coastguard Worker struct sctp_stream_value { 500*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t assoc_id; 501*cda5da8dSAndroid Build Coastguard Worker uint16_t stream_id; 502*cda5da8dSAndroid Build Coastguard Worker uint16_t stream_value; 503*cda5da8dSAndroid Build Coastguard Worker }; 504*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddrinfo { 505*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t spinfo_assoc_id; 506*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage spinfo_address; 507*cda5da8dSAndroid Build Coastguard Worker __s32 spinfo_state; 508*cda5da8dSAndroid Build Coastguard Worker __u32 spinfo_cwnd; 509*cda5da8dSAndroid Build Coastguard Worker __u32 spinfo_srtt; 510*cda5da8dSAndroid Build Coastguard Worker __u32 spinfo_rto; 511*cda5da8dSAndroid Build Coastguard Worker __u32 spinfo_mtu; 512*cda5da8dSAndroid Build Coastguard Worker } __attribute__((packed, aligned(4))); 513*cda5da8dSAndroid Build Coastguard Worker enum sctp_spinfo_state { 514*cda5da8dSAndroid Build Coastguard Worker SCTP_INACTIVE, 515*cda5da8dSAndroid Build Coastguard Worker SCTP_PF, 516*cda5da8dSAndroid Build Coastguard Worker #define SCTP_POTENTIALLY_FAILED SCTP_PF 517*cda5da8dSAndroid Build Coastguard Worker SCTP_ACTIVE, 518*cda5da8dSAndroid Build Coastguard Worker SCTP_UNCONFIRMED, 519*cda5da8dSAndroid Build Coastguard Worker SCTP_UNKNOWN = 0xffff 520*cda5da8dSAndroid Build Coastguard Worker }; 521*cda5da8dSAndroid Build Coastguard Worker struct sctp_status { 522*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sstat_assoc_id; 523*cda5da8dSAndroid Build Coastguard Worker __s32 sstat_state; 524*cda5da8dSAndroid Build Coastguard Worker __u32 sstat_rwnd; 525*cda5da8dSAndroid Build Coastguard Worker __u16 sstat_unackdata; 526*cda5da8dSAndroid Build Coastguard Worker __u16 sstat_penddata; 527*cda5da8dSAndroid Build Coastguard Worker __u16 sstat_instrms; 528*cda5da8dSAndroid Build Coastguard Worker __u16 sstat_outstrms; 529*cda5da8dSAndroid Build Coastguard Worker __u32 sstat_fragmentation_point; 530*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddrinfo sstat_primary; 531*cda5da8dSAndroid Build Coastguard Worker }; 532*cda5da8dSAndroid Build Coastguard Worker struct sctp_authchunks { 533*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t gauth_assoc_id; 534*cda5da8dSAndroid Build Coastguard Worker __u32 gauth_number_of_chunks; 535*cda5da8dSAndroid Build Coastguard Worker uint8_t gauth_chunks[]; 536*cda5da8dSAndroid Build Coastguard Worker }; 537*cda5da8dSAndroid Build Coastguard Worker #define guth_number_of_chunks gauth_number_of_chunks 538*cda5da8dSAndroid Build Coastguard Worker enum sctp_sstat_state { 539*cda5da8dSAndroid Build Coastguard Worker SCTP_EMPTY = 0, 540*cda5da8dSAndroid Build Coastguard Worker SCTP_CLOSED = 1, 541*cda5da8dSAndroid Build Coastguard Worker SCTP_COOKIE_WAIT = 2, 542*cda5da8dSAndroid Build Coastguard Worker SCTP_COOKIE_ECHOED = 3, 543*cda5da8dSAndroid Build Coastguard Worker SCTP_ESTABLISHED = 4, 544*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_PENDING = 5, 545*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_SENT = 6, 546*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_RECEIVED = 7, 547*cda5da8dSAndroid Build Coastguard Worker SCTP_SHUTDOWN_ACK_SENT = 8, 548*cda5da8dSAndroid Build Coastguard Worker }; 549*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_ids { 550*cda5da8dSAndroid Build Coastguard Worker __u32 gaids_number_of_ids; 551*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t gaids_assoc_id[]; 552*cda5da8dSAndroid Build Coastguard Worker }; 553*cda5da8dSAndroid Build Coastguard Worker struct sctp_getaddrs_old { 554*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t assoc_id; 555*cda5da8dSAndroid Build Coastguard Worker int addr_num; 556*cda5da8dSAndroid Build Coastguard Worker struct sockaddr * addrs; 557*cda5da8dSAndroid Build Coastguard Worker }; 558*cda5da8dSAndroid Build Coastguard Worker struct sctp_getaddrs { 559*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t assoc_id; 560*cda5da8dSAndroid Build Coastguard Worker __u32 addr_num; 561*cda5da8dSAndroid Build Coastguard Worker __u8 addrs[]; 562*cda5da8dSAndroid Build Coastguard Worker }; 563*cda5da8dSAndroid Build Coastguard Worker struct sctp_assoc_stats { 564*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sas_assoc_id; 565*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage sas_obs_rto_ipaddr; 566*cda5da8dSAndroid Build Coastguard Worker __u64 sas_maxrto; 567*cda5da8dSAndroid Build Coastguard Worker __u64 sas_isacks; 568*cda5da8dSAndroid Build Coastguard Worker __u64 sas_osacks; 569*cda5da8dSAndroid Build Coastguard Worker __u64 sas_opackets; 570*cda5da8dSAndroid Build Coastguard Worker __u64 sas_ipackets; 571*cda5da8dSAndroid Build Coastguard Worker __u64 sas_rtxchunks; 572*cda5da8dSAndroid Build Coastguard Worker __u64 sas_outofseqtsns; 573*cda5da8dSAndroid Build Coastguard Worker __u64 sas_idupchunks; 574*cda5da8dSAndroid Build Coastguard Worker __u64 sas_gapcnt; 575*cda5da8dSAndroid Build Coastguard Worker __u64 sas_ouodchunks; 576*cda5da8dSAndroid Build Coastguard Worker __u64 sas_iuodchunks; 577*cda5da8dSAndroid Build Coastguard Worker __u64 sas_oodchunks; 578*cda5da8dSAndroid Build Coastguard Worker __u64 sas_iodchunks; 579*cda5da8dSAndroid Build Coastguard Worker __u64 sas_octrlchunks; 580*cda5da8dSAndroid Build Coastguard Worker __u64 sas_ictrlchunks; 581*cda5da8dSAndroid Build Coastguard Worker }; 582*cda5da8dSAndroid Build Coastguard Worker #define SCTP_BINDX_ADD_ADDR 0x01 583*cda5da8dSAndroid Build Coastguard Worker #define SCTP_BINDX_REM_ADDR 0x02 584*cda5da8dSAndroid Build Coastguard Worker typedef struct { 585*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t associd; 586*cda5da8dSAndroid Build Coastguard Worker int sd; 587*cda5da8dSAndroid Build Coastguard Worker } sctp_peeloff_arg_t; 588*cda5da8dSAndroid Build Coastguard Worker typedef struct { 589*cda5da8dSAndroid Build Coastguard Worker sctp_peeloff_arg_t p_arg; 590*cda5da8dSAndroid Build Coastguard Worker unsigned flags; 591*cda5da8dSAndroid Build Coastguard Worker } sctp_peeloff_flags_arg_t; 592*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddrthlds { 593*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t spt_assoc_id; 594*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage spt_address; 595*cda5da8dSAndroid Build Coastguard Worker __u16 spt_pathmaxrxt; 596*cda5da8dSAndroid Build Coastguard Worker __u16 spt_pathpfthld; 597*cda5da8dSAndroid Build Coastguard Worker }; 598*cda5da8dSAndroid Build Coastguard Worker struct sctp_paddrthlds_v2 { 599*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t spt_assoc_id; 600*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage spt_address; 601*cda5da8dSAndroid Build Coastguard Worker __u16 spt_pathmaxrxt; 602*cda5da8dSAndroid Build Coastguard Worker __u16 spt_pathpfthld; 603*cda5da8dSAndroid Build Coastguard Worker __u16 spt_pathcpthld; 604*cda5da8dSAndroid Build Coastguard Worker }; 605*cda5da8dSAndroid Build Coastguard Worker struct sctp_prstatus { 606*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sprstat_assoc_id; 607*cda5da8dSAndroid Build Coastguard Worker __u16 sprstat_sid; 608*cda5da8dSAndroid Build Coastguard Worker __u16 sprstat_policy; 609*cda5da8dSAndroid Build Coastguard Worker __u64 sprstat_abandoned_unsent; 610*cda5da8dSAndroid Build Coastguard Worker __u64 sprstat_abandoned_sent; 611*cda5da8dSAndroid Build Coastguard Worker }; 612*cda5da8dSAndroid Build Coastguard Worker struct sctp_default_prinfo { 613*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t pr_assoc_id; 614*cda5da8dSAndroid Build Coastguard Worker __u32 pr_value; 615*cda5da8dSAndroid Build Coastguard Worker __u16 pr_policy; 616*cda5da8dSAndroid Build Coastguard Worker }; 617*cda5da8dSAndroid Build Coastguard Worker struct sctp_info { 618*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_tag; 619*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_state; 620*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_rwnd; 621*cda5da8dSAndroid Build Coastguard Worker __u16 sctpi_unackdata; 622*cda5da8dSAndroid Build Coastguard Worker __u16 sctpi_penddata; 623*cda5da8dSAndroid Build Coastguard Worker __u16 sctpi_instrms; 624*cda5da8dSAndroid Build Coastguard Worker __u16 sctpi_outstrms; 625*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_fragmentation_point; 626*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_inqueue; 627*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_outqueue; 628*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_overall_error; 629*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_max_burst; 630*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_maxseg; 631*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_peer_rwnd; 632*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_peer_tag; 633*cda5da8dSAndroid Build Coastguard Worker __u8 sctpi_peer_capable; 634*cda5da8dSAndroid Build Coastguard Worker __u8 sctpi_peer_sack; 635*cda5da8dSAndroid Build Coastguard Worker __u16 __reserved1; 636*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_isacks; 637*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_osacks; 638*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_opackets; 639*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_ipackets; 640*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_rtxchunks; 641*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_outofseqtsns; 642*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_idupchunks; 643*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_gapcnt; 644*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_ouodchunks; 645*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_iuodchunks; 646*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_oodchunks; 647*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_iodchunks; 648*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_octrlchunks; 649*cda5da8dSAndroid Build Coastguard Worker __u64 sctpi_ictrlchunks; 650*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage sctpi_p_address; 651*cda5da8dSAndroid Build Coastguard Worker __s32 sctpi_p_state; 652*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_cwnd; 653*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_srtt; 654*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_rto; 655*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_hbinterval; 656*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_pathmaxrxt; 657*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_sackdelay; 658*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_sackfreq; 659*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_ssthresh; 660*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_partial_bytes_acked; 661*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_p_flight_size; 662*cda5da8dSAndroid Build Coastguard Worker __u16 sctpi_p_error; 663*cda5da8dSAndroid Build Coastguard Worker __u16 __reserved2; 664*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_s_autoclose; 665*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_s_adaptation_ind; 666*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_s_pd_point; 667*cda5da8dSAndroid Build Coastguard Worker __u8 sctpi_s_nodelay; 668*cda5da8dSAndroid Build Coastguard Worker __u8 sctpi_s_disable_fragments; 669*cda5da8dSAndroid Build Coastguard Worker __u8 sctpi_s_v4mapped; 670*cda5da8dSAndroid Build Coastguard Worker __u8 sctpi_s_frag_interleave; 671*cda5da8dSAndroid Build Coastguard Worker __u32 sctpi_s_type; 672*cda5da8dSAndroid Build Coastguard Worker __u32 __reserved3; 673*cda5da8dSAndroid Build Coastguard Worker }; 674*cda5da8dSAndroid Build Coastguard Worker struct sctp_reset_streams { 675*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t srs_assoc_id; 676*cda5da8dSAndroid Build Coastguard Worker uint16_t srs_flags; 677*cda5da8dSAndroid Build Coastguard Worker uint16_t srs_number_streams; 678*cda5da8dSAndroid Build Coastguard Worker uint16_t srs_stream_list[]; 679*cda5da8dSAndroid Build Coastguard Worker }; 680*cda5da8dSAndroid Build Coastguard Worker struct sctp_add_streams { 681*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sas_assoc_id; 682*cda5da8dSAndroid Build Coastguard Worker uint16_t sas_instrms; 683*cda5da8dSAndroid Build Coastguard Worker uint16_t sas_outstrms; 684*cda5da8dSAndroid Build Coastguard Worker }; 685*cda5da8dSAndroid Build Coastguard Worker struct sctp_event { 686*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t se_assoc_id; 687*cda5da8dSAndroid Build Coastguard Worker uint16_t se_type; 688*cda5da8dSAndroid Build Coastguard Worker uint8_t se_on; 689*cda5da8dSAndroid Build Coastguard Worker }; 690*cda5da8dSAndroid Build Coastguard Worker struct sctp_udpencaps { 691*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t sue_assoc_id; 692*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage sue_address; 693*cda5da8dSAndroid Build Coastguard Worker uint16_t sue_port; 694*cda5da8dSAndroid Build Coastguard Worker }; 695*cda5da8dSAndroid Build Coastguard Worker enum sctp_sched_type { 696*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_FCFS, 697*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_DEFAULT = SCTP_SS_FCFS, 698*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_PRIO, 699*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_RR, 700*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_FC, 701*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_WFQ, 702*cda5da8dSAndroid Build Coastguard Worker SCTP_SS_MAX = SCTP_SS_WFQ 703*cda5da8dSAndroid Build Coastguard Worker }; 704*cda5da8dSAndroid Build Coastguard Worker struct sctp_probeinterval { 705*cda5da8dSAndroid Build Coastguard Worker sctp_assoc_t spi_assoc_id; 706*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_storage spi_address; 707*cda5da8dSAndroid Build Coastguard Worker __u32 spi_interval; 708*cda5da8dSAndroid Build Coastguard Worker }; 709*cda5da8dSAndroid Build Coastguard Worker #endif 710