Index | Thread | Search

From:
Alexander Bluhm <alexander.bluhm@gmx.net>
Subject:
in pcb address union
To:
tech@openbsd.org
Date:
Fri, 22 Mar 2024 16:44:02 +0100

Download raw body.

Thread
  • Alexander Bluhm:

    in pcb address union

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