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 | ||
c9e313bc | 11 | #include <common/macros.hpp> |
8cfbd4f4 | 12 | #include <stdbool.h> |
c70636a7 MJ |
13 | #include <stdint.h> |
14 | #include <inttypes.h> | |
328c2fe7 | 15 | #include <array> |
bef4c7a1 | 16 | |
ffe60014 DG |
17 | /* |
18 | * Includes final \0. | |
19 | */ | |
c70636a7 MJ |
20 | #define LTTNG_UUID_STR_LEN 37 |
21 | #define LTTNG_UUID_LEN 16 | |
22 | #define LTTNG_UUID_VER 4 | |
ffe60014 | 23 | |
c70636a7 MJ |
24 | #define LTTNG_UUID_FMT \ |
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 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 \ | |
28 | "%02" SCNx8 | |
52a0e931 | 29 | |
c70636a7 MJ |
30 | #define LTTNG_UUID_FMT_VALUES(uuid) \ |
31 | (uuid)[0], (uuid)[1], (uuid)[2], (uuid)[3], (uuid)[4], (uuid)[5], \ | |
32 | (uuid)[6], (uuid)[7], (uuid)[8], (uuid)[9], (uuid)[10], (uuid)[11], \ | |
33 | (uuid)[12], (uuid)[13], (uuid)[14], (uuid)[15] | |
ffe60014 | 34 | |
c70636a7 MJ |
35 | #define LTTNG_UUID_SCAN_VALUES(uuid) \ |
36 | &(uuid)[0], &(uuid)[1], &(uuid)[2], &(uuid)[3], &(uuid)[4], &(uuid)[5], \ | |
37 | &(uuid)[6], &(uuid)[7], &(uuid)[8], &(uuid)[9], &(uuid)[10], &(uuid)[11], \ | |
38 | &(uuid)[12], &(uuid)[13], &(uuid)[14], &(uuid)[15] | |
ffe60014 | 39 | |
328c2fe7 | 40 | using lttng_uuid = std::array<uint8_t, LTTNG_UUID_LEN>; |
ffe60014 | 41 | |
328c2fe7 | 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 | 49 | */ |
328c2fe7 | 50 | void lttng_uuid_to_str(const lttng_uuid& uuid, char *uuid_str); |
bef4c7a1 | 51 | |
328c2fe7 | 52 | bool lttng_uuid_is_equal(const lttng_uuid& a, const lttng_uuid& b); |
8cfbd4f4 | 53 | |
328c2fe7 | 54 | bool lttng_uuid_is_nil(const lttng_uuid& uuid); |
eafef9eb | 55 | |
c70636a7 MJ |
56 | /* |
57 | * Generate a random UUID according to RFC4122, section 4.4. | |
58 | */ | |
328c2fe7 | 59 | int lttng_uuid_generate(lttng_uuid& uuid_out); |
c70636a7 | 60 | |
ffe60014 | 61 | #endif /* LTTNG_UUID_H */ |