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