network: add AF_TO_ADDRESS_FAMILY() helper
Make some code a bit shorter.
This commit is contained in:
committed by
Yu Watanabe
parent
7a3ee9217e
commit
59577d2416
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user