summaryrefslogtreecommitdiffstats
path: root/src/libnetdata/uuid/uuid.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/libnetdata/uuid/uuid.c (renamed from libnetdata/uuid/uuid.c)20
1 files changed, 20 insertions, 0 deletions
diff --git a/libnetdata/uuid/uuid.c b/src/libnetdata/uuid/uuid.c
index 55b66db9b..f062d0bc5 100644
--- a/libnetdata/uuid/uuid.c
+++ b/src/libnetdata/uuid/uuid.c
@@ -2,6 +2,26 @@
#include "../libnetdata.h"
+
+UUID UUID_generate_from_hash(const void *payload, size_t payload_len) {
+ assert(sizeof(XXH128_hash_t) == sizeof(UUID));
+
+ UUID uuid;
+ XXH128_hash_t *xxh3_128 = (XXH128_hash_t *)&uuid;
+
+ // Hash the payload using XXH128
+ // Assume xxh128_hash_function is your function to generate XXH128 hash
+ *xxh3_128 = XXH3_128bits(payload, payload_len);
+
+ // Set the UUID version (here, setting it to 4)
+ uuid.uuid[6] = (uuid.uuid[6] & 0x0F) | 0x40; // Version 4
+
+ // Set the UUID variant (standard variant for UUID)
+ uuid.uuid[8] = (uuid.uuid[8] & 0x3F) | 0x80; // Variant is 10xxxxxx
+
+ return uuid;
+}
+
void uuid_unparse_lower_compact(const uuid_t uuid, char *out) {
static const char *hex_chars = "0123456789abcdef";
for (int i = 0; i < 16; i++) {