| commit df8aa086420e6ce61e32898b2bb7c88b87fd1c43 |
| Author: Yu Watanabe <watanabe.yu+github@gmail.com> |
| Date: Wed Dec 2 19:19:06 2020 +0900 |
| |
| network: do not set broadcast if prefixlen is 31 or 32 |
| |
| 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. |
| |
| diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c |
| index 8f661c646f..14e7a28774 100644 |
| --- a/src/network/networkd-dhcp4.c |
| +++ b/src/network/networkd-dhcp4.c |
| @@ -865,7 +865,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 |