From: Yu Watanabe Date: Fri, 2 Oct 2020 07:23:28 +0000 (+0900) Subject: network: unify link_ipv{4,6}_forward_enabled() X-Git-Tag: v247-rc1~117^2~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f7a17ff0cc07d82a4e4a034997d3ee0943b7689;p=thirdparty%2Fsystemd.git network: unify link_ipv{4,6}_forward_enabled() --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index dcdfbe2ac40..e41ed6b334f 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -162,25 +162,11 @@ static bool link_radv_enabled(Link *link) { return link->network->router_prefix_delegation != RADV_PREFIX_DELEGATION_NONE; } -static bool link_ipv4_forward_enabled(Link *link) { +bool link_ip_forward_enabled(Link *link, int family) { assert(link); + assert(IN_SET(family, AF_INET, AF_INET6)); - if (link->flags & IFF_LOOPBACK) - return false; - - if (!link->network) - return false; - - if (link->network->ip_forward == _ADDRESS_FAMILY_INVALID) - return false; - - return link->network->ip_forward & ADDRESS_FAMILY_IPV4; -} - -static bool link_ipv6_forward_enabled(Link *link) { - assert(link); - - if (!socket_ipv6_is_supported()) + if (family == AF_INET6 && !socket_ipv6_is_supported()) return false; if (link->flags & IFF_LOOPBACK) @@ -189,10 +175,7 @@ static bool link_ipv6_forward_enabled(Link *link) { if (!link->network) return false; - if (link->network->ip_forward == _ADDRESS_FAMILY_INVALID) - return false; - - return link->network->ip_forward & ADDRESS_FAMILY_IPV6; + return link->network->ip_forward & (family == AF_INET ? ADDRESS_FAMILY_IPV4 : ADDRESS_FAMILY_IPV6); } static bool link_proxy_arp_enabled(Link *link) { diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index 25c7bd98da6..6a4ef4f6bf6 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -227,6 +227,14 @@ bool link_has_carrier(Link *link); bool link_ipv6ll_enabled(Link *link); int link_ipv6ll_gained(Link *link, const struct in6_addr *address); +bool link_ip_forward_enabled(Link *link, int family); +static inline bool link_ipv4_forward_enabled(Link *link) { + return link_ip_forward_enabled(link, AF_INET); +} +static inline bool link_ipv6_forward_enabled(Link *link) { + return link_ip_forward_enabled(link, AF_INET6); +} + int link_set_mtu(Link *link, uint32_t mtu); bool link_ipv4ll_enabled(Link *link, AddressFamily mask);