]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Lib: Ensure that all net_addr structures have the same alignment
authorOndrej Zajicek <santiago@crfreenet.org>
Mon, 16 Dec 2024 17:56:30 +0000 (18:56 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Mon, 16 Dec 2024 17:56:30 +0000 (18:56 +0100)
Also weaken the explicit alignment of net_addr to be u32, as VPN
is already u32-aligned.

lib/birdlib.h
lib/net.c
lib/net.h

index 0779655e15ab74148874f1c1ab7081daed46dac1..9bbffe020862821e488263b25ecb61766c4adbcf 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "lib/alloca.h"
 #include <stdarg.h>
+#include <stdalign.h>
 
 /* Ugly structure offset handling macros */
 
index e83cdce7c0946a26d69f15a45d883f2761d74e2e..64cf9e047414c81073fedc7d65b7a970daf4dcd9 100644 (file)
--- a/lib/net.c
+++ b/lib/net.c
@@ -75,6 +75,21 @@ STATIC_ASSERT(sizeof(net_addr_ip6_sadr)      == 40);
 STATIC_ASSERT(sizeof(net_addr_mpls)    ==  8);
 STATIC_ASSERT(sizeof(net_addr_aspa)    ==  8);
 
+/* Ensure that all net_addr structures have the same alignment */
+STATIC_ASSERT(alignof(net_addr_ip4)    == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_ip6)    == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_vpn4)   == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_vpn6)   == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_roa4)   == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_roa6)   == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_flow4)  == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_flow6)  == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_flow4)  == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_flow6)  == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_ip6_sadr) == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_mpls)   == alignof(net_addr));
+STATIC_ASSERT(alignof(net_addr_aspa)   == alignof(net_addr));
+
 
 int
 rd_format(const vpn_rd rd_, char *buf, int buflen)
index fe5c0d8c7ceee66d3ac61483b8b6ff8d9f2df298..a1fd0291e445b9f50115e0df68b0022f5205e6d6 100644 (file)
--- a/lib/net.h
+++ b/lib/net.h
@@ -51,7 +51,7 @@ typedef struct net_addr {
   u8 pxlen;
   u16 length;
   u8 data[20];
-  u64 align[0];
+  u32 align[0];
 } net_addr;
 
 typedef struct net_addr_ip4 {