| 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); |