From nobody Mon Jul 27 19:28:22 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 4h87tM6Vxpz6nRFn for ; Mon, 27 Jul 2026 19:28:27 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h87tM48Skz3mwH for ; Mon, 27 Jul 2026 19:28:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785180507; 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=twfvVF79qHtUyaf+4Wej9f3iTlsK879lSgYAL+OljYE=; b=gIvRc+IP2ah4z7SdkuHxpMetVhkF80Zd9qD7pPfkJGjf3Z2ABKiq5DoRYANZM74SoA6pV1 pR2tPDZ/waqGqzxWVwrJq7JUU8Lg91r051ryo2KDBplmE7JsQEJ57SMljoNxpZ+d0DTSQQ HL2il/dGkW1DYVmTs82c3ilCGA79ADvkfr/OI49SOvwic7Qx5RFFszR+386tpeHXK7i+Ne IHmcTUHFKhJLV4Cp/BKdAPLz4wPyeUMJemo9DtgtH6JmXU4lomRJfedvviVqRvAsZ5TD2j f6uvoYSVFzi7y66aLyyiLz9HXHUumcKCOz06dr+mjfU8sf0oEBv2B0/RBq/a4w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785180507; a=rsa-sha256; cv=none; b=CZ/7ibg36ss1lsLuHj9btax1a2fBwnXDj8lOiqBXANJUcYU1y+GipS9TOiOippc26swpLn mHWAGu9hAfAHB/+Vo43x7i7NS7Pe1A38v25kh3KmMApsVqqfUcRpd/2wG9nr7jgo7F4dR0 g09TNLAbRcsCDyd5ZbmHWYGQPZb8Xc4wYIaZMlemYmSOjS8174syNY+wyzuLpwe6HiSuZf 5+ClLPYFeeliHjyEmsRaG/FOSIopeYNZgad4UkRWBteCDs4n61OCgcN3hYL+CmayPz6W/F u3ev4zQwpYsnfCCUM5H1g8WV3scCDxqasldS924vQeaSj8mUczV3qvbjqQQi6w== 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=1785180507; 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=twfvVF79qHtUyaf+4Wej9f3iTlsK879lSgYAL+OljYE=; b=h/g90nY9xDWpVtFg7q/w3Vq70o1rRBQ1+4j+r77BHDgXJrY9OvlyrY/FlNM2qHQ5t/2YLF oNMN3DKXXS4q1KTmdryIKgwjD0he1ErdCG+8QZxPFV6jT6vbvMQYMD7WIRKBm/kFSgKbyu pSgvttO1Gy21oDf3ya5GEiQRbX0pot2fPQKcY/dt1u05AhQVQXbTiBoCNbXNGNyf1gzbok FCkT9YraUNCj6P1UPheOff+IAABVgLxs+qzWUB7sCepXFLmRyE7JjcDCEk7oYFLsRRgL7L kCe8JRMScX5bEpJxjTdX0Cg+CJQrWSOr3ZAWlgNbLias+vvlmUrNIwbK7HmoTw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h87tM2bT0z1L3n for ; Mon, 27 Jul 2026 19:28:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 383fa by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 27 Jul 2026 19:28:22 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 698402f4f97c - main - inpcb: declare struct in_conninfo as a single declaration 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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: 698402f4f97ce3bbe8130382c0bb16d48a87ff63 Auto-Submitted: auto-generated Date: Mon, 27 Jul 2026 19:28:22 +0000 Message-Id: <6a67b156.383fa.5ed6e1b4@gitrepo.freebsd.org> The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=698402f4f97ce3bbe8130382c0bb16d48a87ff63 commit 698402f4f97ce3bbe8130382c0bb16d48a87ff63 Author: Gleb Smirnoff AuthorDate: 2026-07-27 19:28:08 +0000 Commit: Gleb Smirnoff CommitDate: 2026-07-27 19:28:08 +0000 inpcb: declare struct in_conninfo as a single declaration This removes just one level of #define mess that is needed to reach into an inpcbs IPv4 address. And makes the declaration easier to read. No functional change. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D58273 --- sys/netinet/in_pcb.h | 62 ++++++++++++++++++------------------------------ sys/netinet/in_pcb_var.h | 2 +- 2 files changed, 24 insertions(+), 40 deletions(-) diff --git a/sys/netinet/in_pcb.h b/sys/netinet/in_pcb.h index 933a4c42808e..34762b58d86b 100644 --- a/sys/netinet/in_pcb.h +++ b/sys/netinet/in_pcb.h @@ -38,50 +38,34 @@ #define _NETINET_IN_PCB_H_ /* - * PCB with AF_INET6 null bind'ed laddr can receive AF_INET input packet. - * So, AF_INET6 null laddr is also used as AF_INET null laddr, by utilizing - * the following structure. This requires padding always be zeroed out, - * which is done right after inpcb allocation and stays through its lifetime. - */ -struct in_addr_4in6 { - uint32_t ia46_pad32[3]; - struct in_addr ia46_addr4; -}; - -union in_dependaddr { - struct in_addr_4in6 id46_addr; - struct in6_addr id6_addr; -}; - -/* - * NOTE: ipv6 addrs should be 64-bit aligned, per RFC 2553. in_conninfo has - * some extra padding to accomplish this. + * NOTE: IPv6 inpcb bound to unspecified local address shall also receive IPv4 + * traffic. Thus, IPv6 local address that is IN6_IS_ADDR_UNSPECIFIED() should + * also be usable as IPv4 INADDR_ANY. This requires padding in in_dependaddr + * to always be zeroed out, which is done right after inpcb allocation and + * stays through its lifetime. * NOTE 2: tcp_syncache.c uses first 5 32-bit words, which identify fport, * lport, faddr to generate hash, so these fields shouldn't be moved. */ -struct in_endpoints { - uint16_t ie_fport; /* foreign port */ - uint16_t ie_lport; /* local port */ - /* protocol dependent part, local and foreign addr */ - union in_dependaddr ie_dependfaddr; /* foreign host table entry */ - union in_dependaddr ie_dependladdr; /* local host table entry */ -#define ie_faddr ie_dependfaddr.id46_addr.ia46_addr4 -#define ie_laddr ie_dependladdr.id46_addr.ia46_addr4 -#define ie6_faddr ie_dependfaddr.id6_addr -#define ie6_laddr ie_dependladdr.id6_addr - uint32_t ie6_zoneid; /* scope zone id */ -}; - -/* - * XXX The defines for inc_* are hacks and should be changed to direct - * references. - */ struct in_conninfo { uint8_t inc_flags; uint8_t inc_len; - uint16_t inc_fibnum; /* XXX was pad, 16 bits is plenty */ - /* protocol dependent part */ - struct in_endpoints inc_ie; + uint16_t inc_fibnum; + struct in_endpoints { + uint16_t ie_fport; /* foreign port */ + uint16_t ie_lport; /* local port */ + union in_dependaddr { + struct { + uint32_t __pad[3]; + struct in_addr id4_addr; + }; + struct in6_addr id6_addr; + } ie_dependfaddr, ie_dependladdr; +#define ie_faddr ie_dependfaddr.id4_addr +#define ie_laddr ie_dependladdr.id4_addr +#define ie6_faddr ie_dependfaddr.id6_addr +#define ie6_laddr ie_dependladdr.id6_addr + uint32_t ie6_zoneid; /* scope zone id */ + } inc_ie; }; /* @@ -566,7 +550,7 @@ VNET_DECLARE(uint32_t, in_pcbhashseed); * wildcard IPv4 and wildcard IPv6 must be the same, otherwise AF_INET6 * wildcard bound pcb won't be able to receive AF_INET connections, while: * jenkins_hash(&zeroes, 1, s) != jenkins_hash(&zeroes, 4, s) - * See also comment above struct in_addr_4in6. + * See also comment above struct in_conninfo. */ #define IN_ADDR_JHASH32(addr) \ ((addr)->s_addr == INADDR_ANY ? V_in_pcbhashseed : \ diff --git a/sys/netinet/in_pcb_var.h b/sys/netinet/in_pcb_var.h index 8b005712de27..f70d5cb3e8b5 100644 --- a/sys/netinet/in_pcb_var.h +++ b/sys/netinet/in_pcb_var.h @@ -74,7 +74,7 @@ struct inpcblbgroup { uint8_t il_numa_domain; int il_fibnum; union in_dependaddr il_dependladdr; /* (c) */ -#define il_laddr il_dependladdr.id46_addr.ia46_addr4 +#define il_laddr il_dependladdr.id4_addr #define il6_laddr il_dependladdr.id6_addr uint32_t il_inpsiz; /* max count in il_inp[] (h) */ uint32_t il_inpcnt; /* cur count in il_inp[] (h) */