diff --git a/tools/libxl/libxl_uuid.c b/tools/libxl/libxl_uuid.c index 7d4a032..996c08d 100644 --- a/tools/libxl/libxl_uuid.c +++ b/tools/libxl/libxl_uuid.c @@ -72,9 +72,9 @@ void libxl_uuid_generate(libxl_uuid *uuid) { uint32_t status; - BUILD_BUG_ON(sizeof(libxl_uuid) != sizeof(uuid_t)); uuid_create(&uuid->uuid, &status); assert(status == uuid_s_ok); + uuid_enc_be(uuid->uuid_raw, &uuid->uuid); } #ifdef __FreeBSD__ @@ -85,6 +85,7 @@ int libxl_uuid_from_string(libxl_uuid *uuid, const char *in) uuid_from_string(in, &uuid->uuid, &status); if (status != uuid_s_ok) return -1; + uuid_enc_be(uuid->uuid_raw, &uuid->uuid); return 0; } #else diff --git a/tools/libxl/libxl_uuid.h b/tools/libxl/libxl_uuid.h index c5041c7..55e8d61 100644 --- a/tools/libxl/libxl_uuid.h +++ b/tools/libxl/libxl_uuid.h @@ -42,12 +42,12 @@ typedef struct { #include #include -typedef union { +typedef struct { uuid_t uuid; uint8_t uuid_raw[16]; } libxl_uuid; -#define LIBXL_UUID_BYTES(arg) LIBXL__UUID_BYTES(arg.uuid_raw) +#define LIBXL_UUID_BYTES(arg) LIBXL__UUID_BYTES(libxl_uuid_bytearray_const(&arg)) #else