summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-06-15 12:36:58 +0200
committerThomas Haller <thaller@redhat.com>2021-06-17 17:48:16 +0200
commitcea52c7cbdf4c71311e9a680f6ccf8c1c6ddce9d (patch)
tree7493fe585bbc459d6cb729f0f780c5705fbe0ece
parent92daaff7d1ee0655a5f62d5d0d57aee44121bbab (diff)
libnm: add nm_connection_serialization_options_equal() helper
-rw-r--r--src/libnm-core-impl/nm-connection.c35
-rw-r--r--src/libnm-core-intern/nm-core-internal.h5
2 files changed, 39 insertions, 1 deletions
diff --git a/src/libnm-core-impl/nm-connection.c b/src/libnm-core-impl/nm-connection.c
index e212894785..ed864db8dc 100644
--- a/src/libnm-core-impl/nm-connection.c
+++ b/src/libnm-core-impl/nm-connection.c
@@ -2527,6 +2527,38 @@ _nm_connection_find_secret(NMConnection * self,
/*****************************************************************************/
+static const NMConnectionSerializationOptions _connection_serialization_options_empty = {
+ .timestamp =
+ {
+ .has = FALSE,
+ .val = 0,
+ },
+ .seen_bssids = NULL,
+};
+
+gboolean
+nm_connection_serialization_options_equal(const NMConnectionSerializationOptions *a,
+ const NMConnectionSerializationOptions *b)
+{
+ if (!a)
+ a = &_connection_serialization_options_empty;
+ if (!b)
+ b = &_connection_serialization_options_empty;
+
+ if (a == b)
+ return TRUE;
+
+ if (a->timestamp.has != b->timestamp.has)
+ return FALSE;
+ if (a->timestamp.has && a->timestamp.val != b->timestamp.val)
+ return FALSE;
+ if (!nm_utils_strv_equal(a->seen_bssids ?: NM_STRV_EMPTY_CC(),
+ b->seen_bssids ?: NM_STRV_EMPTY_CC()))
+ return FALSE;
+
+ return TRUE;
+}
+
/**
* nm_connection_to_dbus:
* @connection: the #NMConnection
@@ -2559,6 +2591,9 @@ nm_connection_to_dbus_full(NMConnection * connection,
priv = NM_CONNECTION_GET_PRIVATE(connection);
+ if (!options)
+ options = &_connection_serialization_options_empty;
+
for (i = 0; i < (int) _NM_META_SETTING_TYPE_NUM; i++) {
NMSetting *setting = priv->settings[nm_meta_setting_types_by_priority[i]];
GVariant * setting_dict;
diff --git a/src/libnm-core-intern/nm-core-internal.h b/src/libnm-core-intern/nm-core-internal.h
index 9f2eadf4ab..5ea68ea3bd 100644
--- a/src/libnm-core-intern/nm-core-internal.h
+++ b/src/libnm-core-intern/nm-core-internal.h
@@ -207,10 +207,13 @@ typedef struct {
bool has;
} timestamp;
- const char **seen_bssids;
+ const char *const *seen_bssids;
} NMConnectionSerializationOptions;
+gboolean nm_connection_serialization_options_equal(const NMConnectionSerializationOptions *a,
+ const NMConnectionSerializationOptions *b);
+
GVariant *nm_connection_to_dbus_full(NMConnection * connection,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options);