summaryrefslogtreecommitdiff
path: root/src/network/networkd-sysctl.c
diff options
context:
space:
mode:
authorSusant Sahani <ssahani@vmware.com>2021-02-18 09:55:13 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-02-18 21:04:17 +0900
commitd75bf6cfe23b1cf05ede7c61e638e6d999e8cf85 (patch)
tree9ecd7b0c0d853ab30c698295e55eff8795866731 /src/network/networkd-sysctl.c
parentd97a35e2289860a336292942776ddac56c304327 (diff)
downloadsystemd-d75bf6cfe23b1cf05ede7c61e638e6d999e8cf85.tar.gz
network: Add "route_localnet" sysctl support
Diffstat (limited to 'src/network/networkd-sysctl.c')
-rw-r--r--src/network/networkd-sysctl.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c
index 377fdac722..11681286e0 100644
--- a/src/network/networkd-sysctl.c
+++ b/src/network/networkd-sysctl.c
@@ -173,6 +173,18 @@ static int link_set_ipv4_accept_local(Link *link) {
return sysctl_write_ip_property_boolean(AF_INET, link->ifname, "accept_local", link->network->ipv4_accept_local > 0);
}
+static int link_set_ipv4_route_localnet(Link *link) {
+ assert(link);
+
+ if (link->flags & IFF_LOOPBACK)
+ return 0;
+
+ if (link->network->ipv4_route_localnet < 0)
+ return 0;
+
+ return sysctl_write_ip_property_boolean(AF_INET, link->ifname, "route_localnet", link->network->ipv4_route_localnet > 0);
+}
+
int link_set_sysctl(Link *link) {
int r;
@@ -216,6 +228,10 @@ int link_set_sysctl(Link *link) {
if (r < 0)
log_link_warning_errno(link, r, "Cannot set IPv4 accept_local flag for interface, ignoring: %m");
+ r = link_set_ipv4_route_localnet(link);
+ if (r < 0)
+ log_link_warning_errno(link, r, "Cannot set IPv4 route_localnet flag for interface, ignoring: %m");
+
/* If promote_secondaries is not set, DHCP will work only as long as the IP address does not
* changes between leases. The kernel will remove all secondary IP addresses of an interface
* otherwise. The way systemd-networkd works is that the new IP of a lease is added as a