From: Joan Lledó <jlle...@member.fsf.org> After DHCPRELEASE, DHCP client sends a SIOCSIFADDR to set the interface address to 0.0.0.0. This is not accepted by our IP validator `ipv4config_is_valid()`. I think this use case is legit so this commit makes the translator accept 0.0.0.0 as a valid address. This assumes that a client trying to set IP to 0.0.0.0 is in fact trying to remove the IP from the interface. Then it sets all fields to NONE, in order to pass the validation.
* lwip/lwip-util.c: `configure_device`: Add the exception for 0.0.0.0 and 255.255.255.255. --- lwip/lwip-util.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lwip/lwip-util.c b/lwip/lwip-util.c index 77d2c233..eff15137 100644 --- a/lwip/lwip-util.c +++ b/lwip/lwip-util.c @@ -333,6 +333,19 @@ configure_device (struct netif *netif, uint32_t addr, uint32_t netmask, { error_t err = 0; + /* + * The caller is trying to set an invalid address, + * set all fields to empty so it passes the validation + */ + if (addr == INADDR_ANY || addr == INADDR_NONE) + { + addr = INADDR_NONE; + netmask = INADDR_NONE; + peer = INADDR_NONE; + broadcast = INADDR_NONE; + gateway = INADDR_NONE; + } + if (netmask != INADDR_NONE) /* * If broadcasting is enabled and we have a netmask lesser than 31 bits -- 2.47.2