From nobody Fri Jan 23 22:36:42 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 4dyXpz2bD1z6Psvl for ; Fri, 23 Jan 2026 22:36:43 +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 4dyXpy6lJCz3r0Q for ; Fri, 23 Jan 2026 22:36:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769207802; 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=4UXtuvUcoHJCYI7LqAmwJRC/3CTvJG+iOS17PybvWio=; b=slYkck/2rPhPUMqpcQo9LekcTM2fyIY6Pk6+MhFsoj5kCwvMhThvBRU6M9kC8UBBE3PflJ ZT9/IrfGUkN1vUaAEnB0p87hO/E/WYUTkXkn69NTsVHOZVd5cnzD616Dxu6XjsfkoLxe5X N3CR13iaWFMihF8FMldEMaAmtBJds3JJClFGDyFAiArke45Hv3EJfRm2x8COVzMlY0L4ZA PXyrz0FMGcBkIv1LKprvwDuaGCuNExtmpPV+FXvSytN8g8o5yuezR/H4DZsp1GtBWSKJ/a v0zb/HYs+T4Zi7g5bOvNTF9SW9vIjjtMOVuvygUQf2CkxceGWJyc0saVIZZyDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769207802; 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=4UXtuvUcoHJCYI7LqAmwJRC/3CTvJG+iOS17PybvWio=; b=lgGa7p7Yt+UOSOHrFYQmoXaO+rQ2icP6Y2f+4vGeaPCWiNmqzVW6n7dzBOT65fQASZ67Ax Y8cLWrqI2X+Xp3qdmGP3tsoi8PDUpXYLKi5GtwlRKjlsVqXEWb8ldAwXPDR1z9lEXN2mr0 n4HlJ2HJ2jkLw65IIcwvVMQRmKMwQ6s/bPgXAOFyynP7SXAMxIitPHpBhYjxmpG1OJXCKC bd9EuKOtQjl1yS7XL6u+D8xwTd/fBwcWSAlJVsWSyYNXonMr68nOdy0dgL06TS5MDhSvnt dZa3CT70eAaek3SM4QMCia+/nrm4oErEmLCzX9Ay0IXEvhajUGwYCPMvB6LUCg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769207803; a=rsa-sha256; cv=none; b=KZ78NMps6mX0+HeSCzKlBQUalzQC6XCO0+unylcqXy+dGMw/ybx9I5AVf8iDlQdVDQmZH9 hjgje8ozZCVsHVEbAHkcasSnzDi3hLST2FxfjThFJCFF/1+sZITA11a6vGeHmZjfqgZv0P uwCJ+yoQINu4yuNDA16Dva6qlLol/uP9VbAV1gjyAj9dRzGK7/HjFG02piepw0WR3VZTHH +Mk81kRLUzOc/T/Y4E+iDyvUg0PbLL6/zkXONwOLYla6HK757jZzBq9mj2K3VpT63b+fXh 3KDEKqWt/rdqsPfjG0uuWhhNlfGeUe5fOKhHlZwkIWEOwLUAaCL6KVz01k8zPA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dyXpy69RfzfNM for ; Fri, 23 Jan 2026 22:36:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36734 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 23 Jan 2026 22:36:42 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: aa3bbc06e5f0 - main - netinet6: embed struct scope6_id into struct in6_ifextra 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: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: aa3bbc06e5f0856dcb9b9d15ddde1a0a030088e2 Auto-Submitted: auto-generated Date: Fri, 23 Jan 2026 22:36:42 +0000 Message-Id: <6973f7fa.36734.514ee2cb@gitrepo.freebsd.org> The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=aa3bbc06e5f0856dcb9b9d15ddde1a0a030088e2 commit aa3bbc06e5f0856dcb9b9d15ddde1a0a030088e2 Author: Gleb Smirnoff AuthorDate: 2026-01-23 22:18:07 +0000 Commit: Gleb Smirnoff CommitDate: 2026-01-23 22:18:07 +0000 netinet6: embed struct scope6_id into struct in6_ifextra Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D54726 --- sys/netinet6/in6.c | 2 +- sys/netinet6/in6_ifattach.c | 1 - sys/netinet6/in6_var.h | 10 +++++++++- sys/netinet6/scope6.c | 19 ++++++------------- sys/netinet6/scope6_var.h | 13 +------------ 5 files changed, 17 insertions(+), 28 deletions(-) diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index d283aba62dcc..45a7256cfc9e 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -2613,8 +2613,8 @@ in6_ifarrival(void *arg __unused, struct ifnet *ifp) COUNTER_ARRAY_ALLOC(ext->icmp6_ifstat, sizeof(struct icmp6_ifstat) / sizeof(uint64_t), M_WAITOK); nd6_ifattach(ifp); + scope6_ifattach(ifp); - ext->scope6_id = scope6_ifattach(ifp); ext->lltable = in6_lltattach(ifp); ext->mld_ifinfo = mld_domifattach(ifp); diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c index f21f96cd86c8..b9ce64e5b86b 100644 --- a/sys/netinet6/in6_ifattach.c +++ b/sys/netinet6/in6_ifattach.c @@ -917,7 +917,6 @@ in6_ifdeparture(void *arg __unused, struct ifnet *ifp) #endif _in6_ifdetach(ifp, 1); mld_domifdetach(ifp); - scope6_ifdetach(ext->scope6_id); nd6_ifdetach(ifp); lltable_free(ext->lltable); COUNTER_ARRAY_FREE(ext->in6_ifstat, diff --git a/sys/netinet6/in6_var.h b/sys/netinet6/in6_var.h index 514030ed594d..a8ae343ffaed 100644 --- a/sys/netinet6/in6_var.h +++ b/sys/netinet6/in6_var.h @@ -506,7 +506,15 @@ struct in6_ifextra { u_int nd_dad_failures; uint8_t nd_curhoplimit; - struct scope6_id *scope6_id; + struct scope6_id { + /* + * 16 is correspondent to 4bit multicast scope field. i.e. from + * node-local to global with some reserved/unassigned types. + */ +#define IPV6_ADDR_SCOPES_COUNT 16 + uint32_t s6id_list[IPV6_ADDR_SCOPES_COUNT]; + } scope6_id; + struct lltable *lltable; struct mld_ifsoftc *mld_ifinfo; }; diff --git a/sys/netinet6/scope6.c b/sys/netinet6/scope6.c index 6862c75fb5e7..44a9d976d5fe 100644 --- a/sys/netinet6/scope6.c +++ b/sys/netinet6/scope6.c @@ -73,10 +73,11 @@ static struct mtx scope6_lock; VNET_DEFINE_STATIC(struct scope6_id, sid_default); #define V_sid_default VNET(sid_default) -#define SID(ifp) ((ifp)->if_inet6->scope6_id) +#define SID(ifp) (&(ifp)->if_inet6->scope6_id) static int scope6_get(struct ifnet *, struct scope6_id *); static int scope6_set(struct ifnet *, struct scope6_id *); +static int scope6_get_default(struct scope6_id *); void scope6_init(void) @@ -90,26 +91,18 @@ scope6_init(void) SCOPE6_LOCK_INIT(); } -struct scope6_id * +void scope6_ifattach(struct ifnet *ifp) { - struct scope6_id *sid; + struct scope6_id *sid = &ifp->if_inet6->scope6_id; - sid = malloc(sizeof(*sid), M_IFADDR, M_WAITOK | M_ZERO); /* * XXX: IPV6_ADDR_SCOPE_xxx macros are not standard. * Should we rather hardcode here? */ + bzero(sid, sizeof(*sid)); sid->s6id_list[IPV6_ADDR_SCOPE_INTFACELOCAL] = ifp->if_index; sid->s6id_list[IPV6_ADDR_SCOPE_LINKLOCAL] = ifp->if_index; - return (sid); -} - -void -scope6_ifdetach(struct scope6_id *sid) -{ - - free(sid, M_IFADDR); } int @@ -280,7 +273,7 @@ scope6_setdefault(struct ifnet *ifp) SCOPE6_UNLOCK(); } -int +static int scope6_get_default(struct scope6_id *idlist) { diff --git a/sys/netinet6/scope6_var.h b/sys/netinet6/scope6_var.h index f914d5981bb0..7832444e0658 100644 --- a/sys/netinet6/scope6_var.h +++ b/sys/netinet6/scope6_var.h @@ -37,21 +37,10 @@ #ifdef _KERNEL #include -#define IPV6_ADDR_SCOPES_COUNT 16 -struct scope6_id { - /* - * 16 is correspondent to 4bit multicast scope field. - * i.e. from node-local to global with some reserved/unassigned types. - */ - uint32_t s6id_list[IPV6_ADDR_SCOPES_COUNT]; -}; - void scope6_init(void); -struct scope6_id *scope6_ifattach(struct ifnet *); -void scope6_ifdetach(struct scope6_id *); +void scope6_ifattach(struct ifnet *); int scope6_ioctl(u_long cmd, caddr_t data, struct ifnet *); void scope6_setdefault(struct ifnet *); -int scope6_get_default(struct scope6_id *); u_int32_t scope6_addr2default(struct in6_addr *); int sa6_embedscope(struct sockaddr_in6 *, int); int sa6_recoverscope(struct sockaddr_in6 *);