From nobody Tue Feb 10 13:51:15 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f9NJN2hfrz6RLBv for ; Tue, 10 Feb 2026 13:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f9NJN0Y17z3lvK for ; Tue, 10 Feb 2026 13:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770731476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+FM4HUbkN2tMotkM6ygvI5DjScCpk1EcIoZz9PaYWCI=; b=KEcgbYMDe1XEwFUHbxMa0gtSZ4oXwChN4qP12Szx1UspoohyaNDRETChfvTNmlN8Js7RVt vtv6B4VNtopar40C+Wl8nTqo5/4dNpX99va9EDEPUHQAb3IyKaFfTCn0LzJlTljEiWFuW/ AQSQTJi4tRjzFiIekCUP0vK6g3sIMydwWu47t1AK22tKpaXkuFzYyj504HBKc8ONqwlS2b sVaoueD3VzXf+o/bWnHrsZ9mnNg6sndYtNPExCvWH99hOmXG47zmrSHkTGzjQfk9d5cqdr qSw1VgrHMFdwzC/1vrhGxlM5anNnkkR/VfiM+HdBjQjoeRhuyrlHQ8tDnGRV9A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770731476; a=rsa-sha256; cv=none; b=Pvoi4SRj2WGTaIuK1zbNSyzfiNVqAKq6tzaR+bClLozS6nBp9+IEMfNarRCSFuVAmUb6dR tOqGgVSjxvZAdRzjABSnegfTmw0G6xC6lMh0f+98rJaDjsxW6GIOci8565A+RB5mMYPaLJ no2fjXTKe6oxjOiWPp9LsbCvLhnw5f+OvJaA0ow3fiJZwusMU1tDqCT09NvOcBRR1Y+xjY QmTUthgGJDcFP0/raZnZMOAt+0zHZzvNdqxjzxVQ4OAK4T8r8LvnXYIpRbvUQj1eeZgdeK SJFWl+1g2u8jMHWam5bW5czF4YCxmgowR0k39mJvnZsSHCazn218s7Z6oez6Ng== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770731476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+FM4HUbkN2tMotkM6ygvI5DjScCpk1EcIoZz9PaYWCI=; b=hjJwnoSerXQues0nXdQ7Sv/oRObx1NmFYj2xIQaT+liXpUWgqeUmPLpX0+nQdYj6ZMcHq6 BGIboJ14jHU8Stx2tkXQlebUk2vB6Gs3PbSUc/leIE9qcIfzqBYXHxGMwpEi7ZwrfqziiP P+bZyoetI8Z2e6s75qxpcu5xVqwNNFJ7gtHF7la9hdnauGd5qJ1OFyD8mE9gSVqeoCo5ki ChqYGYS7QPSV11HwR3elJNzwBqFfATZuZ97LASuThFEjGLarCNvgd19AC2qY5AVE1ndRvS mmOM6yKy6/yYwUU8Qg2H4aSiUVyP7MV1MLToj69OTCE4K8cWjFfKXwJhFzgWMg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f9NJN02F6z1KxR for ; Tue, 10 Feb 2026 13:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d975 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 10 Feb 2026 13:51:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 0a757ef9a79d - main - ip_mroute: Use a local variable to store a VIF pointer List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0a757ef9a79d101bb4b7429ab5802579888dce98 Auto-Submitted: auto-generated Date: Tue, 10 Feb 2026 13:51:15 +0000 Message-Id: <698b37d3.3d975.385b7868@gitrepo.freebsd.org> The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=0a757ef9a79d101bb4b7429ab5802579888dce98 commit 0a757ef9a79d101bb4b7429ab5802579888dce98 Author: Mark Johnston AuthorDate: 2026-02-09 22:51:55 +0000 Commit: Mark Johnston CommitDate: 2026-02-10 13:45:06 +0000 ip_mroute: Use a local variable to store a VIF pointer This is cleaner and will make it a bit easier to add some more indirection to the VIF table, specifically, to add per-FIB tables. No functional change intended. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55057 --- sys/netinet/ip_mroute.c | 51 ++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index 196ae5292909..fb42c04548e7 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -593,7 +593,10 @@ get_sg_cnt(struct sioc_sg_req *req) static int get_vif_cnt(struct sioc_vif_req *req) { - vifi_t vifi = req->vifi; + struct vif *vif; + vifi_t vifi; + + vifi = req->vifi; MRW_RLOCK(); if (vifi >= V_numvifs) { @@ -601,12 +604,13 @@ get_vif_cnt(struct sioc_vif_req *req) return EINVAL; } - mtx_lock(&V_viftable[vifi].v_mtx); - req->icount = V_viftable[vifi].v_pkt_in; - req->ocount = V_viftable[vifi].v_pkt_out; - req->ibytes = V_viftable[vifi].v_bytes_in; - req->obytes = V_viftable[vifi].v_bytes_out; - mtx_unlock(&V_viftable[vifi].v_mtx); + vif = &V_viftable[vifi]; + mtx_lock(&vif->v_mtx); + req->icount = vif->v_pkt_in; + req->ocount = vif->v_pkt_out; + req->ibytes = vif->v_bytes_in; + req->obytes = vif->v_bytes_out; + mtx_unlock(&vif->v_mtx); MRW_RUNLOCK(); return 0; @@ -1573,6 +1577,7 @@ static int ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) { struct ip *ip = mtod(m, struct ip *); + struct vif *vif; vifi_t vifi; int plen = ntohs(ip->ip_len); @@ -1597,9 +1602,10 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) * Don't forward if it didn't arrive from the parent vif for its origin. */ vifi = rt->mfc_parent; - if ((vifi >= V_numvifs) || (V_viftable[vifi].v_ifp != ifp)) { + vif = &V_viftable[vifi]; + if (vifi >= V_numvifs || vif->v_ifp != ifp) { CTR4(KTR_IPMF, "%s: rx on wrong ifp %p (vifi %d, v_ifp %p)", - __func__, ifp, (int)vifi, V_viftable[vifi].v_ifp); + __func__, ifp, (int)vifi, vif->v_ifp); MRTSTAT_INC(mrts_wrong_if); ++rt->mfc_wrong_if; /* @@ -1611,7 +1617,7 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) * of the iif (broadcast media, GRE tunnel, etc). */ if (V_pim_assert_enabled && (vifi < V_numvifs) && - V_viftable[vifi].v_ifp) { + vif->v_ifp != NULL) { if (ifp == V_multicast_register_if) PIMSTAT_INC(pims_rcv_registers_wrongiif); @@ -1654,15 +1660,15 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) } /* If I sourced this packet, it counts as output, else it was input. */ - mtx_lock(&V_viftable[vifi].v_mtx); - if (in_hosteq(ip->ip_src, V_viftable[vifi].v_lcl_addr)) { - V_viftable[vifi].v_pkt_out++; - V_viftable[vifi].v_bytes_out += plen; + mtx_lock(&vif->v_mtx); + if (in_hosteq(ip->ip_src, vif->v_lcl_addr)) { + vif->v_pkt_out++; + vif->v_bytes_out += plen; } else { - V_viftable[vifi].v_pkt_in++; - V_viftable[vifi].v_bytes_in += plen; + vif->v_pkt_in++; + vif->v_bytes_in += plen; } - mtx_unlock(&V_viftable[vifi].v_mtx); + mtx_unlock(&vif->v_mtx); rt->mfc_pkt_cnt++; rt->mfc_byte_cnt += plen; @@ -1675,12 +1681,13 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) */ for (vifi = 0; vifi < V_numvifs; vifi++) if ((rt->mfc_ttls[vifi] > 0) && (ip->ip_ttl > rt->mfc_ttls[vifi])) { - V_viftable[vifi].v_pkt_out++; - V_viftable[vifi].v_bytes_out += plen; - if (V_viftable[vifi].v_flags & VIFF_REGISTER) - pim_register_send(ip, V_viftable + vifi, m, rt); + vif = &V_viftable[vifi]; + vif->v_pkt_out++; + vif->v_bytes_out += plen; + if (vif->v_flags & VIFF_REGISTER) + pim_register_send(ip, vif, m, rt); else - phyint_send(ip, V_viftable + vifi, m); + phyint_send(ip, vif, m); } /*