mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Generate RFC4122 compliant UUIDs
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@sde.cz>
This commit is contained in:
parent
1bd955ed60
commit
396c4d34f8
@ -114,6 +114,25 @@ virUUIDGenerate(unsigned char *uuid)
|
|||||||
err = virUUIDGeneratePseudoRandomBytes(uuid, VIR_UUID_BUFLEN);
|
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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user