From c2cf898c19627f7ec6ea645206d76a19b5821a07 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 3 May 2023 12:15:47 +0200 Subject: [PATCH] core: add nm_settings_connection_get_setting() helper For efficiently and conveniently lookup an NMSetting from the NMConnection inside the NMSettingsConnection. Note that this uses the NMMetaSettingType as lookup key. That is a novel approach, compared to lookup by name (nm_connection_get_setting_by_name()) or GType (nm_connection_get_setting()). Using the NMMetaSettingType enum is however faster, because it does not require resolving the name/GType first. This is perfecly fine internal API, we should use it. (cherry picked from commit 429cf416fd12f14d3a5639d7890f0d334c5e9328) (cherry picked from commit 10e493bbe82ce06bd217a148fb0a6e531c8ee0a6) --- src/core/settings/nm-settings-connection.c | 14 ++++++++++++++ src/core/settings/nm-settings-connection.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/src/core/settings/nm-settings-connection.c b/src/core/settings/nm-settings-connection.c index 024c000996..e4cee20b10 100644 --- a/src/core/settings/nm-settings-connection.c +++ b/src/core/settings/nm-settings-connection.c @@ -361,6 +361,20 @@ nm_settings_connection_get_connection(NMSettingsConnection *self) return NM_SETTINGS_CONNECTION_GET_PRIVATE(self)->connection; } +gpointer +nm_settings_connection_get_setting(NMSettingsConnection *self, NMMetaSettingType meta_type) +{ + NMConnection *connection; + + nm_assert(NM_IS_SETTINGS_CONNECTION(self)); + + connection = NM_SETTINGS_CONNECTION_GET_PRIVATE(self)->connection; + + nm_assert(NM_IS_SIMPLE_CONNECTION(connection)); + + return _nm_connection_get_setting_by_metatype_unsafe(connection, meta_type); +} + void _nm_settings_connection_set_connection(NMSettingsConnection *self, NMConnection *new_connection, diff --git a/src/core/settings/nm-settings-connection.h b/src/core/settings/nm-settings-connection.h index bf8bfda74b..f144a3bd12 100644 --- a/src/core/settings/nm-settings-connection.h +++ b/src/core/settings/nm-settings-connection.h @@ -7,6 +7,8 @@ #ifndef __NETWORKMANAGER_SETTINGS_CONNECTION_H__ #define __NETWORKMANAGER_SETTINGS_CONNECTION_H__ +#include "libnm-core-intern/nm-meta-setting-base.h" + #include "nm-dbus-object.h" #include "nm-connection.h" @@ -218,6 +220,8 @@ GType nm_settings_connection_get_type(void); NMSettingsConnection *nm_settings_connection_new(void); NMConnection *nm_settings_connection_get_connection(NMSettingsConnection *self); +gpointer nm_settings_connection_get_setting(NMSettingsConnection *self, + NMMetaSettingType meta_type); void _nm_settings_connection_set_connection(NMSettingsConnection *self, NMConnection *new_connection,