Skip to content

Commit 1b25b88

Browse files
committed
network/bridge-fdb,mdb: use hash_ops with destructor
1 parent 5c6e6f5 commit 1b25b88

File tree

5 files changed

+17
-16
lines changed

5 files changed

+17
-16
lines changed

src/network/networkd-bridge-fdb.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222

2323
#define STATIC_BRIDGE_FDB_ENTRIES_PER_NETWORK_MAX 1024U
2424

25-
/* remove and FDB entry. */
26-
BridgeFDB *bridge_fdb_free(BridgeFDB *fdb) {
25+
static BridgeFDB* bridge_fdb_free(BridgeFDB *fdb) {
2726
if (!fdb)
2827
return NULL;
2928

@@ -40,7 +39,11 @@ BridgeFDB *bridge_fdb_free(BridgeFDB *fdb) {
4039

4140
DEFINE_SECTION_CLEANUP_FUNCTIONS(BridgeFDB, bridge_fdb_free);
4241

43-
/* create a new FDB entry or get an existing one. */
42+
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
43+
bridge_fdb_hash_ops_by_section,
44+
ConfigSection, config_section_hash_func, config_section_compare_func,
45+
BridgeFDB, bridge_fdb_free);
46+
4447
static int bridge_fdb_new_static(
4548
Network *network,
4649
const char *filename,
@@ -83,13 +86,12 @@ static int bridge_fdb_new_static(
8386
.ntf_flags = NEIGHBOR_CACHE_ENTRY_FLAGS_SELF,
8487
};
8588

86-
r = hashmap_ensure_put(&network->bridge_fdb_entries_by_section, &config_section_hash_ops, fdb->section, fdb);
89+
r = hashmap_ensure_put(&network->bridge_fdb_entries_by_section, &bridge_fdb_hash_ops_by_section, fdb->section, fdb);
8790
if (r < 0)
8891
return r;
8992

9093
/* return allocated FDB structure. */
9194
*ret = TAKE_PTR(fdb);
92-
9395
return 0;
9496
}
9597

src/network/networkd-bridge-fdb.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ typedef struct BridgeFDB {
4040
int outgoing_ifindex;
4141
} BridgeFDB;
4242

43-
BridgeFDB *bridge_fdb_free(BridgeFDB *fdb);
44-
4543
void network_drop_invalid_bridge_fdb_entries(Network *network);
4644

4745
int link_request_static_bridge_fdb(Link *link);

src/network/networkd-bridge-mdb.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
#include "networkd-manager.h"
1111
#include "networkd-network.h"
1212
#include "networkd-queue.h"
13+
#include "networkd-util.h"
1314
#include "string-util.h"
1415
#include "vlan-util.h"
1516

1617
#define STATIC_BRIDGE_MDB_ENTRIES_PER_NETWORK_MAX 1024U
1718

18-
/* remove MDB entry. */
19-
BridgeMDB *bridge_mdb_free(BridgeMDB *mdb) {
19+
static BridgeMDB* bridge_mdb_free(BridgeMDB *mdb) {
2020
if (!mdb)
2121
return NULL;
2222

@@ -32,7 +32,11 @@ BridgeMDB *bridge_mdb_free(BridgeMDB *mdb) {
3232

3333
DEFINE_SECTION_CLEANUP_FUNCTIONS(BridgeMDB, bridge_mdb_free);
3434

35-
/* create a new MDB entry or get an existing one. */
35+
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
36+
bridge_mdb_hash_ops_by_section,
37+
ConfigSection, config_section_hash_func, config_section_compare_func,
38+
BridgeMDB, bridge_mdb_free);
39+
3640
static int bridge_mdb_new_static(
3741
Network *network,
3842
const char *filename,
@@ -74,7 +78,7 @@ static int bridge_mdb_new_static(
7478
.type = _BRIDGE_MDB_ENTRY_TYPE_INVALID,
7579
};
7680

77-
r = hashmap_ensure_put(&network->bridge_mdb_entries_by_section, &config_section_hash_ops, mdb->section, mdb);
81+
r = hashmap_ensure_put(&network->bridge_mdb_entries_by_section, &bridge_mdb_hash_ops_by_section, mdb->section, mdb);
7882
if (r < 0)
7983
return r;
8084

src/network/networkd-bridge-mdb.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
#include "conf-parser.h"
77
#include "in-addr-util.h"
8-
#include "networkd-util.h"
98

109
typedef struct Link Link;
1110
typedef struct Network Network;
@@ -30,8 +29,6 @@ typedef struct BridgeMDB {
3029
uint16_t vlan_id;
3130
} BridgeMDB;
3231

33-
BridgeMDB *bridge_mdb_free(BridgeMDB *mdb);
34-
3532
void network_drop_invalid_bridge_mdb_entries(Network *network);
3633

3734
int link_request_static_bridge_mdb(Link *link);

src/network/networkd-network.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,8 +827,8 @@ static Network *network_free(Network *network) {
827827
ordered_hashmap_free(network->addresses_by_section);
828828
hashmap_free(network->routes_by_section);
829829
ordered_hashmap_free(network->nexthops_by_section);
830-
hashmap_free_with_destructor(network->bridge_fdb_entries_by_section, bridge_fdb_free);
831-
hashmap_free_with_destructor(network->bridge_mdb_entries_by_section, bridge_mdb_free);
830+
hashmap_free(network->bridge_fdb_entries_by_section);
831+
hashmap_free(network->bridge_mdb_entries_by_section);
832832
ordered_hashmap_free(network->neighbors_by_section);
833833
hashmap_free(network->address_labels_by_section);
834834
hashmap_free(network->prefixes_by_section);

0 commit comments

Comments
 (0)