From: Yu Watanabe Date: Sat, 4 May 2019 13:33:17 +0000 (+0200) Subject: network: simplify link_free() X-Git-Tag: v243-rc1~475^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f535e35417ffc789457badf605f60215c731f530;p=thirdparty%2Fsystemd.git network: simplify link_free() --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index a224f2fe228..0a679e4ba63 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -624,30 +624,15 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) { } static Link *link_free(Link *link) { - Link *carrier; Address *address; - Route *route; - Iterator i; assert(link); - while ((route = set_first(link->routes))) - route_free(route); - - while ((route = set_first(link->routes_foreign))) - route_free(route); - - link->routes = set_free(link->routes); - link->routes_foreign = set_free(link->routes_foreign); + link->routes = set_free_with_destructor(link->routes, route_free); + link->routes_foreign = set_free_with_destructor(link->routes_foreign, route_free); - while ((address = set_first(link->addresses))) - address_free(address); - - while ((address = set_first(link->addresses_foreign))) - address_free(address); - - link->addresses = set_free(link->addresses); - link->addresses_foreign = set_free(link->addresses_foreign); + link->addresses = set_free_with_destructor(link->addresses, address_free); + link->addresses_foreign = set_free_with_destructor(link->addresses_foreign, address_free); while ((address = link->pool_addresses)) { LIST_REMOVE(addresses, link->pool_addresses, address); @@ -680,12 +665,7 @@ static Link *link_free(Link *link) { sd_device_unref(link->sd_device); - HASHMAP_FOREACH (carrier, link->bound_to_links, i) - hashmap_remove(link->bound_to_links, INT_TO_PTR(carrier->ifindex)); hashmap_free(link->bound_to_links); - - HASHMAP_FOREACH (carrier, link->bound_by_links, i) - hashmap_remove(link->bound_by_links, INT_TO_PTR(carrier->ifindex)); hashmap_free(link->bound_by_links); set_free_with_destructor(link->slaves, link_unref);