From: Lennart Poettering Date: Tue, 15 Oct 2024 09:38:55 +0000 (+0200) Subject: network: add AF_TO_ADDRESS_FAMILY() helper X-Git-Tag: v257-rc1~217 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59577d241658b4206e12697f998d48dc87f7e023;p=thirdparty%2Fsystemd.git network: add AF_TO_ADDRESS_FAMILY() helper Make some code a bit shorter. --- diff --git a/src/libsystemd/sd-network/network-util.h b/src/libsystemd/sd-network/network-util.h index 14c6f6819d6..80b4cc3cd61 100644 --- a/src/libsystemd/sd-network/network-util.h +++ b/src/libsystemd/sd-network/network-util.h @@ -2,6 +2,7 @@ #pragma once #include +#include #include #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, diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 0e06149f33c..1e37e6e85a6 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -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) diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c index 1799d042127..8b64dfe8f00 100644 --- a/src/network/networkd-dhcp-common.c +++ b/src/network/networkd-dhcp-common.c @@ -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) { diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c index ec050e3a2d6..e2c76616ddf 100644 --- a/src/network/networkd-routing-policy-rule.c +++ b/src/network/networkd-routing-policy-rule.c @@ -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" diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c index c0762b9b705..17a2c6da38b 100644 --- a/src/network/networkd-sysctl.c +++ b/src/network/networkd-sysctl.c @@ -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;