From nobody Tue Mar 31 15:58:54 2026 X-Original-To: dev-commits-src-all@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 4flXqB6cwKz6WFNF for ; Tue, 31 Mar 2026 15:59:02 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4flXq35tsqz3gy7 for ; Tue, 31 Mar 2026 15:58:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972735; 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=6YdupILDXtwIIjpaMkfF4pBK9LKfPakaORbLlq6ItZI=; b=MyAXsHWkGhYXPKifqQvolcE6HSAkwY0Fky80wL3AXFMkwccLz+deiZpRcvEV5Y71fIKAHu eqanviZPwFkJjywEM5oNJp5gH2GZSnPa0A5Yc/dNcX4Tpqb7Jx/Ayasb5IvfYVeqJZ3e8h rBUkwxi2lETiG0+SHhZ2CK4NMcc3jt8tPQ/j9e5AviFZE0UPp2C3WLc+xsw+C2T3jIUSWo FfyOBtGgFnv6Bkx2kurGki8yLnOV1HIO03V/RyIkur2gLM35zaoSSEQWbdmU6wdVNdV1/T R3VujbO5vdtn4i2i/Q3W3oJBTZanY/nwvKrLq+9lcD/a6HdpmBfCnPCLHNBnWg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972735; a=rsa-sha256; cv=none; b=UKjNhOTvNHfmH/WNCzzd8lQlYKxDmY2uUJPlGLMDmtMgNQXvMcEybgEZa779Jh5NzkrIjm pqWt6mICNOoCWt7OGMGv9Qg/oq+wbLYgFUxclf7ETwrAHB7tyC4DRXdt8XOtbznmiuAN8G uaBcCL+nBww6ZxzfHN19fR19Me9BDzVFG1WgPv133CaWu1PLtea9BvAW4VM3H6LCA2+NvE AH7ehhNS4tuFTIvH0hlMaBl5eyoQQGTQ24U//zh0F7tW4kAvXyWHCVEzeWsXiuyMGsF85H 9H13LNFJhaHAFrHBi0gHBiiwmQwsxaJPP6iGpDZszeTJQa5DiE1AFHvrSi7Avw== 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=1774972735; 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=6YdupILDXtwIIjpaMkfF4pBK9LKfPakaORbLlq6ItZI=; b=BCzsfi99llWDutxu6OGD12Qnaqcs5dtvyKama96tUmrwpf9FkNeG/BCYk7522JmsbuI9Y3 yFpL6tCbbVQY2ITYIEGUupX5pETZQXfWanQH9M1wUljtwttSjz9PAlPAQvlTQm/d6oyG63 GIUGDViuP7xBoHW5bjSn6kTMFI9Pipuk890Lz7cB7gAFA1t6VqdZ18ofnoB7EEOEWXWWBf m0GbYxMkyU2D0n12OLzOfhxuw17anMdMpIja2KogU5CQgZGMpMmOFaY63Gs5515BVKlh8M yyNYMQKso+tLIgqestWZZIop3ABFKyE+BPxBP1ZLKcXykHsRsluASA6AS166Rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq24QvgzcQW for ; Tue, 31 Mar 2026 15:58:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a83d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 58c649f857ed - stable/15 - ip_mroute: Use a local variable to store a VIF pointer List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/stable/15 X-Git-Reftype: branch X-Git-Commit: 58c649f857ed20ae4a53ba13f5a8ca3991947d24 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:54 +0000 Message-Id: <69cbef3e.3a83d.15fcc6c2@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=58c649f857ed20ae4a53ba13f5a8ca3991947d24 commit 58c649f857ed20ae4a53ba13f5a8ca3991947d24 Author: Mark Johnston AuthorDate: 2026-02-09 22:51:55 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +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 (cherry picked from commit 0a757ef9a79d101bb4b7429ab5802579888dce98) --- 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 c69f3cc8b41e..efd63f239d9a 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -594,7 +594,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) { @@ -602,12 +605,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; @@ -1574,6 +1578,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); @@ -1598,9 +1603,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; /* @@ -1612,7 +1618,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); @@ -1655,15 +1661,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; @@ -1676,12 +1682,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); } /*