diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-10-28 15:07:06 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-10-28 15:44:10 +0900 |
commit | a41768533f2517a1d4c4a1df483ff0a462b4604a (patch) | |
tree | bd3ce038b64a8ee9627a0cfb471fbed6312807f3 /src/network/networkd-sysctl.c | |
parent | e69642dccc19598017abf9223e3b2e5e4c92664a (diff) | |
download | systemd-a41768533f2517a1d4c4a1df483ff0a462b4604a.tar.gz |
network: always enable sysctl property promote_secondaries
systemd-sysctl already enables promote_secondaries for all interface.
So, networkd also enables it unconditionally.
Diffstat (limited to 'src/network/networkd-sysctl.c')
-rw-r--r-- | src/network/networkd-sysctl.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c index b6839f86ee..dc95d01934 100644 --- a/src/network/networkd-sysctl.c +++ b/src/network/networkd-sysctl.c @@ -212,6 +212,15 @@ 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"); + /* 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 + * secondary IP and when the primary one expires it relies on the kernel to promote the + * secondary IP. See also https://github.com/systemd/systemd/issues/7163 */ + r = sysctl_write_ip_property_boolean(AF_INET, link->ifname, "promote_secondaries", true); + if (r < 0) + log_link_warning_errno(link, r, "Cannot enable promote_secondaries for interface, ignoring: %m"); + return 0; } |