/*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * a) Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * b) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the distribution. * * c) Neither the name of Cisco Systems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE.
*/
/* We add 96 bytes to the size of sctp_sndrcvinfo. * This makes the current structure 128 bytes long * which is nicely 64 bit aligned but also has room * for us to add more and keep ABI compatibility. * For example, already we have the sctp_extrcvinfo * when enabled which is 48 bytes.
*/
/* * The assoc up needs a verfid * all sendrcvinfo's need a verfid for SENDING only.
*/
/* Flags that go into the sinfo->sinfo_flags field */ #define SCTP_NOTIFICATION 0x0010 /* next message is a notification */ #define SCTP_COMPLETE 0x0020 /* next message is complete */ #define SCTP_EOF 0x0100 /* Start shutdown procedures */ #define SCTP_ABORT 0x0200 /* Send an ABORT to peer */ #define SCTP_UNORDERED 0x0400 /* Message is un-ordered */ #define SCTP_ADDR_OVER 0x0800 /* Override the primary-address */ #define SCTP_SENDALL 0x1000 /* Send this on all associations */ #define SCTP_EOR 0x2000 /* end of message signal */ #define SCTP_SACK_IMMEDIATELY 0x4000 /* Set I-Bit */
/* The lower four bits is an enumeration of PR-SCTP policies */ #define SCTP_PR_SCTP_NONE 0x0000 /* Reliable transfer */ #define SCTP_PR_SCTP_TTL 0x0001 /* Time based PR-SCTP */ #define SCTP_PR_SCTP_PRIO 0x0002 /* Buffer based PR-SCTP */ #define SCTP_PR_SCTP_BUF SCTP_PR_SCTP_PRIO /* For backwards compatibility */ #define SCTP_PR_SCTP_RTX 0x0003 /* Number of retransmissions based PR-SCTP */ #define SCTP_PR_SCTP_MAX SCTP_PR_SCTP_RTX #define SCTP_PR_SCTP_ALL 0x000f /* Used for aggregated stats */
/* flag that indicates state of data */ #define SCTP_DATA_UNSENT 0x0001 /* inqueue never on wire */ #define SCTP_DATA_SENT 0x0002 /* on wire at failure */
struct sctp_cwnd_args { struct sctp_nets *net; /* network to */ /* FIXME: LP64 issue */
uint32_t cwnd_new_value;/* cwnd in k */
uint32_t pseudo_cumack;
uint16_t inflight; /* flightsize in k */
uint16_t cwnd_augment; /* increment to it */
uint8_t meets_pseudo_cumack;
uint8_t need_new_pseudo_cumack;
uint8_t cnt_in_send;
uint8_t cnt_in_str;
};
struct sctp_blk_args {
uint32_t onsb; /* in 1k bytes */
uint32_t sndlen; /* len of send being attempted */
uint32_t peer_rwnd; /* rwnd of peer */
uint16_t send_sent_qcnt;/* chnk cnt */
uint16_t stream_qcnt; /* chnk cnt */
uint16_t chunks_on_oque;/* chunks out */
uint16_t flight_size; /* flight size in k */
};
/* * Max we can reset in one setting, note this is dictated not by the define * but the size of a mbuf cluster so don't change this define and think you * can specify more. You must do multiple resets if you want to reset more * than SCTP_MAX_EXPLICIT_STR_RESET.
*/ #define SCTP_MAX_EXPLICT_STR_RESET 1000
struct sctp_reset_streams {
sctp_assoc_t srs_assoc_id;
uint16_t srs_flags;
uint16_t srs_number_streams; /* 0 == ALL */
uint16_t srs_stream_list[];/* list if strrst_num_streams is not 0 */
};
struct sctp_cwnd_log_req {
int32_t num_in_log; /* Number in log */
int32_t num_ret; /* Number returned */
int32_t start_at; /* start at this one */
int32_t end_at; /* end at this one */ struct sctp_cwnd_log log[];
};
/* input statistics: */
uint32_t sctps_recvpackets; /* total input packets */
uint32_t sctps_recvdatagrams; /* total input datagrams */
uint32_t sctps_recvpktwithdata; /* total packets that had data */
uint32_t sctps_recvsacks; /* total input SACK chunks */
uint32_t sctps_recvdata; /* total input DATA chunks */
uint32_t sctps_recvdupdata; /* total input duplicate DATA chunks */
uint32_t sctps_recvheartbeat; /* total input HB chunks */
uint32_t sctps_recvheartbeatack; /* total input HB-ACK chunks */
uint32_t sctps_recvecne; /* total input ECNE chunks */
uint32_t sctps_recvauth; /* total input AUTH chunks */
uint32_t sctps_recvauthmissing; /* total input chunks missing AUTH */
uint32_t sctps_recvivalhmacid; /* total number of invalid HMAC ids received */
uint32_t sctps_recvivalkeyid; /* total number of invalid secret ids received */
uint32_t sctps_recvauthfailed; /* total number of auth failed */
uint32_t sctps_recvexpress; /* total fast path receives all one chunk */
uint32_t sctps_recvexpressm; /* total fast path multi-part data */
uint32_t sctps_recv_spare; /* formerly sctps_recvnocrc */
uint32_t sctps_recvswcrc;
uint32_t sctps_recvhwcrc;
/* output statistics: */
uint32_t sctps_sendpackets; /* total output packets */
uint32_t sctps_sendsacks; /* total output SACKs */
uint32_t sctps_senddata; /* total output DATA chunks */
uint32_t sctps_sendretransdata; /* total output retransmitted DATA chunks */
uint32_t sctps_sendfastretrans; /* total output fast retransmitted DATA chunks */
uint32_t sctps_sendmultfastretrans; /* total FR's that happened more than once * to same chunk (u-del multi-fr algo).
*/
uint32_t sctps_sendheartbeat; /* total output HB chunks */
uint32_t sctps_sendecne; /* total output ECNE chunks */
uint32_t sctps_sendauth; /* total output AUTH chunks FIXME */
uint32_t sctps_senderrors; /* ip_output error counter */
uint32_t sctps_send_spare; /* formerly sctps_sendnocrc */
uint32_t sctps_sendswcrc;
uint32_t sctps_sendhwcrc; /* PCKDROPREP statistics: */
uint32_t sctps_pdrpfmbox; /* Packet drop from middle box */
uint32_t sctps_pdrpfehos; /* P-drop from end host */
uint32_t sctps_pdrpmbda; /* P-drops with data */
uint32_t sctps_pdrpmbct; /* P-drops, non-data, non-endhost */
uint32_t sctps_pdrpbwrpt; /* P-drop, non-endhost, bandwidth rep only */
uint32_t sctps_pdrpcrupt; /* P-drop, not enough for chunk header */
uint32_t sctps_pdrpnedat; /* P-drop, not enough data to confirm */
uint32_t sctps_pdrppdbrk; /* P-drop, where process_chunk_drop said break */
uint32_t sctps_pdrptsnnf; /* P-drop, could not find TSN */
uint32_t sctps_pdrpdnfnd; /* P-drop, attempt reverse TSN lookup */
uint32_t sctps_pdrpdiwnp; /* P-drop, e-host confirms zero-rwnd */
uint32_t sctps_pdrpdizrw; /* P-drop, midbox confirms no space */
uint32_t sctps_pdrpbadd; /* P-drop, data did not match TSN */
uint32_t sctps_pdrpmark; /* P-drop, TSN's marked for Fast Retran */ /* timeouts */
uint32_t sctps_timoiterator; /* Number of iterator timers that fired */
uint32_t sctps_timodata; /* Number of T3 data time outs */
uint32_t sctps_timowindowprobe; /* Number of window probe (T3) timers that fired */
uint32_t sctps_timoinit; /* Number of INIT timers that fired */
uint32_t sctps_timosack; /* Number of sack timers that fired */
uint32_t sctps_timoshutdown; /* Number of shutdown timers that fired */
uint32_t sctps_timoheartbeat; /* Number of heartbeat timers that fired */
uint32_t sctps_timocookie; /* Number of times a cookie timeout fired */
uint32_t sctps_timosecret; /* Number of times an endpoint changed its cookie secret*/
uint32_t sctps_timopathmtu; /* Number of PMTU timers that fired */
uint32_t sctps_timoshutdownack; /* Number of shutdown ack timers that fired */
uint32_t sctps_timoshutdownguard; /* Number of shutdown guard timers that fired */
uint32_t sctps_timostrmrst; /* Number of stream reset timers that fired */
uint32_t sctps_timoearlyfr; /* Number of early FR timers that fired */
uint32_t sctps_timoasconf; /* Number of times an asconf timer fired */
uint32_t sctps_timodelprim; /* Number of times a prim_deleted timer fired */
uint32_t sctps_timoautoclose; /* Number of times auto close timer fired */
uint32_t sctps_timoassockill; /* Number of asoc free timers expired */
uint32_t sctps_timoinpkill; /* Number of inp free timers expired */ /* former early FR counters */
uint32_t sctps_spare[11]; /* others */
uint32_t sctps_hdrops; /* packet shorter than header */
uint32_t sctps_badsum; /* checksum error */
uint32_t sctps_noport; /* no endpoint for port */
uint32_t sctps_badvtag; /* bad v-tag */
uint32_t sctps_badsid; /* bad SID */
uint32_t sctps_nomem; /* no memory */
uint32_t sctps_fastretransinrtt; /* number of multiple FR in a RTT window */
uint32_t sctps_markedretrans;
uint32_t sctps_naglesent; /* nagle allowed sending */
uint32_t sctps_naglequeued; /* nagle doesn't allow sending */
uint32_t sctps_maxburstqueued; /* max burst doesn't allow sending */
uint32_t sctps_ifnomemqueued; /* look ahead tells us no memory in * interface ring buffer OR we had a * send error and are queuing one send.
*/
uint32_t sctps_windowprobed; /* total number of window probes sent */
uint32_t sctps_lowlevelerr; /* total times an output error causes us * to clamp down on next user send.
*/
uint32_t sctps_lowlevelerrusr; /* total times sctp_senderrors were caused from * a user send from a user invoked send not * a sack response
*/
uint32_t sctps_datadropchklmt; /* Number of in data drops due to chunk limit reached */
uint32_t sctps_datadroprwnd; /* Number of in data drops due to rwnd limit reached */
uint32_t sctps_ecnereducedcwnd; /* Number of times a ECN reduced the cwnd */
uint32_t sctps_vtagexpress; /* Used express lookup via vtag */
uint32_t sctps_vtagbogus; /* Collision in express lookup. */
uint32_t sctps_primary_randry; /* Number of times the sender ran dry of user data on primary */
uint32_t sctps_cmt_randry; /* Same for above */
uint32_t sctps_slowpath_sack; /* Sacks the slow way */
uint32_t sctps_wu_sacks_sent; /* Window Update only sacks sent */
uint32_t sctps_sends_with_flags; /* number of sends with sinfo_flags !=0 */
uint32_t sctps_sends_with_unord; /* number of unordered sends */
uint32_t sctps_sends_with_eof; /* number of sends with EOF flag set */
uint32_t sctps_sends_with_abort; /* number of sends with ABORT flag set */
uint32_t sctps_protocol_drain_calls; /* number of times protocol drain called */
uint32_t sctps_protocol_drains_done; /* number of times we did a protocol drain */
uint32_t sctps_read_peeks; /* Number of times recv was called with peek */
uint32_t sctps_cached_chk; /* Number of cached chunks used */
uint32_t sctps_cached_strmoq; /* Number of cached stream oq's used */
uint32_t sctps_left_abandon; /* Number of unread messages abandoned by close */
uint32_t sctps_send_burst_avoid; /* Unused */
uint32_t sctps_send_cwnd_avoid; /* Send cwnd full avoidance, already max burst inflight to net */
uint32_t sctps_fwdtsn_map_over; /* number of map array over-runs via fwd-tsn's */
uint32_t sctps_queue_upd_ecne; /* Number of times we queued or updated an ECN chunk on send queue */
uint32_t sctps_recvzerocrc; /* Number of accepted packets with zero CRC */
uint32_t sctps_sendzerocrc; /* Number of packets sent with zero CRC */
uint32_t sctps_reserved[29]; /* Future ABI compat - remove int's from here when adding new */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.