net: acd: Avoid removing auto IPv4 address twice
When the network interface goes down, we call net_ipv4_autoconf_reset() which removes the autoaddress from the network interface. The net_ipv4_autoconf_reset() is also called when ACD is started in which case we could see this error message <dbg> net_if_start_acd: Starting ACD for iface 2 <err> net_if: iface 2 addr 169.254.174.230 (net_if_ipv4_addr_rm():4625) <dbg> net_if_ipv4_addr_rm: Address 169.254.174.230 not found (-22) This error is superfluous and not needed. So before trying to remove the address, check if the interface already has it set and only then remove it. Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
This commit is contained in:
parent
902c95ab95
commit
bd4c0b746c
1 changed files with 6 additions and 1 deletions
|
@ -138,13 +138,18 @@ void net_ipv4_autoconf_start(struct net_if *iface)
|
||||||
void net_ipv4_autoconf_reset(struct net_if *iface)
|
void net_ipv4_autoconf_reset(struct net_if *iface)
|
||||||
{
|
{
|
||||||
struct net_if_config *cfg;
|
struct net_if_config *cfg;
|
||||||
|
struct net_if_addr *ifaddr;
|
||||||
|
struct net_if *ret;
|
||||||
|
|
||||||
cfg = net_if_get_config(iface);
|
cfg = net_if_get_config(iface);
|
||||||
if (!cfg) {
|
if (!cfg) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ifaddr = net_if_ipv4_addr_lookup(&cfg->ipv4auto.requested_ip, &ret);
|
||||||
|
if (ifaddr != NULL && ret == iface) {
|
||||||
net_if_ipv4_addr_rm(iface, &cfg->ipv4auto.requested_ip);
|
net_if_ipv4_addr_rm(iface, &cfg->ipv4auto.requested_ip);
|
||||||
|
}
|
||||||
|
|
||||||
NET_DBG("Autoconf reset for %p", iface);
|
NET_DBG("Autoconf reset for %p", iface);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue