network/bridge-fdb,mdb: use hash_ops with destructor
This commit is contained in:
@@ -22,8 +22,7 @@
|
||||
|
||||
#define STATIC_BRIDGE_FDB_ENTRIES_PER_NETWORK_MAX 1024U
|
||||
|
||||
/* remove and FDB entry. */
|
||||
BridgeFDB *bridge_fdb_free(BridgeFDB *fdb) {
|
||||
static BridgeFDB* bridge_fdb_free(BridgeFDB *fdb) {
|
||||
if (!fdb)
|
||||
return NULL;
|
||||
|
||||
@@ -40,7 +39,11 @@ BridgeFDB *bridge_fdb_free(BridgeFDB *fdb) {
|
||||
|
||||
DEFINE_SECTION_CLEANUP_FUNCTIONS(BridgeFDB, bridge_fdb_free);
|
||||
|
||||
/* create a new FDB entry or get an existing one. */
|
||||
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
|
||||
bridge_fdb_hash_ops_by_section,
|
||||
ConfigSection, config_section_hash_func, config_section_compare_func,
|
||||
BridgeFDB, bridge_fdb_free);
|
||||
|
||||
static int bridge_fdb_new_static(
|
||||
Network *network,
|
||||
const char *filename,
|
||||
@@ -83,13 +86,12 @@ static int bridge_fdb_new_static(
|
||||
.ntf_flags = NEIGHBOR_CACHE_ENTRY_FLAGS_SELF,
|
||||
};
|
||||
|
||||
r = hashmap_ensure_put(&network->bridge_fdb_entries_by_section, &config_section_hash_ops, fdb->section, fdb);
|
||||
r = hashmap_ensure_put(&network->bridge_fdb_entries_by_section, &bridge_fdb_hash_ops_by_section, fdb->section, fdb);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* return allocated FDB structure. */
|
||||
*ret = TAKE_PTR(fdb);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,8 +40,6 @@ typedef struct BridgeFDB {
|
||||
int outgoing_ifindex;
|
||||
} BridgeFDB;
|
||||
|
||||
BridgeFDB *bridge_fdb_free(BridgeFDB *fdb);
|
||||
|
||||
void network_drop_invalid_bridge_fdb_entries(Network *network);
|
||||
|
||||
int link_request_static_bridge_fdb(Link *link);
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
#include "networkd-manager.h"
|
||||
#include "networkd-network.h"
|
||||
#include "networkd-queue.h"
|
||||
#include "networkd-util.h"
|
||||
#include "string-util.h"
|
||||
#include "vlan-util.h"
|
||||
|
||||
#define STATIC_BRIDGE_MDB_ENTRIES_PER_NETWORK_MAX 1024U
|
||||
|
||||
/* remove MDB entry. */
|
||||
BridgeMDB *bridge_mdb_free(BridgeMDB *mdb) {
|
||||
static BridgeMDB* bridge_mdb_free(BridgeMDB *mdb) {
|
||||
if (!mdb)
|
||||
return NULL;
|
||||
|
||||
@@ -32,7 +32,11 @@ BridgeMDB *bridge_mdb_free(BridgeMDB *mdb) {
|
||||
|
||||
DEFINE_SECTION_CLEANUP_FUNCTIONS(BridgeMDB, bridge_mdb_free);
|
||||
|
||||
/* create a new MDB entry or get an existing one. */
|
||||
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
|
||||
bridge_mdb_hash_ops_by_section,
|
||||
ConfigSection, config_section_hash_func, config_section_compare_func,
|
||||
BridgeMDB, bridge_mdb_free);
|
||||
|
||||
static int bridge_mdb_new_static(
|
||||
Network *network,
|
||||
const char *filename,
|
||||
@@ -74,7 +78,7 @@ static int bridge_mdb_new_static(
|
||||
.type = _BRIDGE_MDB_ENTRY_TYPE_INVALID,
|
||||
};
|
||||
|
||||
r = hashmap_ensure_put(&network->bridge_mdb_entries_by_section, &config_section_hash_ops, mdb->section, mdb);
|
||||
r = hashmap_ensure_put(&network->bridge_mdb_entries_by_section, &bridge_mdb_hash_ops_by_section, mdb->section, mdb);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "conf-parser.h"
|
||||
#include "in-addr-util.h"
|
||||
#include "networkd-util.h"
|
||||
|
||||
typedef struct Link Link;
|
||||
typedef struct Network Network;
|
||||
@@ -30,8 +29,6 @@ typedef struct BridgeMDB {
|
||||
uint16_t vlan_id;
|
||||
} BridgeMDB;
|
||||
|
||||
BridgeMDB *bridge_mdb_free(BridgeMDB *mdb);
|
||||
|
||||
void network_drop_invalid_bridge_mdb_entries(Network *network);
|
||||
|
||||
int link_request_static_bridge_mdb(Link *link);
|
||||
|
||||
@@ -827,8 +827,8 @@ static Network *network_free(Network *network) {
|
||||
ordered_hashmap_free(network->addresses_by_section);
|
||||
hashmap_free(network->routes_by_section);
|
||||
ordered_hashmap_free(network->nexthops_by_section);
|
||||
hashmap_free_with_destructor(network->bridge_fdb_entries_by_section, bridge_fdb_free);
|
||||
hashmap_free_with_destructor(network->bridge_mdb_entries_by_section, bridge_mdb_free);
|
||||
hashmap_free(network->bridge_fdb_entries_by_section);
|
||||
hashmap_free(network->bridge_mdb_entries_by_section);
|
||||
ordered_hashmap_free(network->neighbors_by_section);
|
||||
hashmap_free(network->address_labels_by_section);
|
||||
hashmap_free(network->prefixes_by_section);
|
||||
|
||||
Reference in New Issue
Block a user