diff options
Diffstat (limited to 'sys/netinet/sctp_var.h')
-rw-r--r-- | sys/netinet/sctp_var.h | 227 |
1 files changed, 18 insertions, 209 deletions
diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h index 5463673..4149ad9 100644 --- a/sys/netinet/sctp_var.h +++ b/sys/netinet/sctp_var.h @@ -36,191 +36,10 @@ __FBSDID("$FreeBSD$"); #ifndef _NETINET_SCTP_VAR_H_ #define _NETINET_SCTP_VAR_H_ - #include <netinet/sctp_uio.h> -/* SCTP Kernel structures */ - -/* - * Names for SCTP sysctl objects - */ -#define SCTPCTL_MAXDGRAM 1 /* max datagram size */ -#define SCTPCTL_RECVSPACE 2 /* default receive buffer space */ -#define SCTPCTL_AUTOASCONF 3 /* auto asconf enable/disable flag */ -#define SCTPCTL_ECN_ENABLE 4 /* Is ecn allowed */ -#define SCTPCTL_ECN_NONCE 5 /* Is ecn nonce allowed */ -#define SCTPCTL_STRICT_SACK 6 /* strictly require sack'd TSN's to be - * smaller than sndnxt. */ -#define SCTPCTL_NOCSUM_LO 7 /* Require that the Loopback NOT have - * the crc32 checksum on packets - * routed over it. */ -#define SCTPCTL_STRICT_INIT 8 -#define SCTPCTL_PEER_CHK_OH 9 -#define SCTPCTL_MAXBURST 10 -#define SCTPCTL_MAXCHUNKONQ 11 -#define SCTPCTL_DELAYED_SACK 12 -#define SCTPCTL_HB_INTERVAL 13 -#define SCTPCTL_PMTU_RAISE 14 -#define SCTPCTL_SHUTDOWN_GUARD 15 -#define SCTPCTL_SECRET_LIFETIME 16 -#define SCTPCTL_RTO_MAX 17 -#define SCTPCTL_RTO_MIN 18 -#define SCTPCTL_RTO_INITIAL 19 -#define SCTPCTL_INIT_RTO_MAX 20 -#define SCTPCTL_COOKIE_LIFE 21 -#define SCTPCTL_INIT_RTX_MAX 22 -#define SCTPCTL_ASSOC_RTX_MAX 23 -#define SCTPCTL_PATH_RTX_MAX 24 -#define SCTPCTL_NR_OUTGOING_STREAMS 25 -#define SCTPCTL_CMT_ON_OFF 26 -#define SCTPCTL_CWND_MAXBURST 27 -#define SCTPCTL_EARLY_FR 28 -#define SCTPCTL_RTTVAR_CC 29 -#define SCTPCTL_DEADLOCK_DET 30 -#define SCTPCTL_EARLY_FR_MSEC 31 -#define SCTPCTL_ASCONF_AUTH_NOCHK 32 -#define SCTPCTL_AUTH_DISABLE 33 -#define SCTPCTL_AUTH_RANDOM_LEN 34 -#define SCTPCTL_AUTH_HMAC_ID 35 -#define SCTPCTL_ABC_L_VAR 36 -#define SCTPCTL_MAX_MBUF_CHAIN 37 -#define SCTPCTL_CMT_USE_DAC 38 -#define SCTPCTL_DO_DRAIN 39 -#define SCTPCTL_WARM_CRC32 40 -#define SCTPCTL_QLIMIT_ABORT 41 -#define SCTPCTL_STRICT_ORDER 42 -#define SCTPCTL_TCBHASHSIZE 43 -#define SCTPCTL_PCBHASHSIZE 44 -#define SCTPCTL_CHUNKSCALE 45 -#define SCTPCTL_MINSPLIT 46 -#define SCTPCTL_ADD_MORE 47 -#define SCTPCTL_SYS_RESC 48 -#define SCTPCTL_ASOC_RESC 49 -#define SCTPCTL_NAT_FRIENDLY 50 -#ifdef SCTP_DEBUG -#define SCTPCTL_DEBUG 51 -#define SCTPCTL_MAXID 51 -#else -#define SCTPCTL_MAXID 50 -#endif - -#ifdef SCTP_DEBUG -#define SCTPCTL_NAMES { \ - { 0, 0 }, \ - { "sendspace", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "autoasconf", CTLTYPE_INT }, \ - { "ecn_enable", CTLTYPE_INT }, \ - { "ecn_nonce", CTLTYPE_INT }, \ - { "strict_sack", CTLTYPE_INT }, \ - { "looback_nocsum", CTLTYPE_INT }, \ - { "strict_init", CTLTYPE_INT }, \ - { "peer_chkoh", CTLTYPE_INT }, \ - { "maxburst", CTLTYPE_INT }, \ - { "maxchunks", CTLTYPE_INT }, \ - { "delayed_sack_time", CTLTYPE_INT }, \ - { "heartbeat_interval", CTLTYPE_INT }, \ - { "pmtu_raise_time", CTLTYPE_INT }, \ - { "shutdown_guard_time", CTLTYPE_INT }, \ - { "secret_lifetime", CTLTYPE_INT }, \ - { "rto_max", CTLTYPE_INT }, \ - { "rto_min", CTLTYPE_INT }, \ - { "rto_initial", CTLTYPE_INT }, \ - { "init_rto_max", CTLTYPE_INT }, \ - { "valid_cookie_life", CTLTYPE_INT }, \ - { "init_rtx_max", CTLTYPE_INT }, \ - { "assoc_rtx_max", CTLTYPE_INT }, \ - { "path_rtx_max", CTLTYPE_INT }, \ - { "nr_outgoing_streams", CTLTYPE_INT }, \ - { "cmt_on_off", CTLTYPE_INT }, \ - { "cwnd_maxburst", CTLTYPE_INT }, \ - { "early_fast_retran", CTLTYPE_INT }, \ - { "use_rttvar_congctrl", CTLTYPE_INT }, \ - { "deadlock_detect", CTLTYPE_INT }, \ - { "early_fast_retran_msec", CTLTYPE_INT }, \ - { "asconf_auth_nochk", CTLTYPE_INT }, \ - { "auth_disable", CTLTYPE_INT }, \ - { "auth_random_len", CTLTYPE_INT }, \ - { "auth_hmac_id", CTLTYPE_INT }, \ - { "abc_l_var", CTLTYPE_INT }, \ - { "max_mbuf_chain", CTLTYPE_INT }, \ - { "cmt_use_dac", CTLTYPE_INT }, \ - { "do_sctp_drain", CTLTYPE_INT }, \ - { "warm_crc_table", CTLTYPE_INT }, \ - { "abort_at_limit", CTLTYPE_INT }, \ - { "strict_data_order", CTLTYPE_INT }, \ - { "tcbhashsize", CTLTYPE_INT }, \ - { "pcbhashsize", CTLTYPE_INT }, \ - { "chunkscale", CTLTYPE_INT }, \ - { "min_split_point", CTLTYPE_INT }, \ - { "add_more_on_output", CTLTYPE_INT }, \ - { "sys_resource", CTLTYPE_INT }, \ - { "asoc_resource", CTLTYPE_INT }, \ - { "nat_friendly", CTLTYPE_INT }, \ - { "debug", CTLTYPE_INT }, \ -} -#else -#define SCTPCTL_NAMES { \ - { 0, 0 }, \ - { "sendspace", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "autoasconf", CTLTYPE_INT }, \ - { "ecn_enable", CTLTYPE_INT }, \ - { "ecn_nonce", CTLTYPE_INT }, \ - { "strict_sack", CTLTYPE_INT }, \ - { "looback_nocsum", CTLTYPE_INT }, \ - { "strict_init", CTLTYPE_INT }, \ - { "peer_chkoh", CTLTYPE_INT }, \ - { "maxburst", CTLTYPE_INT }, \ - { "maxchunks", CTLTYPE_INT }, \ - { "delayed_sack_time", CTLTYPE_INT }, \ - { "heartbeat_interval", CTLTYPE_INT }, \ - { "pmtu_raise_time", CTLTYPE_INT }, \ - { "shutdown_guard_time", CTLTYPE_INT }, \ - { "secret_lifetime", CTLTYPE_INT }, \ - { "rto_max", CTLTYPE_INT }, \ - { "rto_min", CTLTYPE_INT }, \ - { "rto_initial", CTLTYPE_INT }, \ - { "init_rto_max", CTLTYPE_INT }, \ - { "valid_cookie_life", CTLTYPE_INT }, \ - { "init_rtx_max", CTLTYPE_INT }, \ - { "assoc_rtx_max", CTLTYPE_INT }, \ - { "path_rtx_max", CTLTYPE_INT }, \ - { "nr_outgoing_streams", CTLTYPE_INT }, \ - { "cmt_on_off", CTLTYPE_INT }, \ - { "cwnd_maxburst", CTLTYPE_INT }, \ - { "early_fast_retran", CTLTYPE_INT }, \ - { "use_rttvar_congctrl", CTLTYPE_INT }, \ - { "deadlock_detect", CTLTYPE_INT }, \ - { "early_fast_retran_msec", CTLTYPE_INT }, \ - { "asconf_auth_nochk", CTLTYPE_INT }, \ - { "auth_disable", CTLTYPE_INT }, \ - { "auth_random_len", CTLTYPE_INT }, \ - { "auth_hmac_id", CTLTYPE_INT }, \ - { "abc_l_var", CTLTYPE_INT }, \ - { "max_mbuf_chain", CTLTYPE_INT }, \ - { "cmt_use_dac", CTLTYPE_INT }, \ - { "do_sctp_drain", CTLTYPE_INT }, \ - { "warm_crc_table", CTLTYPE_INT }, \ - { "abort_at_limit", CTLTYPE_INT }, \ - { "strict_data_order", CTLTYPE_INT }, \ - { "tcbhashsize", CTLTYPE_INT }, \ - { "pcbhashsize", CTLTYPE_INT }, \ - { "chunkscale", CTLTYPE_INT }, \ - { "min_split_point", CTLTYPE_INT }, \ - { "add_more_on_output", CTLTYPE_INT }, \ - { "sys_resource", CTLTYPE_INT }, \ - { "asoc_resource", CTLTYPE_INT }, \ - { "nat_friendly", CTLTYPE_INT }, \ -} -#endif - - #if defined(_KERNEL) -#ifdef SYSCTL_DECL -SYSCTL_DECL(_net_inet_sctp); -#endif extern struct pr_usrreqs sctp_usrreqs; @@ -235,18 +54,14 @@ extern struct pr_usrreqs sctp_usrreqs; #define sctp_sbspace_sub(a,b) ((a > b) ? (a - b) : 0) -extern uint32_t sctp_asoc_free_resc_limit; -extern uint32_t sctp_system_free_resc_limit; - -/* I tried to cache the readq entries at one - * point. But the reality is that it did not - * add any performance since this meant - * we had to lock the STCB on read. And at that point - * once you have to do an extra lock, it really does - * not matter if the lock is in the ZONE stuff or - * in our code. Note that this same problem would - * occur with an mbuf cache as well so it is - * not really worth doing, at least right now :-D +/* + * I tried to cache the readq entries at one point. But the reality + * is that it did not add any performance since this meant we had to + * lock the STCB on read. And at that point once you have to do an + * extra lock, it really does not matter if the lock is in the ZONE + * stuff or in our code. Note that this same problem would occur with + * an mbuf cache as well so it is not really worth doing, at least + * right now :-D */ #define sctp_free_a_readq(_stcb, _readq) { \ @@ -317,11 +132,20 @@ extern uint32_t sctp_system_free_resc_limit; #define sctp_free_remote_addr(__net) { \ - if ((__net)) { \ + if ((__net)) { \ if (atomic_fetchadd_int(&(__net)->ref_count, -1) == 1) { \ SCTP_OS_TIMER_STOP(&(__net)->rxt_timer.timer); \ SCTP_OS_TIMER_STOP(&(__net)->pmtu_timer.timer); \ SCTP_OS_TIMER_STOP(&(__net)->fr_timer.timer); \ + if ((__net)->ro.ro_rt) { \ + RTFREE((__net)->ro.ro_rt); \ + (__net)->ro.ro_rt = NULL; \ + } \ + if ((__net)->src_addr_selected) { \ + sctp_free_ifa((__net)->ro._s_addr); \ + (__net)->ro._s_addr = NULL; \ + } \ + (__net)->src_addr_selected = 0; \ (__net)->dest_state = SCTP_ADDR_NOT_REACHABLE; \ SCTP_ZONE_FREE(sctppcbinfo.ipi_zone_net, (__net)); \ SCTP_DECR_RADDR_COUNT(); \ @@ -408,19 +232,6 @@ extern uint32_t sctp_system_free_resc_limit; } while (0) -/* - * some sysctls - */ -extern int sctp_sendspace; -extern int sctp_recvspace; -extern int sctp_ecn_enable; -extern int sctp_ecn_nonce; -extern int sctp_use_cwnd_based_maxburst; -extern unsigned int sctp_cmt_on_off; -extern unsigned int sctp_cmt_use_dac; -extern unsigned int sctp_cmt_sockopt_on_off; -extern uint32_t sctp_nat_friendly; - struct sctp_nets; struct sctp_inpcb; struct sctp_tcb; @@ -429,7 +240,6 @@ struct sctphdr; void sctp_ctlinput __P((int, struct sockaddr *, void *)); int sctp_ctloutput __P((struct socket *, struct sockopt *)); void sctp_input __P((struct mbuf *, int)); - void sctp_drain __P((void)); void sctp_init __P((void)); @@ -468,7 +278,6 @@ __P((struct sctp_inpcb *, int, struct sctphdr *, int sctp_accept(struct socket *, struct sockaddr **); - #endif /* _KERNEL */ #endif /* !_NETINET_SCTP_VAR_H_ */ |