- network_load() is always called with an empty OrderedHashmap, renamed the output
parameter to 'ret'.
- When netdev_load() is called on startup, the hashmap is NULL. When it is
called on reloading, the hashmap is not cleaned up.
Hence, then these cleanups are always no-op. Let's drop them.
return 0;
}
-int netdev_load(Manager *manager, bool reload) {
+int netdev_load(Manager *manager) {
_cleanup_strv_free_ char **files = NULL;
int r;
assert(manager);
- if (!reload)
- hashmap_clear_with_destructor(manager->netdevs, netdev_unref);
-
r = conf_files_list_strv(&files, ".netdev", NULL, 0, NETWORK_DIRS);
if (r < 0)
return log_error_errno(r, "Failed to enumerate netdev files: %m");
void netdev_detach(NetDev *netdev);
int netdev_set_ifindex_internal(NetDev *netdev, int ifindex);
-int netdev_load(Manager *manager, bool reload);
+int netdev_load(Manager *manager);
int netdev_load_one(Manager *manager, const char *filename);
void netdev_drop(NetDev *netdev);
void netdev_enter_failed(NetDev *netdev);
int manager_load_config(Manager *m) {
int r;
- r = netdev_load(m, false);
+ r = netdev_load(m);
if (r < 0)
return r;
(void) notify_reloading();
- r = netdev_load(m, /* reload= */ true);
+ r = netdev_load(m);
if (r < 0)
goto finish;
return 0;
}
-int network_load(Manager *manager, OrderedHashmap **networks) {
+int network_load(Manager *manager, OrderedHashmap **ret) {
_cleanup_strv_free_ char **files = NULL;
+ OrderedHashmap *networks = NULL;
int r;
assert(manager);
-
- ordered_hashmap_clear_with_destructor(*networks, network_unref);
+ assert(ret);
r = conf_files_list_strv(&files, ".network", NULL, 0, NETWORK_DIRS);
if (r < 0)
return log_error_errno(r, "Failed to enumerate network files: %m");
STRV_FOREACH(f, files)
- (void) network_load_one(manager, networks, *f);
+ (void) network_load_one(manager, &networks, *f);
+ *ret = TAKE_PTR(networks);
return 0;
}
Network *network_unref(Network *network);
DEFINE_TRIVIAL_CLEANUP_FUNC(Network*, network_unref);
-int network_load(Manager *manager, OrderedHashmap **networks);
+int network_load(Manager *manager, OrderedHashmap **ret);
int network_reload(Manager *manager);
int network_load_one(Manager *manager, OrderedHashmap **networks, const char *filename);
int network_verify(Network *network);