Home | History | Annotate | Download | only in linux
      1 # Copyright 2017 syzkaller project authors. All rights reserved.
      2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
      3 
      4 # AF_INET and AF_INET6: SCTP support
      5 
      6 include <linux/sctp.h>
      7 include <asm/ioctls.h>
      8 
      9 resource sock_sctp[sock_in]
     10 
     11 sctp_pair {
     12 	f0	sock_sctp
     13 	f1	sock_sctp
     14 }
     15 
     16 socket$inet_sctp(domain const[AF_INET], type flags[sctp_socket_type], proto const[IPPROTO_SCTP]) sock_sctp
     17 socketpair$inet_sctp(domain const[AF_INET], type flags[sctp_socket_type], proto const[IPPROTO_SCTP], fds ptr[out, sctp_pair])
     18 
     19 sctp_socket_type = SOCK_STREAM, SOCK_SEQPACKET
     20 
     21 resource sock_sctp6[sock_in6]
     22 
     23 sctp6_pair {
     24 	f0	sock_sctp6
     25 	f1	sock_sctp6
     26 }
     27 
     28 socket$inet6_sctp(domain const[AF_INET6], type flags[sctp_socket_type], proto const[IPPROTO_SCTP]) sock_sctp6
     29 socketpair$inet6_sctp(domain const[AF_INET6], type flags[sctp_socket_type], proto const[IPPROTO_SCTP], fds ptr[out, sctp6_pair])
     30 
     31 # TODO: separate for ip & ipv6
     32 sendmsg$inet_sctp(fd sock_sctp, msg ptr[in, msghdr_sctp], f flags[send_flags])
     33 sendmmsg$inet_sctp(fd sock_sctp, mmsg ptr[in, array[msghdr_sctp]], vlen len[mmsg], f flags[send_flags])
     34 
     35 msghdr_sctp {
     36 	addr	ptr[in, sockaddr_sctp]
     37 	addrlen	len[addr, int32]
     38 	vec	ptr[in, array[iovec_in]]
     39 	vlen	len[vec, intptr]
     40 	ctrl	ptr[in, array[cmsghdr_sctp], opt]
     41 	ctrllen	bytesize[ctrl, intptr]
     42 	f	flags[send_flags, int32]
     43 }
     44 
     45 cmsghdr_sctp [
     46 	init		cmsghdr_sctp_init
     47 	sndrcv		cmsghdr_sctp_sndrcv
     48 	sndinfo		cmsghdr_sctp_sndinfo
     49 	prinfo		cmsghdr_sctp_prinfo
     50 	authinfo	cmsghdr_sctp_authinfo
     51 	dstaddrv4	cmsghdr_sctp_dstaddrv4
     52 	dstaddrv6	cmsghdr_sctp_dstaddrv6
     53 ] [varlen]
     54 
     55 cmsghdr_sctp_init {
     56 	len	len[parent, intptr]
     57 	level	const[IPPROTO_SCTP, int32]
     58 	type	const[SCTP_INIT, int32]
     59 	msg	sctp_initmsg
     60 } [align_ptr]
     61 
     62 cmsghdr_sctp_sndrcv {
     63 	len	len[parent, intptr]
     64 	level	const[IPPROTO_SCTP, int32]
     65 	type	const[SCTP_SNDRCV, int32]
     66 	msg	sctp_sndrcvinfo
     67 } [align_ptr]
     68 
     69 cmsghdr_sctp_sndinfo {
     70 	len	len[parent, intptr]
     71 	level	const[IPPROTO_SCTP, int32]
     72 	type	const[SCTP_SNDINFO, int32]
     73 	msg	sctp_sndinfo
     74 } [align_ptr]
     75 
     76 cmsghdr_sctp_prinfo {
     77 	len	len[parent, intptr]
     78 	level	const[IPPROTO_SCTP, int32]
     79 	type	const[SCTP_PRINFO, int32]
     80 	msg	sctp_prinfo
     81 } [align_ptr]
     82 
     83 sctp_prinfo {
     84 	pr_policy	flags[sctp_pr_policies, int16]
     85 	pr_value	int32
     86 }
     87 
     88 cmsghdr_sctp_authinfo {
     89 	len	len[parent, intptr]
     90 	level	const[IPPROTO_SCTP, int32]
     91 	type	const[SCTP_AUTHINFO, int32]
     92 	msg	sctp_authinfo
     93 } [align_ptr]
     94 
     95 sctp_authinfo {
     96 	auth_keynumber	int16
     97 }
     98 
     99 cmsghdr_sctp_dstaddrv4 {
    100 	len	len[parent, intptr]
    101 	level	const[IPPROTO_SCTP, int32]
    102 	type	const[SCTP_DSTADDRV4, int32]
    103 	msg	ipv4_addr
    104 } [align_ptr]
    105 
    106 cmsghdr_sctp_dstaddrv6 {
    107 	len	len[parent, intptr]
    108 	level	const[IPPROTO_SCTP, int32]
    109 	type	const[SCTP_DSTADDRV6, int32]
    110 	msg	ipv6_addr
    111 } [align_ptr]
    112 
    113 # Specific SCTP socket options
    114 
    115 resource assoc_id[int32]: 0
    116 
    117 setsockopt$inet_sctp_SCTP_RTOINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RTOINFO], val ptr[in, sctp_rtoinfo], len len[val])
    118 setsockopt$inet_sctp6_SCTP_RTOINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RTOINFO], val ptr[in, sctp_rtoinfo], len len[val])
    119 getsockopt$inet_sctp_SCTP_RTOINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RTOINFO], val ptr[inout, sctp_rtoinfo], len ptr[inout, len[val, int32]])
    120 getsockopt$inet_sctp6_SCTP_RTOINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RTOINFO], val ptr[inout, sctp_rtoinfo], len ptr[inout, len[val, int32]])
    121 
    122 setsockopt$inet_sctp_SCTP_ASSOCINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ASSOCINFO], val ptr[in, sctp_assocparams], len len[val])
    123 setsockopt$inet_sctp6_SCTP_ASSOCINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ASSOCINFO], val ptr[in, sctp_assocparams], len len[val])
    124 getsockopt$inet_sctp_SCTP_ASSOCINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ASSOCINFO], val ptr[inout, sctp_assocparams], len ptr[inout, len[val, int32]])
    125 getsockopt$inet_sctp6_SCTP_ASSOCINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ASSOCINFO], val ptr[inout, sctp_assocparams], len ptr[inout, len[val, int32]])
    126 
    127 setsockopt$inet_sctp_SCTP_INITMSG(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_INITMSG], val ptr[in, sctp_initmsg], len len[val])
    128 setsockopt$inet_sctp6_SCTP_INITMSG(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_INITMSG], val ptr[in, sctp_initmsg], len len[val])
    129 getsockopt$inet_sctp_SCTP_INITMSG(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_INITMSG], val ptr[out, sctp_initmsg], len ptr[inout, len[val, int32]])
    130 getsockopt$inet_sctp6_SCTP_INITMSG(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_INITMSG], val ptr[out, sctp_initmsg], len ptr[inout, len[val, int32]])
    131 
    132 setsockopt$inet_sctp_SCTP_NODELAY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_NODELAY], val ptr[in, int32], len len[val])
    133 setsockopt$inet_sctp6_SCTP_NODELAY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_NODELAY], val ptr[in, int32], len len[val])
    134 getsockopt$inet_sctp_SCTP_NODELAY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_NODELAY], val ptr[out, int32], len ptr[inout, len[val, int32]])
    135 getsockopt$inet_sctp6_SCTP_NODELAY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_NODELAY], val ptr[out, int32], len ptr[inout, len[val, int32]])
    136 
    137 setsockopt$inet_sctp_SCTP_AUTOCLOSE(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTOCLOSE], val ptr[in, int32], len len[val])
    138 setsockopt$inet_sctp6_SCTP_AUTOCLOSE(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTOCLOSE], val ptr[in, int32], len len[val])
    139 getsockopt$inet_sctp_SCTP_AUTOCLOSE(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTOCLOSE], val ptr[out, int32], len ptr[inout, len[val, int32]])
    140 getsockopt$inet_sctp6_SCTP_AUTOCLOSE(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTOCLOSE], val ptr[out, int32], len ptr[inout, len[val, int32]])
    141 
    142 setsockopt$inet_sctp_SCTP_SET_PEER_PRIMARY_ADDR(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SET_PEER_PRIMARY_ADDR], val ptr[in, sctp_prim], len len[val])
    143 setsockopt$inet_sctp6_SCTP_SET_PEER_PRIMARY_ADDR(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SET_PEER_PRIMARY_ADDR], val ptr[in, sctp_prim], len len[val])
    144 
    145 setsockopt$inet_sctp_SCTP_PRIMARY_ADDR(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PRIMARY_ADDR], val ptr[in, sctp_prim], len len[val])
    146 setsockopt$inet_sctp6_SCTP_PRIMARY_ADDR(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PRIMARY_ADDR], val ptr[in, sctp_prim], len len[val])
    147 getsockopt$inet_sctp_SCTP_PRIMARY_ADDR(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PRIMARY_ADDR], val ptr[inout, sctp_prim], len ptr[inout, len[val, int32]])
    148 getsockopt$inet_sctp6_SCTP_PRIMARY_ADDR(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PRIMARY_ADDR], val ptr[inout, sctp_prim], len ptr[inout, len[val, int32]])
    149 
    150 setsockopt$inet_sctp_SCTP_ADAPTATION_LAYER(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ADAPTATION_LAYER], val ptr[in, sctp_setadaptation], len len[val])
    151 setsockopt$inet_sctp6_SCTP_ADAPTATION_LAYER(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ADAPTATION_LAYER], val ptr[in, sctp_setadaptation], len len[val])
    152 getsockopt$inet_sctp_SCTP_ADAPTATION_LAYER(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ADAPTATION_LAYER], val ptr[out, sctp_setadaptation], len ptr[inout, len[val, int32]])
    153 getsockopt$inet_sctp6_SCTP_ADAPTATION_LAYER(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ADAPTATION_LAYER], val ptr[out, sctp_setadaptation], len ptr[inout, len[val, int32]])
    154 
    155 setsockopt$inet_sctp_SCTP_DISABLE_FRAGMENTS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DISABLE_FRAGMENTS], val ptr[in, int32], len len[val])
    156 setsockopt$inet_sctp6_SCTP_DISABLE_FRAGMENTS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DISABLE_FRAGMENTS], val ptr[in, int32], len len[val])
    157 getsockopt$inet_sctp_SCTP_DISABLE_FRAGMENTS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DISABLE_FRAGMENTS], val ptr[out, int32], len ptr[inout, len[val, int32]])
    158 getsockopt$inet_sctp6_SCTP_DISABLE_FRAGMENTS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DISABLE_FRAGMENTS], val ptr[out, int32], len ptr[inout, len[val, int32]])
    159 
    160 setsockopt$inet_sctp_SCTP_PEER_ADDR_PARAMS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_PARAMS], val ptr[in, sctp_paddrparams], len len[val])
    161 setsockopt$inet_sctp6_SCTP_PEER_ADDR_PARAMS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_PARAMS], val ptr[in, sctp_paddrparams], len len[val])
    162 getsockopt$inet_sctp_SCTP_PEER_ADDR_PARAMS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_PARAMS], val ptr[inout, sctp_paddrparams], len ptr[inout, len[val, int32]])
    163 getsockopt$inet_sctp6_SCTP_PEER_ADDR_PARAMS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_PARAMS], val ptr[inout, sctp_paddrparams], len ptr[inout, len[val, int32]])
    164 
    165 setsockopt$inet_sctp_SCTP_DEFAULT_SEND_PARAM(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SEND_PARAM], val ptr[in, sctp_sndrcvinfo], len len[val])
    166 setsockopt$inet_sctp6_SCTP_DEFAULT_SEND_PARAM(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SEND_PARAM], val ptr[in, sctp_sndrcvinfo], len len[val])
    167 getsockopt$inet_sctp_SCTP_DEFAULT_SEND_PARAM(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SEND_PARAM], val ptr[inout, sctp_sndrcvinfo], len ptr[inout, len[val, int32]])
    168 getsockopt$inet_sctp6_SCTP_DEFAULT_SEND_PARAM(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SEND_PARAM], val ptr[inout, sctp_sndrcvinfo], len ptr[inout, len[val, int32]])
    169 
    170 setsockopt$inet_sctp_SCTP_EVENTS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_EVENTS], val ptr[in, sctp_event_subscribe], len len[val])
    171 setsockopt$inet_sctp6_SCTP_EVENTS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_EVENTS], val ptr[in, sctp_event_subscribe], len len[val])
    172 getsockopt$inet_sctp_SCTP_EVENTS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_EVENTS], val ptr[out, sctp_event_subscribe], len ptr[inout, len[val, int32]])
    173 getsockopt$inet_sctp6_SCTP_EVENTS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_EVENTS], val ptr[out, sctp_event_subscribe], len ptr[inout, len[val, int32]])
    174 
    175 setsockopt$inet_sctp_SCTP_I_WANT_MAPPED_V4_ADDR(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_I_WANT_MAPPED_V4_ADDR], val ptr[in, int32], len len[val])
    176 setsockopt$inet_sctp6_SCTP_I_WANT_MAPPED_V4_ADDR(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_I_WANT_MAPPED_V4_ADDR], val ptr[in, int32], len len[val])
    177 getsockopt$inet_sctp_SCTP_I_WANT_MAPPED_V4_ADDR(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_I_WANT_MAPPED_V4_ADDR], val ptr[out, int32], len ptr[inout, len[val, int32]])
    178 getsockopt$inet_sctp6_SCTP_I_WANT_MAPPED_V4_ADDR(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_I_WANT_MAPPED_V4_ADDR], val ptr[out, int32], len ptr[inout, len[val, int32]])
    179 
    180 setsockopt$inet_sctp_SCTP_MAXSEG(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_MAXSEG], val ptr[in, sctp_maxseg], len len[val])
    181 setsockopt$inet_sctp6_SCTP_MAXSEG(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_MAXSEG], val ptr[in, sctp_maxseg], len len[val])
    182 getsockopt$inet_sctp_SCTP_MAXSEG(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_MAXSEG], val ptr[inout, sctp_maxseg], len ptr[inout, len[val, int32]])
    183 getsockopt$inet_sctp6_SCTP_MAXSEG(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_MAXSEG], val ptr[inout, sctp_maxseg], len ptr[inout, len[val, int32]])
    184 
    185 getsockopt$inet_sctp_SCTP_STATUS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_STATUS], val ptr[inout, sctp_status], len ptr[inout, len[val, int32]])
    186 getsockopt$inet_sctp6_SCTP_STATUS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_STATUS], val ptr[inout, sctp_status], len ptr[inout, len[val, int32]])
    187 
    188 getsockopt$inet_sctp_SCTP_GET_PEER_ADDR_INFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_GET_PEER_ADDR_INFO], val ptr[inout, sctp_paddrinfo], len ptr[inout, len[val, int32]])
    189 getsockopt$inet_sctp6_SCTP_GET_PEER_ADDR_INFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_GET_PEER_ADDR_INFO], val ptr[inout, sctp_paddrinfo], len ptr[inout, len[val, int32]])
    190 
    191 setsockopt$inet_sctp_SCTP_DELAYED_SACK(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DELAYED_SACK], val ptr[in, sctp_delayed_sack], len len[val])
    192 setsockopt$inet_sctp6_SCTP_DELAYED_SACK(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DELAYED_SACK], val ptr[in, sctp_delayed_sack], len len[val])
    193 getsockopt$inet_sctp_SCTP_DELAYED_SACK(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DELAYED_SACK], val ptr[inout, sctp_delayed_sack], len ptr[inout, len[val, int32]])
    194 getsockopt$inet_sctp6_SCTP_DELAYED_SACK(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DELAYED_SACK], val ptr[inout, sctp_delayed_sack], len ptr[inout, len[val, int32]])
    195 
    196 setsockopt$inet_sctp_SCTP_CONTEXT(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_CONTEXT], val ptr[in, sctp_assoc_value], len len[val])
    197 setsockopt$inet_sctp6_SCTP_CONTEXT(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_CONTEXT], val ptr[in, sctp_assoc_value], len len[val])
    198 getsockopt$inet_sctp_SCTP_CONTEXT(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_CONTEXT], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    199 getsockopt$inet_sctp6_SCTP_CONTEXT(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_CONTEXT], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    200 
    201 setsockopt$inet_sctp_SCTP_FRAGMENT_INTERLEAVE(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_FRAGMENT_INTERLEAVE], val ptr[in, int32], len len[val])
    202 setsockopt$inet_sctp6_SCTP_FRAGMENT_INTERLEAVE(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_FRAGMENT_INTERLEAVE], val ptr[in, int32], len len[val])
    203 getsockopt$inet_sctp_SCTP_FRAGMENT_INTERLEAVE(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_FRAGMENT_INTERLEAVE], val ptr[out, int32], len ptr[inout, len[val, int32]])
    204 getsockopt$inet_sctp6_SCTP_FRAGMENT_INTERLEAVE(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_FRAGMENT_INTERLEAVE], val ptr[out, int32], len ptr[inout, len[val, int32]])
    205 
    206 setsockopt$inet_sctp_SCTP_PARTIAL_DELIVERY_POINT(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PARTIAL_DELIVERY_POINT], val ptr[in, int32], len len[val])
    207 setsockopt$inet_sctp6_SCTP_PARTIAL_DELIVERY_POINT(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PARTIAL_DELIVERY_POINT], val ptr[in, int32], len len[val])
    208 getsockopt$inet_sctp_SCTP_PARTIAL_DELIVERY_POINT(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PARTIAL_DELIVERY_POINT], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    209 getsockopt$inet_sctp6_SCTP_PARTIAL_DELIVERY_POINT(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PARTIAL_DELIVERY_POINT], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    210 
    211 setsockopt$inet_sctp_SCTP_MAX_BURST(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_MAX_BURST], val ptr[in, sctp_max_burst], len len[val])
    212 setsockopt$inet_sctp6_SCTP_MAX_BURST(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_MAX_BURST], val ptr[in, sctp_max_burst], len len[val])
    213 getsockopt$inet_sctp_SCTP_MAX_BURST(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_MAX_BURST], val ptr[out, sctp_max_burst], len ptr[inout, len[val, int32]])
    214 getsockopt$inet_sctp6_SCTP_MAX_BURST(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_MAX_BURST], val ptr[out, sctp_max_burst], len ptr[inout, len[val, int32]])
    215 
    216 setsockopt$inet_sctp_SCTP_AUTH_CHUNK(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTH_CHUNK], val ptr[in, sctp_authchunk], len len[val])
    217 setsockopt$inet_sctp6_SCTP_AUTH_CHUNK(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTH_CHUNK], val ptr[in, sctp_authchunk], len len[val])
    218 
    219 setsockopt$inet_sctp_SCTP_HMAC_IDENT(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_HMAC_IDENT], val ptr[in, sctp_hmacalgo], len len[val])
    220 setsockopt$inet_sctp6_SCTP_HMAC_IDENT(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_HMAC_IDENT], val ptr[in, sctp_hmacalgo], len len[val])
    221 getsockopt$inet_sctp_SCTP_HMAC_IDENT(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_HMAC_IDENT], val ptr[inout, sctp_hmacalgo], len ptr[inout, len[val, int32]])
    222 getsockopt$inet_sctp6_SCTP_HMAC_IDENT(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_HMAC_IDENT], val ptr[inout, sctp_hmacalgo], len ptr[inout, len[val, int32]])
    223 
    224 setsockopt$inet_sctp_SCTP_AUTH_KEY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTH_KEY], val ptr[in, sctp_authkey], len len[val])
    225 setsockopt$inet_sctp6_SCTP_AUTH_KEY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTH_KEY], val ptr[in, sctp_authkey], len len[val])
    226 
    227 setsockopt$inet_sctp_SCTP_AUTH_ACTIVE_KEY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTH_ACTIVE_KEY], val ptr[in, sctp_authkeyid], len len[val])
    228 setsockopt$inet_sctp6_SCTP_AUTH_ACTIVE_KEY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTH_ACTIVE_KEY], val ptr[in, sctp_authkeyid], len len[val])
    229 getsockopt$inet_sctp_SCTP_AUTH_ACTIVE_KEY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTH_ACTIVE_KEY], val ptr[inout, sctp_authkeyid], len ptr[inout, len[val, int32]])
    230 getsockopt$inet_sctp6_SCTP_AUTH_ACTIVE_KEY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTH_ACTIVE_KEY], val ptr[inout, sctp_authkeyid], len ptr[inout, len[val, int32]])
    231 
    232 setsockopt$inet_sctp_SCTP_AUTH_DELETE_KEY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTH_DELETE_KEY], val ptr[in, sctp_authkeyid], len len[val])
    233 setsockopt$inet_sctp6_SCTP_AUTH_DELETE_KEY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTH_DELETE_KEY], val ptr[in, sctp_authkeyid], len len[val])
    234 
    235 getsockopt$inet_sctp_SCTP_PEER_AUTH_CHUNKS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PEER_AUTH_CHUNKS], val ptr[inout, sctp_authchunks], len ptr[inout, len[val, int32]])
    236 getsockopt$inet_sctp6_SCTP_PEER_AUTH_CHUNKS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PEER_AUTH_CHUNKS], val ptr[inout, sctp_authchunks], len ptr[inout, len[val, int32]])
    237 
    238 getsockopt$inet_sctp_SCTP_LOCAL_AUTH_CHUNKS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_LOCAL_AUTH_CHUNKS], val ptr[inout, sctp_authchunks], len ptr[inout, len[val, int32]])
    239 getsockopt$inet_sctp6_SCTP_LOCAL_AUTH_CHUNKS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_LOCAL_AUTH_CHUNKS], val ptr[inout, sctp_authchunks], len ptr[inout, len[val, int32]])
    240 
    241 getsockopt$inet_sctp_SCTP_GET_ASSOC_NUMBER(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_GET_ASSOC_NUMBER], val ptr[out, int32], len ptr[inout, len[val, int32]])
    242 getsockopt$inet_sctp6_SCTP_GET_ASSOC_NUMBER(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_GET_ASSOC_NUMBER], val ptr[out, int32], len ptr[inout, len[val, int32]])
    243 
    244 getsockopt$inet_sctp_SCTP_GET_ASSOC_ID_LIST(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_GET_ASSOC_ID_LIST], val ptr[out, sctp_assoc_ids], len ptr[inout, len[val, int32]])
    245 getsockopt$inet_sctp6_SCTP_GET_ASSOC_ID_LIST(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_GET_ASSOC_ID_LIST], val ptr[out, sctp_assoc_ids], len ptr[inout, len[val, int32]])
    246 
    247 setsockopt$inet_sctp_SCTP_AUTO_ASCONF(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTO_ASCONF], val ptr[in, int32], len len[val])
    248 setsockopt$inet_sctp6_SCTP_AUTO_ASCONF(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTO_ASCONF], val ptr[in, int32], len len[val])
    249 getsockopt$inet_sctp_SCTP_AUTO_ASCONF(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTO_ASCONF], val ptr[out, int32], len ptr[inout, len[val, int32]])
    250 getsockopt$inet_sctp6_SCTP_AUTO_ASCONF(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTO_ASCONF], val ptr[out, int32], len ptr[inout, len[val, int32]])
    251 
    252 setsockopt$inet_sctp_SCTP_PEER_ADDR_THLDS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_THLDS], val ptr[in, sctp_paddrthlds], len len[val])
    253 setsockopt$inet_sctp6_SCTP_PEER_ADDR_THLDS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_THLDS], val ptr[in, sctp_paddrthlds], len len[val])
    254 getsockopt$inet_sctp_SCTP_PEER_ADDR_THLDS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_THLDS], val ptr[inout, sctp_paddrthlds], len ptr[inout, len[val, int32]])
    255 getsockopt$inet_sctp6_SCTP_PEER_ADDR_THLDS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PEER_ADDR_THLDS], val ptr[inout, sctp_paddrthlds], len ptr[inout, len[val, int32]])
    256 
    257 setsockopt$inet_sctp_SCTP_RECVRCVINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RECVRCVINFO], val ptr[in, int32], len len[val])
    258 setsockopt$inet_sctp6_SCTP_RECVRCVINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RECVRCVINFO], val ptr[in, int32], len len[val])
    259 getsockopt$inet_sctp_SCTP_RECVRCVINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RECVRCVINFO], val ptr[out, int32], len ptr[inout, len[val, int32]])
    260 getsockopt$inet_sctp6_SCTP_RECVRCVINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RECVRCVINFO], val ptr[out, int32], len ptr[inout, len[val, int32]])
    261 
    262 setsockopt$inet_sctp_SCTP_RECVNXTINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RECVNXTINFO], val ptr[in, int32], len len[val])
    263 setsockopt$inet_sctp6_SCTP_RECVNXTINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RECVNXTINFO], val ptr[in, int32], len len[val])
    264 getsockopt$inet_sctp_SCTP_RECVNXTINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RECVNXTINFO], val ptr[out, int32], len ptr[inout, len[val, int32]])
    265 getsockopt$inet_sctp6_SCTP_RECVNXTINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RECVNXTINFO], val ptr[out, int32], len ptr[inout, len[val, int32]])
    266 
    267 setsockopt$inet_sctp_SCTP_DEFAULT_SNDINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SNDINFO], val ptr[in, sctp_sndinfo], len len[val])
    268 setsockopt$inet_sctp6_SCTP_DEFAULT_SNDINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SNDINFO], val ptr[in, sctp_sndinfo], len len[val])
    269 getsockopt$inet_sctp_SCTP_DEFAULT_SNDINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SNDINFO], val ptr[inout, sctp_sndinfo], len ptr[inout, len[val, int32]])
    270 getsockopt$inet_sctp6_SCTP_DEFAULT_SNDINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DEFAULT_SNDINFO], val ptr[inout, sctp_sndinfo], len ptr[inout, len[val, int32]])
    271 
    272 setsockopt$inet_sctp_SCTP_AUTH_DEACTIVATE_KEY(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_AUTH_DEACTIVATE_KEY], val ptr[in, sctp_authkeyid], len len[val])
    273 setsockopt$inet_sctp6_SCTP_AUTH_DEACTIVATE_KEY(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_AUTH_DEACTIVATE_KEY], val ptr[in, sctp_authkeyid], len len[val])
    274 
    275 setsockopt$inet_sctp_SCTP_SOCKOPT_BINDX_ADD(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_BINDX_ADD], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    276 setsockopt$inet_sctp6_SCTP_SOCKOPT_BINDX_ADD(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_BINDX_ADD], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    277 
    278 setsockopt$inet_sctp_SCTP_SOCKOPT_BINDX_REM(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_BINDX_REM], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    279 setsockopt$inet_sctp6_SCTP_SOCKOPT_BINDX_REM(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_BINDX_REM], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    280 
    281 getsockopt$inet_sctp_SCTP_SOCKOPT_PEELOFF(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_PEELOFF], val ptr[inout, sctp_peeloff_arg_t], len ptr[inout, len[val, int32]])
    282 getsockopt$inet_sctp6_SCTP_SOCKOPT_PEELOFF(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_PEELOFF], val ptr[inout, sctp_peeloff_arg_t], len ptr[inout, len[val, int32]])
    283 
    284 setsockopt$inet_sctp_SCTP_SOCKOPT_CONNECTX_OLD(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_CONNECTX_OLD], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    285 setsockopt$inet_sctp6_SCTP_SOCKOPT_CONNECTX_OLD(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_CONNECTX_OLD], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    286 
    287 getsockopt$inet_sctp_SCTP_GET_PEER_ADDRS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_GET_PEER_ADDRS], val ptr[inout, sctp_getaddrs], len ptr[inout, len[val, int32]])
    288 getsockopt$inet_sctp6_SCTP_GET_PEER_ADDRS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_GET_PEER_ADDRS], val ptr[inout, sctp_getaddrs], len ptr[inout, len[val, int32]])
    289 
    290 getsockopt$inet_sctp_SCTP_GET_LOCAL_ADDRS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_GET_LOCAL_ADDRS], val ptr[inout, sctp_getaddrs], len ptr[inout, len[val, int32]])
    291 getsockopt$inet_sctp6_SCTP_GET_LOCAL_ADDRS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_GET_LOCAL_ADDRS], val ptr[inout, sctp_getaddrs], len ptr[inout, len[val, int32]])
    292 
    293 setsockopt$inet_sctp_SCTP_SOCKOPT_CONNECTX(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_CONNECTX], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    294 setsockopt$inet_sctp6_SCTP_SOCKOPT_CONNECTX(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_CONNECTX], val ptr[in, array[sockaddr_sctp]], len bytesize[val])
    295 
    296 getsockopt$inet_sctp_SCTP_SOCKOPT_CONNECTX3(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_CONNECTX3], val ptr[inout, sctp_getaddrs_old], len ptr[inout, len[val, int32]])
    297 getsockopt$inet_sctp6_SCTP_SOCKOPT_CONNECTX3(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_SOCKOPT_CONNECTX3], val ptr[inout, sctp_getaddrs_old], len ptr[inout, len[val, int32]])
    298 
    299 getsockopt$inet_sctp_SCTP_GET_ASSOC_STATS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_GET_ASSOC_STATS], val ptr[inout, sctp_assoc_stats], len ptr[inout, len[val, int32]])
    300 getsockopt$inet_sctp6_SCTP_GET_ASSOC_STATS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_GET_ASSOC_STATS], val ptr[inout, sctp_assoc_stats], len ptr[inout, len[val, int32]])
    301 
    302 setsockopt$inet_sctp_SCTP_PR_SUPPORTED(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PR_SUPPORTED], val ptr[in, sctp_assoc_value], len len[val])
    303 setsockopt$inet_sctp6_SCTP_PR_SUPPORTED(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PR_SUPPORTED], val ptr[in, sctp_assoc_value], len len[val])
    304 getsockopt$inet_sctp_SCTP_PR_SUPPORTED(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PR_SUPPORTED], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    305 getsockopt$inet_sctp6_SCTP_PR_SUPPORTED(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PR_SUPPORTED], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    306 
    307 setsockopt$inet_sctp_SCTP_DEFAULT_PRINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DEFAULT_PRINFO], val ptr[in, sctp_default_prinfo], len len[val])
    308 setsockopt$inet_sctp6_SCTP_DEFAULT_PRINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DEFAULT_PRINFO], val ptr[in, sctp_default_prinfo], len len[val])
    309 getsockopt$inet_sctp_SCTP_DEFAULT_PRINFO(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_DEFAULT_PRINFO], val ptr[inout, sctp_default_prinfo], len ptr[inout, len[val, int32]])
    310 getsockopt$inet_sctp6_SCTP_DEFAULT_PRINFO(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_DEFAULT_PRINFO], val ptr[inout, sctp_default_prinfo], len ptr[inout, len[val, int32]])
    311 
    312 getsockopt$inet_sctp_SCTP_PR_ASSOC_STATUS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PR_ASSOC_STATUS], val ptr[inout, sctp_prstatus], len ptr[inout, len[val, int32]])
    313 getsockopt$inet_sctp6_SCTP_PR_ASSOC_STATUS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PR_ASSOC_STATUS], val ptr[inout, sctp_prstatus], len ptr[inout, len[val, int32]])
    314 
    315 setsockopt$inet_sctp_SCTP_ENABLE_STREAM_RESET(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ENABLE_STREAM_RESET], val ptr[in, sctp_assoc_value], len len[val])
    316 setsockopt$inet_sctp6_SCTP_ENABLE_STREAM_RESET(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ENABLE_STREAM_RESET], val ptr[in, sctp_assoc_value], len len[val])
    317 getsockopt$inet_sctp_SCTP_ENABLE_STREAM_RESET(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ENABLE_STREAM_RESET], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    318 getsockopt$inet_sctp6_SCTP_ENABLE_STREAM_RESET(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ENABLE_STREAM_RESET], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    319 
    320 setsockopt$inet_sctp_SCTP_RESET_STREAMS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RESET_STREAMS], val ptr[in, sctp_reset_streams], len len[val])
    321 setsockopt$inet_sctp6_SCTP_RESET_STREAMS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RESET_STREAMS], val ptr[in, sctp_reset_streams], len len[val])
    322 getsockopt$inet_sctp_SCTP_RESET_STREAMS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RESET_STREAMS], val ptr[inout, sctp_reset_streams], len ptr[inout, len[val, int32]])
    323 getsockopt$inet_sctp6_SCTP_RESET_STREAMS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RESET_STREAMS], val ptr[inout, sctp_reset_streams], len ptr[inout, len[val, int32]])
    324 
    325 setsockopt$inet_sctp_SCTP_RESET_ASSOC(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RESET_ASSOC], val ptr[in, assoc_id], len len[val])
    326 setsockopt$inet_sctp6_SCTP_RESET_ASSOC(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RESET_ASSOC], val ptr[in, assoc_id], len len[val])
    327 
    328 setsockopt$inet_sctp_SCTP_ADD_STREAMS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_ADD_STREAMS], val ptr[in, sctp_add_streams], len len[val])
    329 setsockopt$inet_sctp6_SCTP_ADD_STREAMS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_ADD_STREAMS], val ptr[in, sctp_add_streams], len len[val])
    330 
    331 getsockopt$inet_sctp_SCTP_PR_STREAM_STATUS(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_PR_STREAM_STATUS], val ptr[out, array[int8]], len ptr[inout, len[val, int32]])
    332 getsockopt$inet_sctp6_SCTP_PR_STREAM_STATUS(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_PR_STREAM_STATUS], val ptr[out, array[int8]], len ptr[inout, len[val, int32]])
    333 
    334 setsockopt$inet_sctp_SCTP_RECONFIG_SUPPORTED(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RECONFIG_SUPPORTED], val ptr[in, sctp_assoc_value], len len[val])
    335 setsockopt$inet_sctp6_SCTP_RECONFIG_SUPPORTED(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RECONFIG_SUPPORTED], val ptr[in, sctp_assoc_value], len len[val])
    336 getsockopt$inet_sctp_SCTP_RECONFIG_SUPPORTED(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_RECONFIG_SUPPORTED], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    337 getsockopt$inet_sctp6_SCTP_RECONFIG_SUPPORTED(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_RECONFIG_SUPPORTED], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    338 
    339 setsockopt$inet_sctp_SCTP_STREAM_SCHEDULER(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER], val ptr[in, sctp_assoc_value], len len[val])
    340 setsockopt$inet_sctp6_SCTP_STREAM_SCHEDULER(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER], val ptr[in, sctp_assoc_value], len len[val])
    341 getsockopt$inet_sctp_SCTP_STREAM_SCHEDULER(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    342 getsockopt$inet_sctp6_SCTP_STREAM_SCHEDULER(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER], val ptr[inout, sctp_assoc_value], len ptr[inout, len[val, int32]])
    343 
    344 setsockopt$inet_sctp_SCTP_STREAM_SCHEDULER_VALUE(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER_VALUE], val ptr[in, sctp_stream_value], len len[val])
    345 setsockopt$inet_sctp6_SCTP_STREAM_SCHEDULER_VALUE(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER_VALUE], val ptr[in, sctp_stream_value], len len[val])
    346 getsockopt$inet_sctp_SCTP_STREAM_SCHEDULER_VALUE(fd sock_sctp, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER_VALUE], val ptr[inout, sctp_stream_value], len ptr[inout, len[val, int32]])
    347 getsockopt$inet_sctp6_SCTP_STREAM_SCHEDULER_VALUE(fd sock_sctp6, level const[SOL_SCTP], opt const[SCTP_STREAM_SCHEDULER_VALUE], val ptr[inout, sctp_stream_value], len ptr[inout, len[val, int32]])
    348 
    349 sctp_rtoinfo {
    350 	srto_assoc_id	assoc_id
    351 	srto_initial	int32
    352 	srto_max	int32
    353 	srto_min	int32
    354 }
    355 
    356 sctp_assocparams {
    357 	sasoc_assoc_id		assoc_id
    358 	sasoc_asocmaxrxt	int16
    359 	sasoc_number_peer_dest	int16
    360 	sasoc_peer_rwnd		int32
    361 	sasoc_local_rwnd	int32
    362 	sasoc_cookie_life	int32
    363 }
    364 
    365 sctp_initmsg {
    366 	sinit_num_ostreams	int16
    367 	sinit_max_instreams	int16
    368 	sinit_max_attempts	int16
    369 	sinit_max_init_timeo	int16
    370 }
    371 
    372 sctp_prim {
    373 	ssp_assoc_id	assoc_id
    374 	ssp_addr	sockaddr_storage_sctp
    375 } [packed, align_4]
    376 
    377 sockaddr_storage_sctp [
    378 	in	sockaddr_storage_in
    379 	in6	sockaddr_storage_in6
    380 ]
    381 
    382 sctp_setadaptation {
    383 	ssb_adaptation_ind	int32
    384 }
    385 
    386 sctp_paddrparams {
    387 	spp_assoc_id	assoc_id
    388 	spp_address	sockaddr_storage_sctp
    389 	spp_hbinterval	int32
    390 	spp_pathmaxrxt	int16
    391 	spp_pathmtu	int32
    392 	spp_sackdelay	int32
    393 	spp_flags	flags[sctp_spp_flags, int32]
    394 } [packed, align_4]
    395 
    396 sctp_spp_flags = SPP_HB_ENABLE, SPP_HB_DISABLE, SPP_HB_DEMAND, SPP_HB_TIME_IS_ZERO, SPP_PMTUD_ENABLE, SPP_PMTUD_DISABLE, SPP_SACKDELAY_ENABLE, SPP_SACKDELAY_DISABLE
    397 
    398 sctp_sndrcvinfo {
    399 	sinfo_stream		int16
    400 	sinfo_ssn		int16
    401 	sinfo_flags		flags[sctp_sndrcv_flags, int16]
    402 	sinfo_ppid		int32
    403 	sinfo_context		int32
    404 	sinfo_timetolive	int32
    405 	sinfo_tsn		int32
    406 	sinfo_cumtsn		int32
    407 	sinfo_assoc_id		assoc_id
    408 }
    409 
    410 sctp_sndrcv_flags = SCTP_UNORDERED, SCTP_ADDR_OVER, SCTP_ABORT, SCTP_SACK_IMMEDIATELY, SCTP_NOTIFICATION, SCTP_EOF
    411 
    412 sctp_event_subscribe {
    413 	sctp_data_io_event	int8
    414 	sctp_association_event	int8
    415 	sctp_address_event	int8
    416 	sctp_send_failure_event	int8
    417 	sctp_peer_error_event	int8
    418 	sctp_shutdown_event	int8
    419 	sctp_partial_delivery_e	int8
    420 	sctp_adaptation_layer_e	int8
    421 	sctp_authentication_e	int8
    422 	sctp_sender_dry_event	int8
    423 	sctp_stream_reset_event	int8
    424 }
    425 
    426 sctp_maxseg [
    427 	assoc_id	assoc_id
    428 	assoc_value	sctp_assoc_value
    429 ] [varlen]
    430 
    431 sctp_assoc_value {
    432 	assoc_id	assoc_id
    433 	assoc_value	int32
    434 }
    435 
    436 sctp_reset_streams {
    437 	srs_assoc_id		assoc_id
    438 	srs_flags		int16
    439 	srs_number_streams	len[srs_stream_list, int16]
    440 	srs_stream_list		array[int16]
    441 }
    442 
    443 sctp_stream_value {
    444 	srs_assoc_id	assoc_id
    445 	stream_id	int16
    446 	stream_value	int16
    447 }
    448 
    449 sctp_status {
    450 	sstat_assoc_id		assoc_id
    451 	sstat_state		int32
    452 	sstat_rwnd		int32
    453 	sstat_unackdata		int16
    454 	sstat_penddata		int16
    455 	sstat_instrms		int16
    456 	sstat_outstrms		int16
    457 	sstat_fragmentation_p	int32
    458 	sstat_primary		sctp_paddrinfo
    459 }
    460 
    461 sctp_paddrinfo {
    462 	spinfo_assoc_id	assoc_id
    463 	spinfo_address	sockaddr_storage_sctp
    464 	spinfo_state	int32
    465 	spinfo_cwnd	int32
    466 	spinfo_srtt	int32
    467 	spinfo_rto	int32
    468 	spinfo_mtu	int32
    469 } [packed, align_4]
    470 
    471 sctp_delayed_sack [
    472 	sack_info	sctp_sack_info
    473 	assoc_value	sctp_assoc_value
    474 ] [varlen]
    475 
    476 sctp_sack_info {
    477 	sack_assoc_id	assoc_id
    478 	sack_delay	int32
    479 	sack_freq	int32
    480 }
    481 
    482 sctp_max_burst [
    483 	int		int32
    484 	assoc_value	sctp_assoc_value
    485 ] [varlen]
    486 
    487 sctp_authchunk {
    488 	sauth_chunk	int8
    489 }
    490 
    491 sctp_hmacalgo {
    492 	shmac_num_idents	len[shmac_idents, int32]
    493 	shmac_idents		array[int16]
    494 }
    495 
    496 sctp_authkey {
    497 	sca_assoc_id	assoc_id
    498 	sca_keynumber	int16
    499 	sca_keylength	len[sca_key, int16]
    500 	sca_key		array[int8]
    501 }
    502 
    503 sctp_authkeyid {
    504 	scact_assoc_id	assoc_id
    505 	scact_keynumber	int16
    506 }
    507 
    508 sctp_authchunks {
    509 	gauth_assoc_id		assoc_id
    510 	gauth_number_of_chunks	len[gauth_chunks, int32]
    511 	gauth_chunks		array[int8]
    512 }
    513 
    514 sctp_assoc_ids {
    515 	gaids_number_of_ids	len[gaids_assoc_id, int32]
    516 	gaids_assoc_id		array[assoc_id]
    517 }
    518 
    519 sctp_paddrthlds {
    520 	spt_assoc_id	assoc_id
    521 	spt_address	sockaddr_storage_sctp
    522 	spt_pathmaxrxt	int16
    523 	spt_pathpfthld	int16
    524 }
    525 
    526 sctp_sndinfo {
    527 	snd_sid		int16
    528 	snd_flags	flags[sctp_sndrcv_flags, int16]
    529 	snd_ppid	int32
    530 	snd_context	int32
    531 	snd_assoc_id	assoc_id
    532 }
    533 
    534 sockaddr_sctp [
    535 	in	sockaddr_in
    536 	in6	sockaddr_in6
    537 ] [varlen]
    538 
    539 sctp_peeloff_arg_t {
    540 	assoc_id	assoc_id
    541 	sd		int32
    542 }
    543 
    544 sctp_getaddrs {
    545 	assoc_id	assoc_id
    546 	addr_num	len[addrs, int32]
    547 	addrs		array[int8]
    548 }
    549 
    550 sctp_getaddrs_old {
    551 	assoc_id	assoc_id
    552 	addr_num	bytesize[addrs, int32]
    553 	addrs		ptr[in, array[sockaddr_sctp]]
    554 }
    555 
    556 sctp_assoc_stats {
    557 	sas_assoc_id		assoc_id
    558 	sas_obs_rto_ipaddr	sockaddr_storage_sctp
    559 	status			array[int64, 15]
    560 }
    561 
    562 sctp_default_prinfo {
    563 	pr_assoc_id	assoc_id
    564 	pr_value	int32
    565 	pr_policy	flags[sctp_pr_policies, int16]
    566 }
    567 
    568 sctp_pr_policies = SCTP_PR_SCTP_NONE, SCTP_PR_SCTP_TTL, SCTP_PR_SCTP_RTX, SCTP_PR_SCTP_PRIO
    569 
    570 sctp_prstatus {
    571 	sprstat_assoc_id	assoc_id
    572 	sprstat_sid		int16
    573 	sprstat_policy		flags[sctp_pr_policies, int16]
    574 	sprstat_abandoned_uns	int64
    575 	sprstat_abandoned_sent	int64
    576 }
    577 
    578 sctp_add_streams {
    579 	sas_assoc_id	assoc_id
    580 	sas_instrms	int16
    581 	sas_outstrms	int16
    582 }
    583 
    584 # SCTP ioctls
    585 
    586 ioctl$sock_inet_sctp_SIOCINQ(fd sock_sctp, cmd const[SIOCINQ], arg ptr[out, int32])
    587