mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 16:50:25 -04:00
sctp: Various fixes for loader tunables
The following sysctl variables are actually loader tunables. Add sysctl flag CTLFLAG_TUN to them so that `sysctl -T` will report them correctly. 1. net.inet.sctp.tcbhashsize 2. net.inet.sctp.pcbhashsize 3. net.inet.sctp.chunkscale The loader tunable 'net.inet.sctp.tcbhashsize' and 'net.inet.sctp.chunkscale' are only used during vnet initializing, thus it make no senses to make them writable tunable. Validate the values of loader tunables on vnet initialize, reset them to theirs defaults if invalid to prevent potential kernel panics. Reviewed by: tuexen, #transport, #network MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D42007
This commit is contained in:
parent
808f5ac3c6
commit
dac91eb766
2 changed files with 26 additions and 6 deletions
|
|
@ -5676,6 +5676,11 @@ sctp_startup_mcore_threads(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#define VALIDATE_LOADER_TUNABLE(var_name, prefix) \
|
||||
if (SCTP_BASE_SYSCTL(var_name) < prefix##_MIN || \
|
||||
SCTP_BASE_SYSCTL(var_name) > prefix##_MAX) \
|
||||
SCTP_BASE_SYSCTL(var_name) = prefix##_DEFAULT
|
||||
|
||||
void
|
||||
sctp_pcb_init(void)
|
||||
{
|
||||
|
|
@ -5717,6 +5722,9 @@ sctp_pcb_init(void)
|
|||
TUNABLE_INT_FETCH("net.inet.sctp.tcbhashsize", &SCTP_BASE_SYSCTL(sctp_hashtblsize));
|
||||
TUNABLE_INT_FETCH("net.inet.sctp.pcbhashsize", &SCTP_BASE_SYSCTL(sctp_pcbtblsize));
|
||||
TUNABLE_INT_FETCH("net.inet.sctp.chunkscale", &SCTP_BASE_SYSCTL(sctp_chunkscale));
|
||||
VALIDATE_LOADER_TUNABLE(sctp_hashtblsize, SCTPCTL_TCBHASHSIZE);
|
||||
VALIDATE_LOADER_TUNABLE(sctp_pcbtblsize, SCTPCTL_PCBHASHSIZE);
|
||||
VALIDATE_LOADER_TUNABLE(sctp_chunkscale, SCTPCTL_CHUNKSCALE);
|
||||
SCTP_BASE_INFO(sctp_asochash) = SCTP_HASH_INIT((SCTP_BASE_SYSCTL(sctp_hashtblsize) * 31),
|
||||
&SCTP_BASE_INFO(hashasocmark));
|
||||
SCTP_BASE_INFO(sctp_ephash) = SCTP_HASH_INIT(SCTP_BASE_SYSCTL(sctp_hashtblsize),
|
||||
|
|
|
|||
|
|
@ -867,6 +867,14 @@ sctp_sysctl_handle_trace_log_clear(SYSCTL_HANDLER_ARGS)
|
|||
#endif
|
||||
|
||||
#define SCTP_UINT_SYSCTL(mib_name, var_name, prefix) \
|
||||
SCTP_UINT_SYSCTL_FLAG(mib_name, var_name, prefix, \
|
||||
CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW);
|
||||
|
||||
#define SCTP_UINT_SYSCTL_TUN(mib_name, var_name, prefix) \
|
||||
SCTP_UINT_SYSCTL_FLAG(mib_name, var_name, prefix, \
|
||||
CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RWTUN|CTLFLAG_NOFETCH);
|
||||
|
||||
#define SCTP_UINT_SYSCTL_FLAG(mib_name, var_name, prefix, flags) \
|
||||
static int \
|
||||
sctp_sysctl_handle_##mib_name(SYSCTL_HANDLER_ARGS) \
|
||||
{ \
|
||||
|
|
@ -885,9 +893,13 @@ sctp_sysctl_handle_trace_log_clear(SYSCTL_HANDLER_ARGS)
|
|||
} \
|
||||
return (error); \
|
||||
} \
|
||||
SYSCTL_PROC(_net_inet_sctp, OID_AUTO, mib_name, \
|
||||
CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW, NULL, 0, \
|
||||
sctp_sysctl_handle_##mib_name, "UI", prefix##_DESC);
|
||||
SYSCTL_PROC(_net_inet_sctp, OID_AUTO, mib_name, flags, \
|
||||
NULL, 0, sctp_sysctl_handle_##mib_name, "UI", prefix##_DESC)
|
||||
|
||||
#define SCTP_UINT_SYSCTL_RDTUN(mib_name, var_name, prefix) \
|
||||
SYSCTL_UINT(_net_inet_sctp, OID_AUTO, mib_name, \
|
||||
CTLFLAG_VNET|CTLFLAG_RDTUN|CTLFLAG_NOFETCH, \
|
||||
&VNET_NAME(system_base_info.sctpsysctl.var_name), 0, prefix##_DESC);
|
||||
|
||||
/*
|
||||
* sysctl definitions
|
||||
|
|
@ -909,10 +921,10 @@ SCTP_UINT_SYSCTL(peer_chkoh, sctp_peer_chunk_oh, SCTPCTL_PEER_CHKOH)
|
|||
SCTP_UINT_SYSCTL(maxburst, sctp_max_burst_default, SCTPCTL_MAXBURST)
|
||||
SCTP_UINT_SYSCTL(fr_maxburst, sctp_fr_max_burst_default, SCTPCTL_FRMAXBURST)
|
||||
SCTP_UINT_SYSCTL(maxchunks, sctp_max_chunks_on_queue, SCTPCTL_MAXCHUNKS)
|
||||
SCTP_UINT_SYSCTL(tcbhashsize, sctp_hashtblsize, SCTPCTL_TCBHASHSIZE)
|
||||
SCTP_UINT_SYSCTL(pcbhashsize, sctp_pcbtblsize, SCTPCTL_PCBHASHSIZE)
|
||||
SCTP_UINT_SYSCTL_RDTUN(tcbhashsize, sctp_hashtblsize, SCTPCTL_TCBHASHSIZE)
|
||||
SCTP_UINT_SYSCTL_TUN(pcbhashsize, sctp_pcbtblsize, SCTPCTL_PCBHASHSIZE)
|
||||
SCTP_UINT_SYSCTL(min_split_point, sctp_min_split_point, SCTPCTL_MIN_SPLIT_POINT)
|
||||
SCTP_UINT_SYSCTL(chunkscale, sctp_chunkscale, SCTPCTL_CHUNKSCALE)
|
||||
SCTP_UINT_SYSCTL_RDTUN(chunkscale, sctp_chunkscale, SCTPCTL_CHUNKSCALE)
|
||||
SCTP_UINT_SYSCTL(delayed_sack_time, sctp_delayed_sack_time_default, SCTPCTL_DELAYED_SACK_TIME)
|
||||
SCTP_UINT_SYSCTL(sack_freq, sctp_sack_freq_default, SCTPCTL_SACK_FREQ)
|
||||
SCTP_UINT_SYSCTL(sys_resource, sctp_system_free_resc_limit, SCTPCTL_SYS_RESOURCE)
|
||||
|
|
|
|||
Loading…
Reference in a new issue