diff options
author | Thomas Haller <thaller@redhat.com> | 2021-06-15 12:36:58 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-06-17 17:48:16 +0200 |
commit | cea52c7cbdf4c71311e9a680f6ccf8c1c6ddce9d (patch) | |
tree | 7493fe585bbc459d6cb729f0f780c5705fbe0ece | |
parent | 92daaff7d1ee0655a5f62d5d0d57aee44121bbab (diff) |
libnm: add nm_connection_serialization_options_equal() helper
-rw-r--r-- | src/libnm-core-impl/nm-connection.c | 35 | ||||
-rw-r--r-- | src/libnm-core-intern/nm-core-internal.h | 5 |
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); |