📄 sctp.h
字号:
queue_t *wq; /* write queue */ cred_t cred; /* credentials of opener */ struct sctp_ifops *ops; /* interface operations */ uint i_flags; /* Interface flags */ uint i_state; /* Interface state */ uint s_state; /* SCTP state */ uint options; /* options flags */ size_t conind; /* max number outstanding conn_inds */ atomic_t lock; /* stream lock */ struct sctp *bnext; /* linkage for bind hash */ struct sctp **bprev; /* linkage for bind hash */ struct sctp *lnext; /* linkage for list hash */ struct sctp **lprev; /* linkage for list hash */ struct sctp *pnext; /* linkage for ptag hash */ struct sctp **pprev; /* linkage for ptag hash */ struct sctp *vnext; /* linkage for vtag hash */ struct sctp **vprev; /* linkage for vtag hash */ struct sctp *tnext; /* linkage for tcb hash */ struct sctp **tprev; /* linkage for tcb hash */ uint hashent; /* vtag cache entry */ uint ip_tos; /* IP TOS */ uint ip_ttl; /* IP TTL */ uint ip_proto; /* IP protocol number */ uint ip_dontroute; /* IP localroute */ uint ip_broadcast; /* IP broadcast */ uint ip_priority; /* IP priority */ uint16_t sport; /* loc port (network byte order) */ uint16_t dport; /* rem port (network byte order) */ struct sctp_saddr *saddr; /* list of loc addresses */ struct sctp_daddr *daddr; /* list of rem addresses */ size_t sanum; /* number of srce addresses in list */ size_t danum; /* number of dest addresses in list */ struct sctp_daddr *taddr; /* primary transmit destination address */ struct sctp_daddr *raddr; /* retransmission desintation address */ struct sctp_daddr *caddr; /* last received destination address */ struct sctp_strm *ostrm; /* list of outbound streams */ struct sctp_strm *istrm; /* list if inbound streams */ size_t osnum; /* number of outbound stream structures */ size_t isnum; /* number of inbound stream structures */ struct sctp_strm *ostr; /* current output stream */ struct sctp_strm *istr; /* current input stream */ uint16_t req_ostr; /* requested outbound streams */ uint16_t max_istr; /* maximum inbound streams */ ulong max_sack; /* maximum sack delay */ ulong throttle; /* throttle hb interval */ ulong ck_life; /* valid cookie life */ ulong ck_inc; /* cookie increment */ uint hmac; /* hmac type */ uint16_t sid; /* default sid */ uint32_t ppi; /* default ppi */ ulong rto_ini; /* default rto initial */ ulong rto_min; /* default rto minimum */ ulong rto_max; /* default rto maximum */ size_t rtx_path; /* default path max retrans */ ulong hb_itvl; /* default hb interval */ mblk_t *retry; /* msg to retry on timer expiry */ bufq_t rcvq; /* read queue */ bufq_t sndq; /* write queue */ bufq_t urgq; /* urgent queue */ bufq_t errq; /* error queue */ bufq_t conq; /* connect queue */ bufq_t oooq; /* out of order queue */ struct sctp_tcb *gaps; /* gaps acks for this stream */ size_t ngaps; /* number of gap reports in list */ size_t nunds; /* number of undelivered in list */ bufq_t dupq; /* duplicate queue */ struct sctp_tcb *dups; /* dup tsns for this stream */ size_t ndups; /* number of dup reports in list */ bufq_t rtxq; /* retransmit queue */ size_t nrtxs; /* number of retransmits in list */ bufq_t ackq; /* pending acknowledgement queue */ uint16_t n_ostr; /* number of outbound streams */ uint16_t n_istr; /* number of inbound streams */ uint32_t v_tag; /* locl verification tag */ uint32_t a_rwnd; /* locl receive window */ uint32_t p_tag; /* peer verification tag */ uint32_t p_rwnd; /* peer receive window */ uint32_t t_tsn; /* transmit TSN */ uint32_t t_ack; /* transmit TSN cum acked */ uint32_t r_ack; /* received TSN cum acked */ uint sackf; /* sack flags for association */ uint flags; /* flags */ uint pmtu; /* path MTU for association */ size_t in_flight; /* number of bytes in flight */ size_t retransmits; /* number of retransmits this assoc */ size_t max_retrans; /* max association retransmits */ size_t max_inits; /* max init retransmits */ tid_t timer_init; /* init timer */ tid_t timer_cookie; /* cookie timer */ tid_t timer_shutdown; /* shutdown timer */ tid_t timer_sack; /* sack timer */};/* * Some flags. */#define SCTP_FLAG_REC_CONF_OPT 0x00000001#define SCTP_FLAG_EX_DATA_OPT 0x00000002#define SCTP_FLAG_DEFAULT_RC_SEL 0x00000004#define SCTP_FLAG_NEED_CLEANUP 0x00000008/* * Some sack flags. */#define SCTP_SACKF_NEW 0x01 /* SACK for new data RFC 2960 6.2 */#define SCTP_SACKF_WUP 0x02 /* SACK for wakeup RFC 2960 6.2 */#define SCTP_SACKF_GAP 0x04 /* SACK for lost data RFC 2960 7.2.4 */#define SCTP_SACKF_DUP 0x08 /* SACK for duplic data RFC 2960 6.2 */#define SCTP_SACKF_URG 0x10 /* SACK for urgent data RFC 2960 ??? */#define SCTP_SACKF_WND 0x20 /* SACK for new a_rwnd RFC 2960 6.2 */#define SCTP_SACKF_TIM 0x40 /* SACK for timeout RFC 2960 6.2 */#define SCTP_SACKF_NOD 0x80 /* SACK no delay RFC 2960 9.2 */#define SCTP_SACKF_NOW 0xfe /* SACK forced mask *//* * Some options flags. */#define SCTP_OPTION_DROPPING 0x01 /* stream will drop packets */#define SCTP_OPTION_BREAK 0x02 /* stream will break dest #1 and 2 one way */#define SCTP_OPTION_DBREAK 0x04 /* stream will break dest both ways */#define SCTP_OPTION_RANDOM 0x08 /* stream will drop packets at random */#define SCTP_OPTION_NAGLE 0x10 /* stream will nagle bundling normal data */#define SCTP_OPTION_CORK 0x20 /* stream will cork bundling normal data */typedef struct sctp sctp_t;typedef struct sctp_strm sctp_strm_t;typedef struct sctp_saddr sctp_saddr_t;typedef struct sctp_daddr sctp_daddr_t;#define SCTP_PRIV(__q) ((sctp_t *)(__q)->q_ptr)/* * ========================================================================= * * SCTP STATES * * ========================================================================= */#define SCTP_CLOSED 0 /* CLOSED */#define SCTP_LISTEN 1 /* LISTEN */#define SCTP_COOKIE_WAIT 2 /* COOKIE-WAIT */#define SCTP_COOKIE_ECHOED 3 /* COOKIE-ECHOED */#define SCTP_ESTABLISHED 4 /* ESTABLISHED */#define SCTP_SHUTDOWN_PENDING 5 /* SHUTDOWN-PENDING */#define SCTP_SHUTDOWN_SENT 6 /* SHUTDOWN-SENT */#define SCTP_SHUTDOWN_RECEIVED 7 /* SHUTDOWN-RECEIVED */#define SCTP_SHUTDOWN_RECVWAIT 8 /* SHUTDOWN-RECEIVED */#define SCTP_SHUTDOWN_ACK_SENT 9 /* SHUTDOWN-ACK-SENT */#define SCTP_UNREACHABLE 10 /* (not used) */#define SCTP_MAX_STATES 9#define SCTPF_CLOSED (1<<SCTP_CLOSED )#define SCTPF_LISTEN (1<<SCTP_LISTEN )#define SCTPF_COOKIE_WAIT (1<<SCTP_COOKIE_WAIT )#define SCTPF_COOKIE_ECHOED (1<<SCTP_COOKIE_ECHOED )#define SCTPF_ESTABLISHED (1<<SCTP_ESTABLISHED )#define SCTPF_SHUTDOWN_PENDING (1<<SCTP_SHUTDOWN_PENDING )#define SCTPF_SHUTDOWN_SENT (1<<SCTP_SHUTDOWN_SENT )#define SCTPF_SHUTDOWN_RECEIVED (1<<SCTP_SHUTDOWN_RECEIVED )#define SCTPF_SHUTDOWN_RECVWAIT (1<<SCTP_SHUTDOWN_RECVWAIT )#define SCTPF_SHUTDOWN_ACK_SENT (1<<SCTP_SHUTDOWN_ACK_SENT )#define SCTPF_OPENING (SCTPF_COOKIE_WAIT| \ SCTPF_COOKIE_ECHOED)#define SCTPF_CLOSING (SCTPF_SHUTDOWN_SENT| \ SCTPF_SHUTDOWN_ACK_SENT)#define SCTPF_CONNECTED (SCTPF_ESTABLISHED| \ SCTPF_SHUTDOWN_PENDING| \ SCTPF_SHUTDOWN_RECEIVED| \ SCTPF_SHUTDOWN_RECVWAIT)#define SCTPF_DISCONNECTED (SCTPF_CLOSED| \ SCTPF_LISTEN| \ SCTPF_UNREACHABLE)#define SCTPF_SENDING (SCTPF_COOKIE_ECHOED| \ SCTPF_ESTABLISHED| \ SCTPF_SHUTDOWN_PENDING| \ SCTPF_SHUTDOWN_RECEIVED| \ SCTPF_SHUTDOWN_RECVWAIT)#define SCTPF_RECEIVING (SCTPF_COOKIE_ECHOED| \ SCTPF_ESTABLISHED| \ SCTPF_SHUTDOWN_PENDING| \ SCTPF_SHUTDOWN_SENT)#define SCTPF_NEEDABORT (SCTPF_COOKIE_ECHOED| \ SCTPF_ESTABLISHED| \ SCTPF_SHUTDOWN_PENDING| \ SCTPF_SHUTDOWN_RECEIVED| \ SCTPF_SHUTDOWN_RECVWAIT| \ SCTPF_SHUTDOWN_SENT)#define SCTPF_HAVEUSER (SCTPF_COOKIE_WAIT| \ SCTPF_COOKIE_ECHOED| \ SCTPF_ESTABLISHED| \ SCTPF_SHUTDOWN_PENDING| \ SCTPF_SHUTDOWN_RECEIVED| \ SCTPF_SHUTDOWN_SENT)#endif __SCTP_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -