diff options
Diffstat (limited to 'sys/netinet/sctp_constants.h')
-rw-r--r-- | sys/netinet/sctp_constants.h | 62 |
1 files changed, 57 insertions, 5 deletions
diff --git a/sys/netinet/sctp_constants.h b/sys/netinet/sctp_constants.h index dcb05af..f892f9c 100644 --- a/sys/netinet/sctp_constants.h +++ b/sys/netinet/sctp_constants.h @@ -36,12 +36,55 @@ __FBSDID("$FreeBSD$"); #ifndef __sctp_constants_h__ #define __sctp_constants_h__ +/* Number of packets to get before sack sent by default */ +#define SCTP_DEFAULT_SACK_FREQ 2 + +/* Address limit - This variable is calculated + * based on an 1500 byte mtu. We take out 100 bytes + * for the cookie, 40 bytes for a v6 header and 32 + * bytes for the init structure. A second init structure + * for the init-ack and then finally a third one for the + * imbedded init. This yeilds 100+40+(3 * 32) = 236 bytes. + * This leaves 1264 bytes for addresses. Now whatever we + * send in the INIT() we need to allow to get back in the + * INIT-ACK plus all the values from INIT and INIT-ACK + * listed in the cookie. Plus we need some overhead for + * maybe copied parameters in the COOKIE. If we + * allow 20 addresses, and each side has 20 V6 addresses + * that will be 400 bytes. In the INIT-ACK we will + * see the INIT-ACK 400 + 800 in the cookie. This leaves + * 64 bytes slack for misc things in the cookie. Otherwise + * we need to allow IP fragmentation.. which I believe + * the INIT-ACK and COOKIE do, I don't think we do that + * to the INIT though. So the max you could make this + * value is 60 addresses. + */ +#define SCTP_ADDRESS_LIMIT 20 + +/* Number of addresses where we just skip the counting */ +#define SCTP_COUNT_LIMIT 40 + +/* Number of ticks to delay before running + * iterator on an address change. + */ +#define SCTP_ADDRESS_TICK_DELAY 2 #define SCTP_VERSION_STRING "KAME-BSD 1.1" /* #define SCTP_AUDITING_ENABLED 1 used for debug/auditing */ #define SCTP_AUDIT_SIZE 256 #define SCTP_STAT_LOG_SIZE 80000 +#define SCTP_USE_THREAD_BASED_ITERATOR 1 + +#define SCTP_KTRHEAD_NAME "sctp_iterator" +#define SCTP_KTHREAD_PAGES 2 + + +/* If you support Multi-VRF how big to + * make the initial array of VRF's to. + */ +#define SCTP_DEFAULT_VRF_SIZE 4 + /* Places that CWND log can happen from */ #define SCTP_CWND_LOG_FROM_FR 1 #define SCTP_CWND_LOG_FROM_RTX 2 @@ -188,7 +231,11 @@ __FBSDID("$FreeBSD$"); #define SCTP_SCALE_FOR_ADDR 2 /* default AUTO_ASCONF mode enable(1)/disable(0) value (sysctl) */ -#define SCTP_DEFAULT_AUTO_ASCONF 0 +#if defined (__APPLE__) && !defined(SCTP_APPLE_AUTO_ASCONF) +#define SCTP_DEFAULT_AUTO_ASCONF 0 +#else +#define SCTP_DEFAULT_AUTO_ASCONF 1 +#endif /* * Theshold for rwnd updates, we have to read (sb_hiwat >> @@ -305,6 +352,7 @@ __FBSDID("$FreeBSD$"); #define SCTP_OUTPUT_FROM_STRRST_REQ 12 #define SCTP_OUTPUT_FROM_USR_RCVD 13 #define SCTP_OUTPUT_FROM_COOKIE_ACK 14 +#define SCTP_OUTPUT_FROM_DRAIN 15 /* SCTP chunk types are moved sctp.h for application (NAT, FW) use */ /* align to 32-bit sizes */ @@ -425,7 +473,7 @@ __FBSDID("$FreeBSD$"); #define SCTP_ADDR_OUT_OF_SCOPE 0x080 #define SCTP_ADDR_DOUBLE_SWITCH 0x100 #define SCTP_ADDR_UNCONFIRMED 0x200 - +#define SCTP_ADDR_REQ_PRIMARY 0x400 #define SCTP_REACHABLE_MASK 0x203 /* bound address types (e.g. valid address types to allow) */ @@ -551,11 +599,15 @@ __FBSDID("$FreeBSD$"); */ #define SCTP_ASOC_MAX_CHUNKS_ON_QUEUE 512 -#define MSEC_TO_TICKS(x) ((hz == 1000) ? x : (((x) * hz) / 1000)) -#define TICKS_TO_MSEC(x) ((hz == 1000) ? x : (((x) * 1000) / hz)) +/* The conversion from time to ticks and vice versa is done by rounding + * upwards. This way we can test in the code the time to be positive and + * know that this corresponds to a positive number of ticks. + */ +#define MSEC_TO_TICKS(x) ((hz == 1000) ? x : ((((x) * hz) + 999) / 1000)) +#define TICKS_TO_MSEC(x) ((hz == 1000) ? x : ((((x) * 1000) + (hz - 1)) / hz)) #define SEC_TO_TICKS(x) ((x) * hz) -#define TICKS_TO_SEC(x) ((x) / hz) +#define TICKS_TO_SEC(x) (((x) + (hz - 1)) / hz) /* * Basically the minimum amount of time before I do a early FR. Making this |