diff options
author | Thomas Haller <thaller@redhat.com> | 2023-05-03 12:15:47 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-05-04 12:01:57 +0200 |
commit | 429cf416fd12f14d3a5639d7890f0d334c5e9328 (patch) | |
tree | b1c6648aada4316af185a27d61cbc19295b1574a | |
parent | db5946ac2fc349269835b18c37f1df35ac326cda (diff) | |
download | NetworkManager-429cf416fd12f14d3a5639d7890f0d334c5e9328.tar.gz |
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.
-rw-r--r-- | src/core/settings/nm-settings-connection.c | 14 | ||||
-rw-r--r-- | src/core/settings/nm-settings-connection.h | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/core/settings/nm-settings-connection.c b/src/core/settings/nm-settings-connection.c index da0f272872..8ee0a29a3f 100644 --- a/src/core/settings/nm-settings-connection.c +++ b/src/core/settings/nm-settings-connection.c @@ -370,6 +370,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 54abcf45b7..eec4ae1856 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" #include "NetworkManagerUtils.h" @@ -211,6 +213,8 @@ NMSettings *nm_settings_connection_get_settings(NMSettingsConnection *self); NMManager *nm_settings_connection_get_manager(NMSettingsConnection *self); 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, |