Commit | Line | Data |
---|---|---|
ffe60014 | 1 | /* |
c70636a7 | 2 | * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
ffe60014 | 3 | * |
ab5be9fa | 4 | * SPDX-License-Identifier: MIT |
ffe60014 | 5 | * |
ffe60014 DG |
6 | */ |
7 | ||
8 | #ifndef LTTNG_UUID_H | |
9 | #define LTTNG_UUID_H | |
10 | ||
bef4c7a1 | 11 | #include <common/macros.h> |
8cfbd4f4 | 12 | #include <stdbool.h> |
c70636a7 MJ |
13 | #include <stdint.h> |
14 | #include <inttypes.h> | |
bef4c7a1 | 15 | |
ffe60014 DG |
16 | /* |
17 | * Includes final \0. | |
18 | */ | |
c70636a7 MJ |
19 | #define LTTNG_UUID_STR_LEN 37 |
20 | #define LTTNG_UUID_LEN 16 | |
21 | #define LTTNG_UUID_VER 4 | |
ffe60014 | 22 | |
c70636a7 MJ |
23 | #define LTTNG_UUID_FMT \ |
24 | "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "-%02" SCNx8 \ | |
25 | "%02" SCNx8 "-%02" SCNx8 "%02" SCNx8 "-%02" SCNx8 "%02" SCNx8 \ | |
26 | "-%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 \ | |
27 | "%02" SCNx8 | |
52a0e931 | 28 | |
c70636a7 MJ |
29 | #define LTTNG_UUID_FMT_VALUES(uuid) \ |
30 | (uuid)[0], (uuid)[1], (uuid)[2], (uuid)[3], (uuid)[4], (uuid)[5], \ | |
31 | (uuid)[6], (uuid)[7], (uuid)[8], (uuid)[9], (uuid)[10], (uuid)[11], \ | |
32 | (uuid)[12], (uuid)[13], (uuid)[14], (uuid)[15] | |
ffe60014 | 33 | |
c70636a7 MJ |
34 | #define LTTNG_UUID_SCAN_VALUES(uuid) \ |
35 | &(uuid)[0], &(uuid)[1], &(uuid)[2], &(uuid)[3], &(uuid)[4], &(uuid)[5], \ | |
36 | &(uuid)[6], &(uuid)[7], &(uuid)[8], &(uuid)[9], &(uuid)[10], &(uuid)[11], \ | |
37 | &(uuid)[12], &(uuid)[13], &(uuid)[14], &(uuid)[15] | |
ffe60014 | 38 | |
c70636a7 | 39 | typedef uint8_t lttng_uuid[LTTNG_UUID_LEN]; |
ffe60014 | 40 | |
c70636a7 MJ |
41 | LTTNG_HIDDEN |
42 | int lttng_uuid_from_str(const char *str_in, lttng_uuid uuid_out); | |
ffe60014 | 43 | |
bef4c7a1 JG |
44 | /* |
45 | * Convert a UUID to a human-readable, NULL-terminated, string of the form | |
46 | * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. | |
47 | * | |
c70636a7 | 48 | * Assumes uuid_str is at least LTTNG_UUID_STR_LEN byte long. |
bef4c7a1 JG |
49 | */ |
50 | LTTNG_HIDDEN | |
52a0e931 | 51 | void lttng_uuid_to_str(const lttng_uuid uuid, char *uuid_str); |
bef4c7a1 | 52 | |
8cfbd4f4 JG |
53 | LTTNG_HIDDEN |
54 | bool lttng_uuid_is_equal(const lttng_uuid a, const lttng_uuid b); | |
55 | ||
4c97f6bd JG |
56 | LTTNG_HIDDEN |
57 | bool lttng_uuid_is_nil(const lttng_uuid uuid); | |
58 | ||
eafef9eb JG |
59 | LTTNG_HIDDEN |
60 | void lttng_uuid_copy(lttng_uuid dst, const lttng_uuid src); | |
61 | ||
c70636a7 MJ |
62 | /* |
63 | * Generate a random UUID according to RFC4122, section 4.4. | |
64 | */ | |
65 | LTTNG_HIDDEN | |
66 | int lttng_uuid_generate(lttng_uuid uuid_out); | |
67 | ||
ffe60014 | 68 | #endif /* LTTNG_UUID_H */ |