summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-02-02 17:05:46 +0100
committerThomas Haller <thaller@redhat.com>2022-02-09 19:13:04 +0100
commit5b3e96451b68e8ff38c4ecfb3c2cd6d74a2faf49 (patch)
tree4113db1b69423850e7d8035a2d3969e2e5d1b6ff
parent3996933c579a1eef59bcfc442644372ab19dd90c (diff)
downloadNetworkManager-5b3e96451b68e8ff38c4ecfb3c2cd6d74a2faf49.tar.gz
platform: drop lazy initialization _rules_init() of NMPRouteManager
Let's just always allocate the hash tables. We will likely need them, and three hash tables are relatively cheap.
-rw-r--r--src/libnm-platform/nmp-route-manager.c49
1 files changed, 11 insertions, 38 deletions
diff --git a/src/libnm-platform/nmp-route-manager.c b/src/libnm-platform/nmp-route-manager.c
index 3e83186ff7..3174eeef86 100644
--- a/src/libnm-platform/nmp-route-manager.c
+++ b/src/libnm-platform/nmp-route-manager.c
@@ -23,10 +23,6 @@ struct _NMPRouteManager {
/*****************************************************************************/
-static void _rules_init(NMPRouteManager *self);
-
-/*****************************************************************************/
-
#define _NMLOG_DOMAIN LOGD_PLATFORM
#define _NMLOG_PREFIX_NAME "route-manager"
@@ -328,8 +324,6 @@ nmp_route_manager_track_rule(NMPRouteManager *self,
g_return_if_fail(user_tag);
nm_assert(track_priority != G_MININT32);
- _rules_init(self);
-
p_obj_stack = nmp_object_stackinit(&obj_stack, NMP_OBJECT_TYPE_ROUTING_RULE, routing_rule);
nm_assert(nmp_object_is_visible(p_obj_stack));
@@ -477,8 +471,6 @@ nmp_route_manager_untrack_rule(NMPRouteManager *self,
g_return_if_fail(routing_rule);
g_return_if_fail(user_tag);
- _rules_init(self);
-
p_obj_stack = nmp_object_stackinit(&obj_stack, NMP_OBJECT_TYPE_ROUTING_RULE, routing_rule);
nm_assert(nmp_object_is_visible(p_obj_stack));
@@ -497,9 +489,6 @@ nmp_route_manager_set_dirty(NMPRouteManager *self, gconstpointer user_tag)
g_return_if_fail(NMP_IS_ROUTE_MANAGER(self));
g_return_if_fail(user_tag);
- if (!self->by_data)
- return;
-
user_tag_data = g_hash_table_lookup(self->by_user_tag, &user_tag);
if (!user_tag_data)
return;
@@ -520,9 +509,6 @@ nmp_route_manager_untrack_all(NMPRouteManager *self,
g_return_if_fail(NMP_IS_ROUTE_MANAGER(self));
g_return_if_fail(user_tag);
- if (!self->by_data)
- return;
-
user_tag_data = g_hash_table_lookup(self->by_user_tag, &user_tag);
if (!user_tag_data)
return;
@@ -552,9 +538,6 @@ nmp_route_manager_sync_rules(NMPRouteManager *self, gboolean keep_deleted_rules)
g_return_if_fail(NMP_IS_ROUTE_MANAGER(self));
- if (!self->by_data)
- return;
-
_LOGD("sync%s", keep_deleted_rules ? " (don't remove any rules)" : "");
pl_head_entry = nm_platform_lookup_obj_type(self->platform, NMP_OBJECT_TYPE_ROUTING_RULE);
@@ -750,22 +733,6 @@ nmp_route_manager_track_rule_default(NMPRouteManager *self,
}
}
-static void
-_rules_init(NMPRouteManager *self)
-{
- if (self->by_data)
- return;
-
- self->by_data =
- g_hash_table_new_full(_rules_data_hash, _rules_data_equal, NULL, _rules_data_destroy);
- self->by_obj =
- g_hash_table_new_full(_rules_obj_hash, _rules_obj_equal, NULL, _rules_obj_destroy);
- self->by_user_tag = g_hash_table_new_full(_rules_user_tag_hash,
- _rules_user_tag_equal,
- NULL,
- _rules_user_tag_destroy);
-}
-
/*****************************************************************************/
NMPRouteManager *
@@ -779,6 +746,14 @@ nmp_route_manager_new(NMPlatform *platform)
*self = (NMPRouteManager){
.ref_count = 1,
.platform = g_object_ref(platform),
+ .by_data =
+ g_hash_table_new_full(_rules_data_hash, _rules_data_equal, NULL, _rules_data_destroy),
+ .by_obj =
+ g_hash_table_new_full(_rules_obj_hash, _rules_obj_equal, NULL, _rules_obj_destroy),
+ .by_user_tag = g_hash_table_new_full(_rules_user_tag_hash,
+ _rules_user_tag_equal,
+ NULL,
+ _rules_user_tag_destroy),
};
return self;
}
@@ -799,11 +774,9 @@ nmp_route_manager_unref(NMPRouteManager *self)
if (--self->ref_count > 0)
return;
- if (self->by_data) {
- g_hash_table_destroy(self->by_user_tag);
- g_hash_table_destroy(self->by_obj);
- g_hash_table_destroy(self->by_data);
- }
+ g_hash_table_destroy(self->by_user_tag);
+ g_hash_table_destroy(self->by_obj);
+ g_hash_table_destroy(self->by_data);
g_object_unref(self->platform);
g_slice_free(NMPRouteManager, self);
}