]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Net: Replace runtime checks with STATIC_ASSERT()
authorOndrej Zajicek <santiago@crfreenet.org>
Mon, 6 Mar 2023 10:57:40 +0000 (11:57 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Mon, 6 Mar 2023 10:57:40 +0000 (11:57 +0100)
lib/net.c
lib/net.h
sysdep/unix/main.c

index 976ddbcc7b841c8a82dd69db6d8af96eae736a35..289a42971cc1f4153e6ad12e0892e4efe419ffdc 100644 (file)
--- a/lib/net.c
+++ b/lib/net.c
@@ -57,6 +57,19 @@ const u16 net_max_text_length[] = {
   [NET_MPLS]   = 7,    /* "1048575" */
 };
 
+/* There should be no implicit padding in net_addr structures */
+STATIC_ASSERT(sizeof(net_addr)         == 24);
+STATIC_ASSERT(sizeof(net_addr_ip4)     ==  8);
+STATIC_ASSERT(sizeof(net_addr_ip6)     == 20);
+STATIC_ASSERT(sizeof(net_addr_vpn4)    == 16);
+STATIC_ASSERT(sizeof(net_addr_vpn6)    == 32);
+STATIC_ASSERT(sizeof(net_addr_roa4)    == 16);
+STATIC_ASSERT(sizeof(net_addr_roa6)    == 28);
+STATIC_ASSERT(sizeof(net_addr_flow4)   ==  8);
+STATIC_ASSERT(sizeof(net_addr_flow6)   == 20);
+STATIC_ASSERT(sizeof(net_addr_ip6_sadr)        == 40);
+STATIC_ASSERT(sizeof(net_addr_mpls)    ==  8);
+
 
 int
 rd_format(const u64 rd, char *buf, int buflen)
@@ -310,22 +323,3 @@ net_in_netX(const net_addr *a, const net_addr *n)
 
   return (net_pxlen(n) <= net_pxlen(a)) && ipa_in_netX(net_prefix(a), n);
 }
-
-#define CHECK_NET(T,S) \
-  ({ if (sizeof(T) != S) die("sizeof %s is %d/%d", #T, (int) sizeof(T), S); })
-
-void
-net_init(void)
-{
-  CHECK_NET(net_addr,          24);
-  CHECK_NET(net_addr_ip4,       8);
-  CHECK_NET(net_addr_ip6,      20);
-  CHECK_NET(net_addr_vpn4,     16);
-  CHECK_NET(net_addr_vpn6,     32);
-  CHECK_NET(net_addr_roa4,     16);
-  CHECK_NET(net_addr_roa6,     28);
-  CHECK_NET(net_addr_flow4,     8);
-  CHECK_NET(net_addr_flow6,    20);
-  CHECK_NET(net_addr_ip6_sadr, 40);
-  CHECK_NET(net_addr_mpls,      8);
-}
index 9f4a00ada2e6ebef086a20f9165eda5ca56ce374..da7254c2148250cff3bfd5d6c85769f4ebc600d0 100644 (file)
--- a/lib/net.h
+++ b/lib/net.h
@@ -620,6 +620,4 @@ static inline int net_in_net_src_ip6_sadr(const net_addr_ip6_sadr *a, const net_
 int ipa_in_netX(const ip_addr A, const net_addr *N);
 int net_in_netX(const net_addr *A, const net_addr *N);
 
-void net_init(void);
-
 #endif
index 627d7a4a80158fb9c90f7a801c1abe035a34ce3c..0d3ec0c07b500ec1b5b39334c4e18feed94bb05b 100644 (file)
@@ -889,7 +889,6 @@ main(int argc, char **argv)
   log_switch(1, NULL, NULL);
 
   random_init();
-  net_init();
   resource_init();
   timer_init();
   olock_init();