mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-22 06:29:23 +01:00
netconfig: Optimize IPv4 address deletion
Decrease the queue traversals to a single pass
This commit is contained in:
parent
444491490e
commit
3e634bfbcc
@ -427,22 +427,22 @@ static void netconfig_ifaddr_deleted(struct netconfig *netconfig,
|
||||
uint32_t len)
|
||||
{
|
||||
struct netconfig_ifaddr *ifaddr;
|
||||
char *ip;
|
||||
struct netconfig_ifaddr query;
|
||||
|
||||
rtnl_ifaddr_extract(ifa, len, NULL, &ip, NULL);
|
||||
rtnl_ifaddr_extract(ifa, len, NULL, &query.ip, NULL);
|
||||
|
||||
ifaddr = netconfig_ifaddr_find(netconfig, ifa->ifa_family,
|
||||
ifa->ifa_prefixlen, ip);
|
||||
query.family = ifa->ifa_family;
|
||||
query.prefix_len = ifa->ifa_prefixlen;
|
||||
|
||||
l_free(ip);
|
||||
ifaddr = l_queue_remove_if(netconfig->ifaddr_list,
|
||||
netconfig_ifaddr_match, &query);
|
||||
l_free(query.ip);
|
||||
|
||||
if (!ifaddr)
|
||||
return;
|
||||
|
||||
l_debug("ifaddr %s/%u", ifaddr->ip, ifaddr->prefix_len);
|
||||
|
||||
l_queue_remove(netconfig->ifaddr_list, ifaddr);
|
||||
|
||||
netconfig_ifaddr_destroy(ifaddr);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user