]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: do not set broadcast if prefixlen is 31 or 32
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 2 Dec 2020 10:19:06 +0000 (19:19 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 16 Dec 2020 13:31:40 +0000 (14:31 +0100)
After fe841414ef157f7f01d339c5d5730126e7b5fe0a, broadcast address is
also compared with existing one to determine whether the address is
foregin or not. So, the address object should not contain unnecessary
information.

Fixes #17803.

(cherry picked from commit df8aa086420e6ce61e32898b2bb7c88b87fd1c43)

src/network/networkd-dhcp4.c

index 02d33841b69277ad51503a779fb8c80b7cc827bc..68d975924c94e81a930d931949a4f125dbf506ee 100644 (file)
@@ -861,7 +861,8 @@ static int dhcp4_update_address(Link *link, bool announce) {
         addr->cinfo.ifa_prefered = lifetime;
         addr->cinfo.ifa_valid = lifetime;
         addr->prefixlen = prefixlen;
-        addr->broadcast.s_addr = address.s_addr | ~netmask.s_addr;
+        if (prefixlen <= 30)
+                addr->broadcast.s_addr = address.s_addr | ~netmask.s_addr;
         SET_FLAG(addr->flags, IFA_F_NOPREFIXROUTE, !link_prefixroute(link));
 
         /* allow reusing an existing address and simply update its lifetime