]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: add AF_TO_ADDRESS_FAMILY() helper
authorLennart Poettering <lennart@poettering.net>
Tue, 15 Oct 2024 09:38:55 +0000 (11:38 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Oct 2024 11:44:39 +0000 (20:44 +0900)
Make some code a bit shorter.

src/libsystemd/sd-network/network-util.h
src/network/networkd-address.c
src/network/networkd-dhcp-common.c
src/network/networkd-routing-policy-rule.c
src/network/networkd-sysctl.c

index 14c6f6819d6b2185f05e19eafd04ce36db516ca2..80b4cc3cd61a2550b8c9ca1eeef95f3bc8403bcf 100644 (file)
@@ -2,6 +2,7 @@
 #pragma once
 
 #include <errno.h>
+#include <netinet/in.h>
 #include <stdbool.h>
 
 #include "constants.h"
@@ -22,6 +23,17 @@ typedef enum AddressFamily {
         _ADDRESS_FAMILY_INVALID = -EINVAL,
 } AddressFamily;
 
+static inline AddressFamily AF_TO_ADDRESS_FAMILY(int af) {
+        switch (af) {
+        case AF_INET:
+                return ADDRESS_FAMILY_IPV4;
+        case AF_INET6:
+                return ADDRESS_FAMILY_IPV6;
+        default:
+                return ADDRESS_FAMILY_NO;
+        }
+}
+
 typedef enum LinkOperationalState {
         LINK_OPERSTATE_MISSING,
         LINK_OPERSTATE_OFF,
index 0e06149f33c1f6f1a96f5b9536e9117a59c10475..1e37e6e85a63cdc40c2e07a12c5db2f33e332063 100644 (file)
@@ -644,12 +644,7 @@ static int address_set_masquerade(Address *address, bool add) {
         if (!address->link->network)
                 return 0;
 
-        if (address->family == AF_INET &&
-            !FLAGS_SET(address->link->network->ip_masquerade, ADDRESS_FAMILY_IPV4))
-                return 0;
-
-        if (address->family == AF_INET6 &&
-            !FLAGS_SET(address->link->network->ip_masquerade, ADDRESS_FAMILY_IPV6))
+        if (!FLAGS_SET(address->link->network->ip_masquerade, AF_TO_ADDRESS_FAMILY(address->family)))
                 return 0;
 
         if (address->scope >= RT_SCOPE_LINK)
index 1799d042127ece8bac46984380db40db99ee355d..8b64dfe8f0064c4acddad93dc37817ad569d10b9 100644 (file)
@@ -71,7 +71,7 @@ bool link_dhcp_enabled(Link *link, int family) {
         if (!link->network)
                 return false;
 
-        return link->network->dhcp & (family == AF_INET ? ADDRESS_FAMILY_IPV4 : ADDRESS_FAMILY_IPV6);
+        return link->network->dhcp & AF_TO_ADDRESS_FAMILY(family);
 }
 
 void network_adjust_dhcp(Network *network) {
index ec050e3a2d6d950bd1ee336699a1326fbf8dad3c..e2c76616ddf96a50d91e050df5f938401627214b 100644 (file)
@@ -12,6 +12,7 @@
 #include "hashmap.h"
 #include "ip-protocol-list.h"
 #include "netlink-util.h"
+#include "network-util.h"
 #include "networkd-manager.h"
 #include "networkd-queue.h"
 #include "networkd-route-util.h"
index c0762b9b705998888f66c2985fd8f5866e9f0244..17a2c6da38b978e3c00b7f3548d5d1acd17169ef 100644 (file)
@@ -303,9 +303,7 @@ int link_get_ip_forwarding(Link *link, int family) {
                 return t;
 
         /* If IPMasquerade= is enabled, also enable IP forwarding. */
-        if (family == AF_INET && FLAGS_SET(link->network->ip_masquerade, ADDRESS_FAMILY_IPV4))
-                return true;
-        if (family == AF_INET6 && FLAGS_SET(link->network->ip_masquerade, ADDRESS_FAMILY_IPV6))
+        if (FLAGS_SET(link->network->ip_masquerade, AF_TO_ADDRESS_FAMILY(family)))
                 return true;
 
         /* If IPv6SendRA= is enabled, also enable IPv6 forwarding. */
@@ -377,7 +375,7 @@ static int link_set_ip_forwarding(Link *link, int family) {
 
         /* When IPMasquerade= is enabled and the global setting is unset, enable _global_ IP forwarding, and
          * re-apply per-link setting for all links. */
-        if (FLAGS_SET(link->network->ip_masquerade, family == AF_INET ? ADDRESS_FAMILY_IPV4 : ADDRESS_FAMILY_IPV6) &&
+        if (FLAGS_SET(link->network->ip_masquerade, AF_TO_ADDRESS_FAMILY(family)) &&
             link->manager->ip_forwarding[family == AF_INET6] < 0) {
 
                 link->manager->ip_forwarding[family == AF_INET6] = true;