1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (C) 2014 Samsung Electronics 3*4882a593Smuzhiyun * Przemyslaw Marczak <p.marczak@samsung.com> 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun #ifndef __UUID_H__ 8*4882a593Smuzhiyun #define __UUID_H__ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* This is structure is in big-endian */ 11*4882a593Smuzhiyun struct uuid { 12*4882a593Smuzhiyun unsigned int time_low; 13*4882a593Smuzhiyun unsigned short time_mid; 14*4882a593Smuzhiyun unsigned short time_hi_and_version; 15*4882a593Smuzhiyun unsigned char clock_seq_hi_and_reserved; 16*4882a593Smuzhiyun unsigned char clock_seq_low; 17*4882a593Smuzhiyun unsigned char node[6]; 18*4882a593Smuzhiyun } __packed; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun enum { 21*4882a593Smuzhiyun UUID_STR_FORMAT_STD, 22*4882a593Smuzhiyun UUID_STR_FORMAT_GUID 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #define UUID_STR_LEN 36 26*4882a593Smuzhiyun #define UUID_BIN_LEN sizeof(struct uuid) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define UUID_VERSION_MASK 0xf000 29*4882a593Smuzhiyun #define UUID_VERSION_SHIFT 12 30*4882a593Smuzhiyun #define UUID_VERSION 0x4 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define UUID_VARIANT_MASK 0xc0 33*4882a593Smuzhiyun #define UUID_VARIANT_SHIFT 7 34*4882a593Smuzhiyun #define UUID_VARIANT 0x1 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun int uuid_str_valid(const char *uuid); 37*4882a593Smuzhiyun int uuid_str_to_bin(char *uuid_str, unsigned char *uuid_bin, int str_format); 38*4882a593Smuzhiyun void uuid_bin_to_str(unsigned char *uuid_bin, char *uuid_str, int str_format); 39*4882a593Smuzhiyun #ifdef CONFIG_PARTITION_TYPE_GUID 40*4882a593Smuzhiyun int uuid_guid_get_bin(const char *guid_str, unsigned char *guid_bin); 41*4882a593Smuzhiyun int uuid_guid_get_str(unsigned char *guid_bin, char *guid_str); 42*4882a593Smuzhiyun #endif 43*4882a593Smuzhiyun void gen_rand_uuid(unsigned char *uuid_bin); 44*4882a593Smuzhiyun void gen_rand_uuid_str(char *uuid_str, int str_format); 45*4882a593Smuzhiyun #endif 46