Index | Thread | Search

From:
Vitaliy Makkoveev <otto@bsdbox.dev>
Subject:
Re: in pcb address union
To:
Alexander Bluhm <alexander.bluhm@gmx.net>
Cc:
tech@openbsd.org
Date:
Fri, 22 Mar 2024 19:49:19 +0300

Download raw body.

Thread
  • Alexander Bluhm:

    in pcb address union

    • Vitaliy Makkoveev:

      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 */
>