git: 77df0240307e - main - ip6_mroute: VNETify counters

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Wed, 08 Apr 2026 14:04:39 UTC
The branch main has been updated by markj:

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

commit 77df0240307ebbc606e17c9b83c0d940d33c2649
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2026-04-08 04:20:04 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-04-08 14:04:29 +0000

    ip6_mroute: VNETify counters
    
    Commit a223d6c489c7 made most of the ip6_mroute state per-VNET, but
    failed to do this for a couple of counter structures.  Make them
    per-VNET too.
    
    Reported by:    zlei
    Reviewed by:    pouria, zlei
    Fixes:          a223d6c489c7 ("ip6_mroute: Start putting global variables into a structure")
    Differential Revision:  https://reviews.freebsd.org/D56253
---
 sys/netinet6/ip6_mroute.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/sys/netinet6/ip6_mroute.c b/sys/netinet6/ip6_mroute.c
index 69eff75596e8..9ae0d699ca31 100644
--- a/sys/netinet6/ip6_mroute.c
+++ b/sys/netinet6/ip6_mroute.c
@@ -159,12 +159,13 @@ static SYSCTL_NODE(_net_inet6, IPPROTO_PIM, pim,
     CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
     "PIM");
 
-static struct mrt6stat mrt6stat;
-SYSCTL_STRUCT(_net_inet6_ip6, OID_AUTO, mrt6stat, CTLFLAG_RW,
-    &mrt6stat, mrt6stat,
+VNET_DEFINE_STATIC(struct mrt6stat, mrt6stat);
+#define	V_mrt6stat	VNET(mrt6stat)
+SYSCTL_STRUCT(_net_inet6_ip6, OID_AUTO, mrt6stat, CTLFLAG_VNET | CTLFLAG_RW,
+    &VNET_NAME(mrt6stat), mrt6stat,
     "Multicast Routing Statistics (struct mrt6stat, netinet6/ip6_mroute.h)");
 
-#define	MRT6STAT_INC(name)	mrt6stat.name += 1
+#define	MRT6STAT_INC(name)	V_mrt6stat.name += 1
 #define NO_RTE_FOUND	0x1
 #define RTE_FOUND	0x2
 
@@ -298,12 +299,13 @@ static void	expire_upcalls_all(void *);
 #define	EXPIRE_TIMEOUT	(hz / 4)	/* 4x / second */
 #define	UPCALL_EXPIRE	6		/* number of timeouts */
 
-static struct pim6stat pim6stat;
-SYSCTL_STRUCT(_net_inet6_pim, PIM6CTL_STATS, stats, CTLFLAG_RW,
-    &pim6stat, pim6stat,
+VNET_DEFINE_STATIC(struct pim6stat, pim6stat);
+#define	V_pim6stat	VNET(pim6stat)
+SYSCTL_STRUCT(_net_inet6_pim, PIM6CTL_STATS, stats, CTLFLAG_VNET | CTLFLAG_RW,
+    &VNET_NAME(pim6stat), pim6stat,
     "PIM Statistics (struct pim6stat, netinet6/pim6_var.h)");
 
-#define	PIM6STAT_INC(name)	pim6stat.name += 1
+#define	PIM6STAT_INC(name)	V_pim6stat.name += 1
 VNET_DEFINE_STATIC(int, pim6);
 #define	V_pim6		VNET(pim6)