summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_var.h
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2007-03-15 11:27:14 +0000
committerrrs <rrs@FreeBSD.org>2007-03-15 11:27:14 +0000
commitbd8786ed778eb3e2e64f4bc1078d8653aa1a6d54 (patch)
tree3a099c736ba497f25dc6fd964a7995f33f2282ad /sys/netinet/sctp_var.h
parent7f1d3da162e9e7e9561d1b1ab3e88b00622c7b5e (diff)
downloadFreeBSD-src-bd8786ed778eb3e2e64f4bc1078d8653aa1a6d54.zip
FreeBSD-src-bd8786ed778eb3e2e64f4bc1078d8653aa1a6d54.tar.gz
- Sysctl's move to seperate file
- moved away from ifn/ifa access to sctp_ifa/sctp_ifn built and managed by the add-ip code. - cleaned up add-ip code to use the iterator - made iterator be a thread, which enables auto-asconf now. - rewrote and cleaned up source address selection (also made it use new structures). - Fixed a couple of memory leaks. - DACK now settable as to how many packets to delay as well as time. - connectx() to latest socket API, new associd arg. - Fixed issue with revoking and loosing potential to send when we inflate the flight size. We now inflate the cwnd too and deflate it later when the revoked chunk is sent or acked. - Got rid of some temp debug code - src addr selection moved to a common file (sctp_output.c) - Support for simple VRF's (we have support for multi-vfr via compile switch that is scrubbed from BSD but we won't need multi-vrf until we first get VRF :-D) - Rest of mib work for address information now done - Limit number of addresses in INIT/INIT-ACK to a #def (30). Reviewed by: gnn
Diffstat (limited to 'sys/netinet/sctp_var.h')
-rw-r--r--sys/netinet/sctp_var.h227
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_ */
OpenPOWER on IntegriCloud