38#ifndef _NETINET_SCTP_UIO_H_
39#define _NETINET_SCTP_UIO_H_
45#include <sys/socket.h>
50#define SCTP_FUTURE_ASSOC 0
51#define SCTP_CURRENT_ASSOC 1
52#define SCTP_ALL_ASSOC 2
61#define sctp_stream_reset_events sctp_stream_reset_event
79#define SCTP_INIT 0x0001
80#define SCTP_SNDRCV 0x0002
81#define SCTP_EXTRCV 0x0003
82#define SCTP_SNDINFO 0x0004
83#define SCTP_RCVINFO 0x0005
84#define SCTP_NXTINFO 0x0006
85#define SCTP_PRINFO 0x0007
86#define SCTP_AUTHINFO 0x0008
87#define SCTP_DSTADDRV4 0x0009
88#define SCTP_DSTADDRV6 0x000a
113#define SCTP_ALIGN_RESV_PAD 92
114#define SCTP_ALIGN_RESV_PAD_SHORT 76
150#define sinfo_pr_value sinfo_timetolive
151#define sreinfo_next_flags serinfo_next_flags
152#define sreinfo_next_stream serinfo_next_stream
153#define sreinfo_next_aid serinfo_next_aid
154#define sreinfo_next_length serinfo_next_length
155#define sreinfo_next_ppid serinfo_next_ppid
199#define SCTP_NO_NEXT_MSG 0x0000
200#define SCTP_NEXT_MSG_AVAIL 0x0001
201#define SCTP_NEXT_MSG_ISCOMPLETE 0x0002
202#define SCTP_NEXT_MSG_IS_UNORDERED 0x0004
203#define SCTP_NEXT_MSG_IS_NOTIFICATION 0x0008
210#define SCTP_RECVV_NOINFO 0
211#define SCTP_RECVV_RCVINFO 1
212#define SCTP_RECVV_NXTINFO 2
213#define SCTP_RECVV_RN 3
215#define SCTP_SENDV_NOINFO 0
216#define SCTP_SENDV_SNDINFO 1
217#define SCTP_SENDV_PRINFO 2
218#define SCTP_SENDV_AUTHINFO 3
219#define SCTP_SENDV_SPA 4
228#define SCTP_SEND_SNDINFO_VALID 0x00000001
229#define SCTP_SEND_PRINFO_VALID 0x00000002
230#define SCTP_SEND_AUTHINFO_VALID 0x00000004
242#define SCTP_NOTIFICATION 0x0010
243#define SCTP_COMPLETE 0x0020
244#define SCTP_EOF 0x0100
245#define SCTP_ABORT 0x0200
246#define SCTP_UNORDERED 0x0400
247#define SCTP_ADDR_OVER 0x0800
248#define SCTP_SENDALL 0x1000
249#define SCTP_EOR 0x2000
250#define SCTP_SACK_IMMEDIATELY 0x4000
252#define INVALID_SINFO_FLAG(x) (((x) & 0xfffffff0 \
253 & ~(SCTP_EOF | SCTP_ABORT | SCTP_UNORDERED |\
254 SCTP_ADDR_OVER | SCTP_SENDALL | SCTP_EOR |\
255 SCTP_SACK_IMMEDIATELY)) != 0)
259#define SCTP_PR_SCTP_NONE 0x0000
260#define SCTP_PR_SCTP_TTL 0x0001
261#define SCTP_PR_SCTP_PRIO 0x0002
262#define SCTP_PR_SCTP_BUF SCTP_PR_SCTP_PRIO
263#define SCTP_PR_SCTP_RTX 0x0003
265#define SCTP_PR_SCTP_MAX SCTP_PR_SCTP_RTX
266#define SCTP_PR_SCTP_ALL 0x000f
268#define PR_SCTP_POLICY(x) ((x) & 0x0f)
269#define PR_SCTP_ENABLED(x) ((PR_SCTP_POLICY(x) != SCTP_PR_SCTP_NONE) && \
270 (PR_SCTP_POLICY(x) != SCTP_PR_SCTP_ALL))
271#define PR_SCTP_TTL_ENABLED(x) (PR_SCTP_POLICY(x) == SCTP_PR_SCTP_TTL)
272#define PR_SCTP_BUF_ENABLED(x) (PR_SCTP_POLICY(x) == SCTP_PR_SCTP_BUF)
273#define PR_SCTP_RTX_ENABLED(x) (PR_SCTP_POLICY(x) == SCTP_PR_SCTP_RTX)
274#define PR_SCTP_INVALID_POLICY(x) (PR_SCTP_POLICY(x) > SCTP_PR_SCTP_MAX)
275#define PR_SCTP_VALID_POLICY(x) (PR_SCTP_POLICY(x) <= SCTP_PR_SCTP_MAX)
315#define SCTP_COMM_UP 0x0001
316#define SCTP_COMM_LOST 0x0002
317#define SCTP_RESTART 0x0003
318#define SCTP_SHUTDOWN_COMP 0x0004
319#define SCTP_CANT_STR_ASSOC 0x0005
322#define SCTP_ASSOC_SUPPORTS_PR 0x01
323#define SCTP_ASSOC_SUPPORTS_AUTH 0x02
324#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03
325#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04
326#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05
327#define SCTP_ASSOC_SUPPORTS_INTERLEAVING 0x06
328#define SCTP_ASSOC_SUPPORTS_MAX 0x06
343#define SCTP_ADDR_AVAILABLE 0x0001
344#define SCTP_ADDR_UNREACHABLE 0x0002
345#define SCTP_ADDR_REMOVED 0x0003
346#define SCTP_ADDR_ADDED 0x0004
347#define SCTP_ADDR_MADE_PRIM 0x0005
348#define SCTP_ADDR_CONFIRMED 0x0006
350#define SCTP_ACTIVE 0x0001
351#define SCTP_INACTIVE 0x0002
353#define SCTP_UNCONFIRMED 0x0200
388#define SCTP_DATA_UNSENT 0x0001
389#define SCTP_DATA_SENT 0x0002
439#define SCTP_PARTIAL_DELIVERY_ABORTED 0x0001
455#define SCTP_AUTH_NEW_KEY 0x0001
456#define SCTP_AUTH_NEWKEY SCTP_AUTH_NEW_KEY
457#define SCTP_AUTH_NO_AUTH 0x0002
458#define SCTP_AUTH_FREE_KEY 0x0003
479#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001
480#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002
481#define SCTP_STREAM_RESET_DENIED 0x0004
482#define SCTP_STREAM_RESET_FAILED 0x0008
496#define SCTP_ASSOC_RESET_DENIED 0x0004
497#define SCTP_ASSOC_RESET_FAILED 0x0008
511#define SCTP_STREAM_CHANGE_DENIED 0x0004
512#define SCTP_STREAM_CHANGE_FAILED 0x0008
541#define SCTP_ASSOC_CHANGE 0x0001
542#define SCTP_PEER_ADDR_CHANGE 0x0002
543#define SCTP_REMOTE_ERROR 0x0003
544#define SCTP_SEND_FAILED 0x0004
545#define SCTP_SHUTDOWN_EVENT 0x0005
546#define SCTP_ADAPTATION_INDICATION 0x0006
548#define SCTP_ADAPTION_INDICATION 0x0006
549#define SCTP_PARTIAL_DELIVERY_EVENT 0x0007
550#define SCTP_AUTHENTICATION_EVENT 0x0008
551#define SCTP_STREAM_RESET_EVENT 0x0009
552#define SCTP_SENDER_DRY_EVENT 0x000a
553#define SCTP_NOTIFICATIONS_STOPPED_EVENT 0x000b
554#define SCTP_ASSOC_RESET_EVENT 0x000c
555#define SCTP_STREAM_CHANGE_EVENT 0x000d
556#define SCTP_SEND_FAILED_EVENT 0x000e
571#define spp_ipv4_tos spp_dscp
573#define SPP_HB_ENABLE 0x00000001
574#define SPP_HB_DISABLE 0x00000002
575#define SPP_HB_DEMAND 0x00000004
576#define SPP_PMTUD_ENABLE 0x00000008
577#define SPP_PMTUD_DISABLE 0x00000010
578#define SPP_HB_TIME_IS_ZERO 0x00000080
579#define SPP_IPV6_FLOWLABEL 0x00000100
580#define SPP_DSCP 0x00000200
581#define SPP_IPV4_TOS SPP_DSCP
631 struct sockaddr_in6
sin6;
675#define SCTP_AUTH_HMAC_ID_RSVD 0x0000
676#define SCTP_AUTH_HMAC_ID_SHA1 0x0001
677#define SCTP_AUTH_HMAC_ID_SHA256 0x0003
772#define SCTP_MAX_EXPLICT_STR_RESET 1000
1127#define SCTP_STAT_INCR(_x) SCTP_STAT_INCR_BY(_x,1)
1128#define SCTP_STAT_DECR(_x) SCTP_STAT_DECR_BY(_x,1)
1129#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT)
1130#define SCTP_STAT_INCR_BY(_x,_d) (SCTP_BASE_STATS[PCPU_GET(cpuid)]._x += _d)
1131#define SCTP_STAT_DECR_BY(_x,_d) (SCTP_BASE_STATS[PCPU_GET(cpuid)]._x -= _d)
1133#define SCTP_STAT_INCR_BY(_x,_d) atomic_add_int(&SCTP_BASE_STAT(_x), _d)
1134#define SCTP_STAT_DECR_BY(_x,_d) atomic_subtract_int(&SCTP_BASE_STAT(_x), _d)
1137#define SCTP_STAT_INCR_COUNTER32(_x) SCTP_STAT_INCR(_x)
1138#define SCTP_STAT_INCR_COUNTER64(_x) SCTP_STAT_INCR(_x)
1139#define SCTP_STAT_INCR_GAUGE32(_x) SCTP_STAT_INCR(_x)
1140#define SCTP_STAT_DECR_COUNTER32(_x) SCTP_STAT_DECR(_x)
1141#define SCTP_STAT_DECR_COUNTER64(_x) SCTP_STAT_DECR(_x)
1142#define SCTP_STAT_DECR_GAUGE32(_x) SCTP_STAT_DECR(_x)
1149#include <sys/endian.h>
1150#define ntohll(x) be64toh(x)
1154#include <sys/endian.h>
1155#define htonll(x) htobe64(x)
1238#define SCTP_MAX_LOGGING_SIZE 30000
1239#define SCTP_TRACE_PARAMS 6
1257#if defined(_KERNEL) || defined(__Userspace__)
1260 struct sockaddr *addr,
1263 struct mbuf *control,
1273 struct sockaddr *from,
1283#if !(defined(_KERNEL)) && !(defined(__Userspace__))
1287int sctp_bindx(
int,
struct sockaddr *,
int,
int);
1288int sctp_connectx(
int,
const struct sockaddr *,
int,
sctp_assoc_t *);
1290int sctp_getpaddrs(
int,
sctp_assoc_t,
struct sockaddr **);
1291void sctp_freepaddrs(
struct sockaddr *);
1292int sctp_getladdrs(
int,
sctp_assoc_t,
struct sockaddr **);
1293void sctp_freeladdrs(
struct sockaddr *);
1298sctp_sendmsg(
int,
const void *,
size_t,
const struct sockaddr *,
1303sctp_send(
int,
const void *,
size_t,
1308sctp_sendx(
int,
const void *,
size_t,
struct sockaddr *,
1313sctp_sendmsgx(
int sd,
const void *,
size_t,
struct sockaddr *,
1320sctp_recvmsg(
int,
void *,
size_t,
struct sockaddr *,
socklen_t *,
1324sctp_sendv(
int,
const struct iovec *,
int,
struct sockaddr *,
1325 int,
void *,
socklen_t,
unsigned int,
int);
1328sctp_recvv(
int,
const struct iovec *,
int,
struct sockaddr *,
__sa_family_t sa_family_t
int sctp_lower_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *i_pak, struct mbuf *control, int flags, struct sctp_sndrcvinfo *srcv, struct thread *p)
#define SCTP_ALIGN_RESV_PAD
#define SCTP_MAX_LOGGING_SIZE
#define SCTP_TRACE_PARAMS
#define SCTP_ALIGN_RESV_PAD_SHORT
int sctp_sorecvmsg(struct socket *so, struct uio *uio, struct mbuf **mp, struct sockaddr *from, int fromlen, int *msg_flags, struct sctp_sndrcvinfo *sinfo, int filling_sinfo)
int sctp_peeloff(struct socket *, struct socket *, int, caddr_t, int *)
int sctp_bindx(struct socket *, int, struct sockaddr_storage *, int, int, struct proc *)
sctp_assoc_t sai_assoc_id
uint32_t sai_adaptation_ind
sctp_assoc_t sai_assoc_id
uint32_t sai_adaption_ind
sctp_assoc_t sas_assoc_id
uint16_t sac_inbound_streams
uint16_t sac_outbound_streams
sctp_assoc_t sac_assoc_id
sctp_assoc_t gaids_assoc_id[]
uint32_t gaids_number_of_ids
uint32_t assocreset_remote_tsn
uint16_t assocreset_flags
uint32_t assocreset_length
sctp_assoc_t assocreset_assoc_id
uint32_t assocreset_local_tsn
uint16_t sasoc_asocmaxrxt
uint32_t sasoc_cookie_life
uint32_t sasoc_local_rwnd
uint16_t sasoc_number_peer_destinations
sctp_assoc_t sasoc_assoc_id
sctp_assoc_t gauth_assoc_id
uint32_t gauth_number_of_chunks
sctp_assoc_t auth_assoc_id
uint16_t auth_altkeynumber
sctp_assoc_t sca_assoc_id
sctp_assoc_t scact_assoc_id
struct sctp_assoc_value aid_value
uint8_t need_new_pseudo_cumack
uint8_t meets_pseudo_cumack
struct sctp_cwnd_log log[]
struct sctp_log_closing close
struct sctp_nagle_log nagle
struct sctp_misc_info misc
struct sctp_cwnd_args cwnd
struct sctp_mbcnt_log mbcnt
struct sctp_rwnd_log rwnd
struct sctp_sack_log sack
union sctp_cwnd_log::@37 x
struct sctp_lock_log lock
struct sctp_str_log strlog
struct sctp_sbwake_log wake
uint8_t sctp_shutdown_event
uint8_t sctp_send_failure_event
uint8_t sctp_stream_reset_event
uint8_t sctp_peer_error_event
uint8_t sctp_address_event
uint8_t sctp_partial_delivery_event
uint8_t sctp_adaptation_layer_event
uint8_t sctp_association_event
uint8_t sctp_sender_dry_event
uint8_t sctp_authentication_event
uint8_t sctp_data_io_event
uint32_t sinfo_timetolive
uint8_t __reserve_pad[SCTP_ALIGN_RESV_PAD_SHORT]
uint16_t serinfo_next_stream
uint16_t serinfo_next_flags
uint16_t sinfo_keynumber_valid
uint32_t serinfo_next_length
sctp_assoc_t sinfo_assoc_id
uint32_t serinfo_next_aid
uint32_t serinfo_next_ppid
sctp_assoc_t sget_assoc_id
union sctp_sockstore addr[]
uint32_t shmac_number_of_idents
uint16_t sinit_max_instreams
uint16_t sinit_max_attempts
uint16_t sinit_max_init_timeo
uint16_t sinit_num_ostreams
uint32_t params[SCTP_TRACE_PARAMS]
struct sctp_log_entry entry[SCTP_MAX_LOGGING_SIZE]
uint32_t total_queue_size
uint32_t total_queue_mb_size
sctp_assoc_t nxt_assoc_id
struct sockaddr_storage spc_aaddr
sctp_assoc_t spc_assoc_id
struct sockaddr_storage spinfo_address
sctp_assoc_t spinfo_assoc_id
struct sockaddr_storage spp_address
sctp_assoc_t spp_assoc_id
uint32_t spp_ipv6_flowlabel
struct sockaddr_storage spt_address
sctp_assoc_t spt_assoc_id
sctp_assoc_t pdapi_assoc_id
uint32_t pdapi_indication
uint64_t sprstat_abandoned_unsent
sctp_assoc_t sprstat_assoc_id
uint64_t sprstat_abandoned_sent
sctp_assoc_t rcv_assoc_id
struct sctp_rcvinfo recvv_rcvinfo
struct sctp_nxtinfo recvv_nxtinfo
sctp_assoc_t sre_assoc_id
sctp_assoc_t srs_assoc_id
uint16_t srs_number_streams
uint16_t srs_stream_list[]
sctp_assoc_t srto_assoc_id
sctp_assoc_t sack_assoc_id
sctp_assoc_t ssfe_assoc_id
struct sctp_sndinfo ssfe_info
struct sctp_sndrcvinfo ssf_info
sctp_assoc_t ssf_assoc_id
uint32_t sender_dry_length
sctp_assoc_t sender_dry_assoc_id
uint16_t sender_dry_flags
struct sctp_authinfo sendv_authinfo
struct sctp_prinfo sendv_prinfo
struct sctp_sndinfo sendv_sndinfo
uint32_t ssb_adaptation_ind
uint32_t ssb_adaption_ind
sctp_assoc_t sspp_assoc_id
struct sockaddr_storage sspp_addr
sctp_assoc_t ssp_assoc_id
struct sockaddr_storage ssp_addr
sctp_assoc_t sse_assoc_id
sctp_assoc_t snd_assoc_id
sctp_assoc_t sinfo_assoc_id
uint16_t sinfo_keynumber_valid
uint8_t __reserve_pad[SCTP_ALIGN_RESV_PAD]
uint32_t sinfo_timetolive
uint32_t ss_total_recv_buf
struct sctp_paddrinfo sstat_primary
uint32_t sstat_fragmentation_point
sctp_assoc_t sstat_assoc_id
sctp_assoc_t strchange_assoc_id
uint16_t strchange_instrms
uint16_t strchange_outstrms
uint32_t strchange_length
sctp_assoc_t strreset_assoc_id
uint16_t strreset_stream_list[]
sctp_assoc_t stimo_assoc_id
uint32_t stimo_shutdownack
sctp_assoc_t sue_assoc_id
struct sockaddr_storage sue_address
uint32_t sctps_slowpath_sack
uint32_t sctps_fastretransinrtt
uint32_t sctps_datadropchklmt
uint32_t sctps_protocol_drains_done
uint32_t sctps_timoinpkill
uint32_t sctps_collisionestab
uint32_t sctps_recv_spare
uint32_t sctps_sends_with_flags
uint32_t sctps_datadroprwnd
uint32_t sctps_lowlevelerrusr
uint32_t sctps_protocol_drain_calls
uint32_t sctps_timowindowprobe
uint32_t sctps_recvexpress
uint32_t sctps_recvheartbeat
uint32_t sctps_recvheartbeatack
uint32_t sctps_recvauthfailed
uint32_t sctps_timodelprim
uint32_t sctps_inorderchunks
uint32_t sctps_naglequeued
uint32_t sctps_timoshutdownguard
uint32_t sctps_primary_randry
uint32_t sctps_recvexpressm
uint32_t sctps_timocookie
uint32_t sctps_recvdatagrams
uint32_t sctps_recvpktwithdata
uint32_t sctps_sendfastretrans
uint32_t sctps_outunorderchunks
uint32_t sctps_timoshutdownack
uint32_t sctps_checksumerrors
uint32_t sctps_windowprobed
uint32_t sctps_restartestab
uint32_t sctps_cached_strmoq
uint32_t sctps_fragusrmsgs
uint32_t sctps_recvauthmissing
uint32_t sctps_timoheartbeat
uint32_t sctps_ecnereducedcwnd
uint32_t sctps_markedretrans
uint32_t sctps_send_spare
uint32_t sctps_timoasconf
uint32_t sctps_sendpackets
uint32_t sctps_timosecret
uint32_t sctps_sendheartbeat
uint32_t sctps_outoftheblue
uint32_t sctps_queue_upd_ecne
uint32_t sctps_timoautoclose
uint32_t sctps_send_burst_avoid
uint32_t sctps_wu_sacks_sent
uint32_t sctps_timoshutdown
uint32_t sctps_activeestab
uint32_t sctps_inunorderchunks
uint32_t sctps_timoassockill
uint32_t sctps_outcontrolchunks
uint32_t sctps_recvpackets
uint32_t sctps_sends_with_eof
uint32_t sctps_timoearlyfr
uint32_t sctps_lowlevelerr
uint32_t sctps_read_peeks
uint32_t sctps_timoiterator
uint32_t sctps_incontrolchunks
uint32_t sctps_outpackets
uint32_t sctps_recvdupdata
uint32_t sctps_senderrors
uint32_t sctps_timostrmrst
uint32_t sctps_outorderchunks
uint32_t sctps_maxburstqueued
uint32_t sctps_left_abandon
uint32_t sctps_cmt_randry
uint32_t sctps_sends_with_abort
uint32_t sctps_sendretransdata
uint32_t sctps_sendmultfastretrans
uint32_t sctps_recvivalhmacid
uint32_t sctps_ifnomemqueued
struct sctp_timeval sctps_discontinuitytime
uint32_t sctps_passiveestab
uint32_t sctps_reasmusrmsgs
uint32_t sctps_fwdtsn_map_over
uint32_t sctps_reserved[31]
uint32_t sctps_vtagexpress
uint32_t sctps_recvivalkeyid
uint32_t sctps_sends_with_unord
uint32_t sctps_send_cwnd_avoid
uint32_t sctps_timopathmtu
uint32_t sctps_cached_chk
uint32_t fragmentation_point
uint32_t extra_padding[26]
uint32_t extra_padding[32]
struct sctp_timeval start_time
union sctp_sockstore address
struct sctp_timeval start_time
uint32_t heartbeat_interval
uint8_t heartbeat_enabled
uint8_t potentially_failed
union sctp_sockstore address
uint32_t extra_padding[29]
uint32_t heartbeat_interval
union sctp_sockstore primary_addr
uint32_t cumulative_tsn_ack
struct sctp_timeval discontinuity_time
uint32_t extra_padding[32]
struct sctp_timeval start_time
uint32_t retransmitted_tsns
struct sctp_assoc_reset_event sn_assocreset_event
struct sctp_tlv sn_header
struct sctp_stream_change_event sn_strchange_event
struct sctp_assoc_change sn_assoc_change
struct sctp_stream_reset_event sn_strreset_event
struct sctp_paddr_change sn_paddr_change
struct sctp_adaptation_event sn_adaptation_event
struct sctp_sender_dry_event sn_sender_dry_event
struct sctp_pdapi_event sn_pdapi_event
struct sctp_remote_error sn_remote_error
struct sctp_send_failed sn_send_failed
struct sctp_adaption_event sn_adaption_event
struct sctp_authkey_event sn_auth_event
struct sctp_send_failed_event sn_send_failed_event
struct sctp_shutdown_event sn_shutdown_event