Even though
http://libvirt.org/formatdomain.html#elementsMetadata
states that it requires RFC4122 compliance UUIDs that are generated
by virUUIDGenerate() are not. Following patch modifies generated
UUIDs to conform to rules described in RFC.
Signed-off-by: Milos Vyletel <milos.vyletel(a)sde.cz>
---
src/util/viruuid.c | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/src/util/viruuid.c b/src/util/viruuid.c
index 7250543..8f82187 100644
--- a/src/util/viruuid.c
+++ b/src/util/viruuid.c
@@ -114,6 +114,25 @@ virUUIDGenerate(unsigned char *uuid)
err = virUUIDGeneratePseudoRandomBytes(uuid, VIR_UUID_BUFLEN);
}
+ /*
+ * Make UUID RFC 4122 compliant. Following form will be used:
+ *
+ * xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx
+ *
+ * where
+ * A is version defined in 4.1.3 of RFC
+ * Msb0 Msb1 Msb2 Msb3 Version Description
+ * 0 1 0 0 4 The randomly or pseudo-
+ * randomly generated version
+ * specified in this document.
+ *
+ * B is variant defined in 4.1.1 of RFC
+ * Msb0 Msb1 Msb2 Description
+ * 1 0 x The variant specified in this document.
+ */
+ uuid[6] = (uuid[6] & 0x0F) | (4 << 4);
+ uuid[8] = (uuid[8] & 0x3F) | (2 << 6);
+
return err;
}
--
1.7.1