diff --git a/src/libnm-glib-aux/nm-inet-utils.h b/src/libnm-glib-aux/nm-inet-utils.h index af7620179c..40ba60c653 100644 --- a/src/libnm-glib-aux/nm-inet-utils.h +++ b/src/libnm-glib-aux/nm-inet-utils.h @@ -8,6 +8,11 @@ typedef union _NMIPAddr { in_addr_t addr4; struct in_addr addr4_struct; struct in6_addr addr6; + + /* This union field only exists, so that it's guaranteed that NMIPAddr has + * a suitable alignment. We use that with nm_ether_addr_zero macro, that + * aliases nm_ip_addr_zero. */ + NMEtherAddr _ether_addr; } NMIPAddr; #define NM_IP_ADDR_INIT \ diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 618e34853b..accdd47063 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -206,7 +206,7 @@ extern const union _NMIPAddr nm_ip_addr_zero; /* Let's reuse nm_ip_addr_zero also for nm_ether_addr_zero. It's a union that * also contains a NMEtherAddr field. */ -#define nm_ether_addr_zero (*((const NMEtherAddr *) ((gconstpointer) &nm_ip_addr_zero))) +#define nm_ether_addr_zero (*((const NMEtherAddr *) &nm_ip_addr_zero)) static inline int nm_ether_addr_cmp(const NMEtherAddr *a, const NMEtherAddr *b)