Page MenuHomeFreeBSD

D42007.id.diff
No OneTemporary

D42007.id.diff

diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c
--- a/sys/netinet/sctp_pcb.c
+++ b/sys/netinet/sctp_pcb.c
@@ -5676,6 +5676,11 @@
}
#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 @@
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),
diff --git a/sys/netinet/sctp_sysctl.c b/sys/netinet/sctp_sysctl.c
--- a/sys/netinet/sctp_sysctl.c
+++ b/sys/netinet/sctp_sysctl.c
@@ -867,6 +867,14 @@
#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 @@
} \
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(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)

File Metadata

Mime Type
text/plain
Expires
Thu, Aug 6, 6:26 PM (8 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36110179
Default Alt Text
D42007.id.diff (3 KB)

Event Timeline