uuid: Provide a GUID generator for raw buffer
In some cases we would like to generate a GUID and export it. Though it would require either casting to internal kernel types or an intermediate buffer. Instead we may achieve this by supplying a pointer to raw buffer and make a complimentary API to existing one for UUIDs. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d01cd62400
commit
48a2e88f53
|
@ -84,6 +84,7 @@ static inline bool uuid_is_null(const uuid_t *uuid)
|
|||
}
|
||||
|
||||
void generate_random_uuid(unsigned char uuid[16]);
|
||||
void generate_random_guid(unsigned char guid[16]);
|
||||
|
||||
extern void guid_gen(guid_t *u);
|
||||
extern void uuid_gen(uuid_t *u);
|
||||
|
|
10
lib/uuid.c
10
lib/uuid.c
|
@ -40,6 +40,16 @@ void generate_random_uuid(unsigned char uuid[16])
|
|||
}
|
||||
EXPORT_SYMBOL(generate_random_uuid);
|
||||
|
||||
void generate_random_guid(unsigned char guid[16])
|
||||
{
|
||||
get_random_bytes(guid, 16);
|
||||
/* Set GUID version to 4 --- truly random generation */
|
||||
guid[7] = (guid[7] & 0x0F) | 0x40;
|
||||
/* Set the GUID variant to DCE */
|
||||
guid[8] = (guid[8] & 0x3F) | 0x80;
|
||||
}
|
||||
EXPORT_SYMBOL(generate_random_guid);
|
||||
|
||||
static void __uuid_gen_common(__u8 b[16])
|
||||
{
|
||||
prandom_bytes(b, 16);
|
||||
|
|
Loading…
Reference in New Issue