X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-network.c;fp=src%2Fnetwork%2Fnetworkd-network.c;h=966b59b878d8f658b0cf906ff6d59e90e7d9affc;hp=ef9e0a8c357459642bd68e57bf3b580efe2fb689;hb=b98b483bac585af754e8a22ea890db8486905d8a;hpb=c2551e7105051f40b2bf77a5c1ecb2e720d78d77 diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index ef9e0a8c3..966b59b87 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -62,6 +62,7 @@ static int network_load_one(Manager *manager, const char *filename) { LIST_HEAD_INIT(network->static_addresses); LIST_HEAD_INIT(network->static_routes); + LIST_HEAD_INIT(network->static_fdb_entries); network->stacked_netdevs = hashmap_new(&string_hash_ops); if (!network->stacked_netdevs) @@ -75,6 +76,10 @@ static int network_load_one(Manager *manager, const char *filename) { if (!network->routes_by_section) return log_oom(); + network->fdb_entries_by_section = hashmap_new(NULL); + if (!network->fdb_entries_by_section) + return log_oom(); + network->filename = strdup(filename); if (!network->filename) return log_oom(); @@ -97,7 +102,8 @@ static int network_load_one(Manager *manager, const char *filename) { "Route\0" "DHCP\0" "DHCPv4\0" - "Bridge\0", + "Bridge\0" + "BridgeFDB\0", config_item_perf_lookup, network_network_gperf_lookup, false, false, true, network); if (r < 0) @@ -154,6 +160,7 @@ void network_free(Network *network) { NetDev *netdev; Route *route; Address *address; + FdbEntry *fdb_entry; Iterator i; if (!network) @@ -192,8 +199,12 @@ void network_free(Network *network) { while ((address = network->static_addresses)) address_free(address); + while ((fdb_entry = network->static_fdb_entries)) + fdb_entry_free(fdb_entry); + hashmap_free(network->addresses_by_section); hashmap_free(network->routes_by_section); + hashmap_free(network->fdb_entries_by_section); if (network->manager && network->manager->networks) LIST_REMOVE(networks, network->manager->networks, network);