git: ef3edef9ec8b - stable/13 - ip_mroute: Fix sysctl knobs

From: Zhenlei Huang <zlei_at_FreeBSD.org>
Date: Mon, 02 Oct 2023 08:29:24 UTC
The branch stable/13 has been updated by zlei:

URL: https://cgit.FreeBSD.org/src/commit/?id=ef3edef9ec8b7d19e5f66c385340604ab29ccc78

commit ef3edef9ec8b7d19e5f66c385340604ab29ccc78
Author:     Zhenlei Huang <zlei@FreeBSD.org>
AuthorDate: 2023-09-27 16:23:22 +0000
Commit:     Zhenlei Huang <zlei@FreeBSD.org>
CommitDate: 2023-10-02 08:28:23 +0000

    ip_mroute: Fix sysctl knobs
    
    The loader tunable `net.inet.ip.mfchashsize` does not have corresponding
    sysctl MIB entry. Just add it.
    
    While here, the sysctl variable `net.inet.pim.squelch_wholepkt` is actually
    a loader tunable. Add sysctl flag CTLFLAG_TUN to it so that `sysctl -T`
    will report it correctly.
    
    Reviewed by:    kp
    Fixes:          443fc3176dee Introduce a number of changes to the MROUTING code
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D41997
    
    (cherry picked from commit f549e22901b3a391c76659bee55802b1214112fd)
    (cherry picked from commit b0f026435a150933ecb6f2d1359fd1b4898657f1)
---
 sys/netinet/ip_mroute.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c
index d8c5c74231ec..ca510610e4e7 100644
--- a/sys/netinet/ip_mroute.c
+++ b/sys/netinet/ip_mroute.c
@@ -161,7 +161,9 @@ VNET_DEFINE_STATIC(u_long, mfchash);
 	  ((g).s_addr >> 20) ^ ((g).s_addr >> 10) ^ (g).s_addr) & V_mfchash)
 #define	MFCHASHSIZE	256
 
-static u_long mfchashsize;			/* Hash size */
+static u_long mfchashsize = MFCHASHSIZE;	/* Hash size */
+SYSCTL_ULONG(_net_inet_ip, OID_AUTO, mfchashsize, CTLFLAG_RDTUN,
+    &mfchashsize, 0, "IPv4 Multicast Forwarding Table hash size");
 VNET_DEFINE_STATIC(u_char *, nexpire);		/* 0..mfchashsize-1 */
 #define	V_nexpire		VNET(nexpire)
 VNET_DEFINE_STATIC(LIST_HEAD(mfchashhdr, mfc)*, mfchashtbl);
@@ -234,7 +236,7 @@ SYSCTL_VNET_PCPUSTAT(_net_inet_pim, PIMCTL_STATS, stats, struct pimstat,
     pimstat, "PIM Statistics (struct pimstat, netinet/pim_var.h)");
 
 static u_long	pim_squelch_wholepkt = 0;
-SYSCTL_ULONG(_net_inet_pim, OID_AUTO, squelch_wholepkt, CTLFLAG_RW,
+SYSCTL_ULONG(_net_inet_pim, OID_AUTO, squelch_wholepkt, CTLFLAG_RWTUN,
     &pim_squelch_wholepkt, 0,
     "Disable IGMP_WHOLEPKT notifications if rendezvous point is unspecified");
 
@@ -2876,18 +2878,12 @@ ip_mroute_modevent(module_t mod, int type, void *unused)
 	MFC_LOCK_INIT();
 	VIF_LOCK_INIT();
 
-	mfchashsize = MFCHASHSIZE;
-	if (TUNABLE_ULONG_FETCH("net.inet.ip.mfchashsize", &mfchashsize) &&
-	    !powerof2(mfchashsize)) {
+	if (!powerof2(mfchashsize)) {
 		printf("WARNING: %s not a power of 2; using default\n",
 		    "net.inet.ip.mfchashsize");
 		mfchashsize = MFCHASHSIZE;
 	}
 
-	pim_squelch_wholepkt = 0;
-	TUNABLE_ULONG_FETCH("net.inet.pim.squelch_wholepkt",
-	    &pim_squelch_wholepkt);
-
 	pim_encap_cookie = ip_encap_attach(&ipv4_encap_cfg, NULL, M_WAITOK);
 
 	ip_mcast_src = X_ip_mcast_src;