network: fix verification for broadcast address
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 2 Dec 2020 10:26:41 +0000 (19:26 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 3 Dec 2020 01:23:12 +0000 (10:23 +0900)
Fixes a bug caused by fe841414ef157f7f01d339c5d5730126e7b5fe0a.

src/network/networkd-address.c

index 92237c4e0f97e1d7b274c6fe0f54e8614a8a0c1c..0eb47f6e6513667f275d55db612a0e77101e8326 100644 (file)
@@ -1809,10 +1809,12 @@ static int address_section_verify(Address *address) {
                                          address->section->filename, address->section->line);
         }
 
-        if (address->family == AF_INET && in_addr_is_null(address->family, &address->in_addr_peer) &&
-            address->broadcast.s_addr == 0 && address->prefixlen <= 30)
-                address->broadcast.s_addr = address->in_addr.in.s_addr | htobe32(0xfffffffflu >> address->prefixlen);
-        else if (address->broadcast.s_addr != 0) {
+        if (address->family == AF_INET &&
+            in_addr_is_null(address->family, &address->in_addr_peer) &&
+            address->prefixlen <= 30) {
+                if (address->broadcast.s_addr == 0)
+                        address->broadcast.s_addr = address->in_addr.in.s_addr | htobe32(0xfffffffflu >> address->prefixlen);
+        } else if (address->broadcast.s_addr != 0) {
                 log_warning("%s: broadcast address is set for IPv6 address or IPv4 address with prefixlength larger than 30. "
                             "Ignoring Broadcast= setting in the [Address] section from line %u.",
                             address->section->filename, address->section->line);