]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: introduce FAMILY_ADDRESS_SIZE_SAFE() macro
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 14 Nov 2021 06:24:20 +0000 (15:24 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 25 Nov 2021 13:34:29 +0000 (22:34 +0900)
src/basic/in-addr-util.h

index 97715a230cd205225d890620efcf0ab776b2e90f..0178391e5f252cb91da63cfb1166578f2084df81 100644 (file)
@@ -114,6 +114,13 @@ static inline size_t FAMILY_ADDRESS_SIZE(int family) {
         return family == AF_INET6 ? 16 : 4;
 }
 
+#define FAMILY_ADDRESS_SIZE_SAFE(f)                                     \
+        ({                                                              \
+                int _f = (f);                                           \
+                _f == AF_INET ? sizeof(struct in_addr) :                \
+                _f == AF_INET6 ? sizeof(struct in6_addr) : 0;           \
+        })
+
 /* Workaround for clang, explicitly specify the maximum-size element here.
  * See also oss-fuzz#11344. */
 #define IN_ADDR_NULL ((union in_addr_union) { .in6 = {} })