inet: add uint64_t accessors to in6_addr union

Message ID 20171112065412.18641-1-slandden@gmail.com
State New, archived
Headers

Commit Message

Shawn Landden Nov. 12, 2017, 6:54 a.m. UTC
  64-bit architectures are common so this makes sense to have.
64-bit arches were not so common 1997-02-16.

Signed-off-by: Shawn Landden <slandden@gmail.com>
---
 inet/netinet/in.h | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Florian Weimer Nov. 12, 2017, 7:27 a.m. UTC | #1
* Shawn Landden:

> diff --git a/inet/netinet/in.h b/inet/netinet/in.h
> index f94b4b4e1c..72d5dec312 100644
> --- a/inet/netinet/in.h
> +++ b/inet/netinet/in.h
> @@ -215,11 +215,13 @@ struct in6_addr
>  	uint8_t	__u6_addr8[16];
>  	uint16_t __u6_addr16[8];
>  	uint32_t __u6_addr32[4];
> +	uint64_t __u6_addr64[2];
>        } __in6_u;

I believe this breaks ABI because it changes the alignment of struct
in6_addr.
  
Shawn Landden Nov. 12, 2017, 11:03 a.m. UTC | #2
On Nov 11, 2017 23:27, "Florian Weimer" <fw@deneb.enyo.de> wrote:

* Shawn Landden:

> diff --git a/inet/netinet/in.h b/inet/netinet/in.h
> index f94b4b4e1c..72d5dec312 100644
> --- a/inet/netinet/in.h
> +++ b/inet/netinet/in.h
> @@ -215,11 +215,13 @@ struct in6_addr
>       uint8_t __u6_addr8[16];
>       uint16_t __u6_addr16[8];
>       uint32_t __u6_addr32[4];
> +     uint64_t __u6_addr64[2];
>        } __in6_u;

I believe this breaks ABI because it changes the alignment of struct
in6_addr.

Oh my bad. I think you are right, as it would have been 32-bit aligned.
  

Patch

diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index f94b4b4e1c..72d5dec312 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -215,11 +215,13 @@  struct in6_addr
 	uint8_t	__u6_addr8[16];
 	uint16_t __u6_addr16[8];
 	uint32_t __u6_addr32[4];
+	uint64_t __u6_addr64[2];
       } __in6_u;
 #define s6_addr			__in6_u.__u6_addr8
 #ifdef __USE_MISC
 # define s6_addr16		__in6_u.__u6_addr16
 # define s6_addr32		__in6_u.__u6_addr32
+# define s6_addr64		__in6_u.__u6_addr64
 #endif
   };
 #endif /* !__USE_KERNEL_IPV6_DEFS */