-void manager_free(Manager *m) {
- Network *network;
- NetDev *netdev;
- Link *link;
- AddressPool *pool;
-
- if (!m)
- return;
-
- free(m->state_file);
-
- udev_monitor_unref(m->udev_monitor);
- udev_unref(m->udev);
- sd_bus_unref(m->bus);
- sd_bus_slot_unref(m->prepare_for_sleep_slot);
- sd_event_source_unref(m->udev_event_source);
- sd_event_source_unref(m->bus_retry_event_source);
- sd_event_unref(m->event);
-
- while ((link = hashmap_first(m->links)))
- link_unref(link);
- hashmap_free(m->links);
-
- while ((network = m->networks))
- network_free(network);
-
- while ((netdev = hashmap_first(m->netdevs)))
- netdev_unref(netdev);
- hashmap_free(m->netdevs);
-
- while ((pool = m->address_pools))
- address_pool_free(pool);
-
- sd_rtnl_unref(m->rtnl);