Download raw body.
in pcb address union
> On 22 Mar 2024, at 18:44, Alexander Bluhm <alexander.bluhm@gmx.net> 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 */
>
in pcb address union