From: Alexander Bluhm Subject: in pcb address union To: tech@openbsd.org Date: Fri, 22 Mar 2024 16:44:02 +0100 Hi, I think the padding in inpaddru is a leftover from times when IPv6 compatible addresses should contain IPv4 addreses. Better use a simple union for IPv4 and IPv6 addresses like everywhere else. ok? bluhm Index: netinet/in_pcb.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/in_pcb.c,v diff -u -p -r1.296 in_pcb.c --- netinet/in_pcb.c 29 Feb 2024 12:01:59 -0000 1.296 +++ netinet/in_pcb.c 22 Mar 2024 13:24:39 -0000 @@ -102,11 +102,7 @@ #endif const struct in_addr zeroin_addr; - -const union { - struct in_addr za_in; - struct in6_addr za_in6; -} zeroin46_addr; +const union inpaddru zeroin46_addr; /* * These configure the range of local port addresses assigned to Index: netinet/in_pcb.h =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/in_pcb.h,v diff -u -p -r1.152 in_pcb.h --- netinet/in_pcb.h 13 Feb 2024 12:22:09 -0000 1.152 +++ netinet/in_pcb.h 22 Mar 2024 13:25:46 -0000 @@ -120,11 +120,8 @@ struct pf_state_key; union inpaddru { + struct in_addr iau_addr; struct in6_addr iau_addr6; - struct { - uint8_t pad[12]; - struct in_addr inaddr; /* easier transition */ - } iau_a4u; }; /* @@ -142,9 +139,9 @@ struct inpcb { struct inpcbtable *inp_table; /* [I] inet queue/hash table */ union inpaddru inp_faddru; /* [t] Foreign address. */ union inpaddru inp_laddru; /* [t] Local address. */ -#define inp_faddr inp_faddru.iau_a4u.inaddr +#define inp_faddr inp_faddru.iau_addr #define inp_faddr6 inp_faddru.iau_addr6 -#define inp_laddr inp_laddru.iau_a4u.inaddr +#define inp_laddr inp_laddru.iau_addr #define inp_laddr6 inp_laddru.iau_addr6 u_int16_t inp_fport; /* [t] foreign port */ u_int16_t inp_lport; /* [t] local port */