From: Vitaliy Makkoveev Subject: Re: in pcb address union To: Alexander Bluhm Cc: tech@openbsd.org Date: Fri, 22 Mar 2024 19:49:19 +0300 > On 22 Mar 2024, at 18:44, Alexander Bluhm wrote: > > 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? > ok mvs > 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 */ >