blob: 587a86dd4ebbf54d4e0da55e72c703269da0f2b4 [file] [log] [blame]
commit 05a7023d242b9012216c661f253df1c9c3d45b39
Author: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Wed Dec 2 19:26:41 2020 +0900
network: fix verification for broadcast address
Fixes a bug caused by fe841414ef157f7f01d339c5d5730126e7b5fe0a.
diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c
index 92237c4e0f..0eb47f6e65 100644
--- a/src/network/networkd-address.c
+++ b/src/network/networkd-address.c
@@ -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);