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