network: add AF_TO_ADDRESS_FAMILY() helper

Make some code a bit shorter.
This commit is contained in:
Lennart Poettering
2024-10-15 20:44:39 +09:00
committed by Yu Watanabe
parent 7a3ee9217e
commit 59577d2416
5 changed files with 17 additions and 11 deletions
+12
View 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,
+1 -6
View 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)
+1 -1
View 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) {
@@ -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"
+2 -4
View 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;