From c265096d660e3d557399c8d3fc170e85fb137837 Mon Sep 17 00:00:00 2001 From: Gris Ge Date: Fri, 20 Aug 2021 15:20:08 +0800 Subject: [PATCH] libnm-core-aux-intern: Add helper function `_nm_connection_ensure_setting()` Introduce internal function `_nm_connection_ensure_setting()` to `libnm-core-aux-intern` and add specified setting to connection if not found. Signed-off-by: Gris Ge --- src/libnm-core-aux-intern/nm-libnm-core-utils.c | 14 ++++++++++++++ src/libnm-core-aux-intern/nm-libnm-core-utils.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/libnm-core-aux-intern/nm-libnm-core-utils.c b/src/libnm-core-aux-intern/nm-libnm-core-utils.c index 849037ca07..5b6f3030b0 100644 --- a/src/libnm-core-aux-intern/nm-libnm-core-utils.c +++ b/src/libnm-core-aux-intern/nm-libnm-core-utils.c @@ -8,6 +8,7 @@ #include "nm-common-macros.h" #include "nm-errors.h" +#include "libnm-core-public/nm-connection.h" /*****************************************************************************/ @@ -358,3 +359,16 @@ nm_settings_connection_validate_permission_user(const char *item, gssize len) return TRUE; } + +gpointer +_nm_connection_ensure_setting(NMConnection *connection, GType gtype) +{ + NMSetting *setting; + + setting = (gpointer) nm_connection_get_setting(connection, gtype); + if (!setting) { + setting = g_object_new(gtype, NULL); + nm_connection_add_setting(connection, setting); + } + return setting; +} diff --git a/src/libnm-core-aux-intern/nm-libnm-core-utils.h b/src/libnm-core-aux-intern/nm-libnm-core-utils.h index e0a6aaf1b1..fc0bd9720f 100644 --- a/src/libnm-core-aux-intern/nm-libnm-core-utils.h +++ b/src/libnm-core-aux-intern/nm-libnm-core-utils.h @@ -166,4 +166,6 @@ gboolean nm_utils_validate_dhcp4_vendor_class_id(const char *vci, GError **error gboolean nm_settings_connection_validate_permission_user(const char *item, gssize len); +gpointer _nm_connection_ensure_setting(NMConnection *connection, GType gtype); + #endif /* __NM_LIBNM_SHARED_UTILS_H__ */