diff --git a/src/libnm-glib-aux/nm-hash-utils.c b/src/libnm-glib-aux/nm-hash-utils.c index 973422a198..7f25e9ac3e 100644 --- a/src/libnm-glib-aux/nm-hash-utils.c +++ b/src/libnm-glib-aux/nm-hash-utils.c @@ -190,6 +190,27 @@ nm_pint_equal(gconstpointer a, gconstpointer b) return s1 == s2 || (s1 && s2 && *s1 == *s2); } +/* GHashFunc for GHashTable keys that are a pointer to a guint64 */ +guint +nm_puint64_hash(gconstpointer p) +{ + const guint64 *s = p; + + if (!s) + return nm_hash_static(298377461u); + return nm_hash_val(1208815757u, *s); +} + +/* GEqualFunc for GHashTable keys that are a pointer to a guint64 */ +gboolean +nm_puint64_equal(gconstpointer a, gconstpointer b) +{ + const guint64 *s1 = a; + const guint64 *s2 = a; + + return s1 == s2 || (s1 && s2 && *s1 == *s2); +} + guint nm_pdirect_hash(gconstpointer p) { diff --git a/src/libnm-glib-aux/nm-hash-utils.h b/src/libnm-glib-aux/nm-hash-utils.h index 6d7cc271bc..34690eabc5 100644 --- a/src/libnm-glib-aux/nm-hash-utils.h +++ b/src/libnm-glib-aux/nm-hash-utils.h @@ -266,6 +266,9 @@ gboolean nm_pstr_equal(gconstpointer a, gconstpointer b); guint nm_pint_hash(gconstpointer p); gboolean nm_pint_equal(gconstpointer a, gconstpointer b); +guint nm_puint64_hash(gconstpointer p); +gboolean nm_puint64_equal(gconstpointer a, gconstpointer b); + G_STATIC_ASSERT(sizeof(int) == sizeof(guint32)); #define nm_puint32_hash nm_pint_hash #define nm_puint32_equal nm_pint_equal