• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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