]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: unify link_ipv{4,6}_forward_enabled()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 2 Oct 2020 07:23:28 +0000 (16:23 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 6 Oct 2020 17:50:50 +0000 (02:50 +0900)
src/network/networkd-link.c
src/network/networkd-link.h

index dcdfbe2ac4034994875f39327bddb449e4ab7354..e41ed6b334f50f75b5aa811c77727eb596d92223 100644 (file)
@@ -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) {
index 25c7bd98da67018b08b941e150462c42608e73c9..6a4ef4f6bf65f3b267248d3f363b1b36724abed7 100644 (file)
@@ -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);