[U-Boot] [PATCH v4 4/6] new commands: uuid and guid - generate random unique identifier

Przemyslaw Marczak p.marczak at samsung.com
Wed Mar 26 13:01:02 CET 2014


Hello Stephen,

On 03/25/2014 08:37 PM, Stephen Warren wrote:
> On 03/19/2014 11:58 AM, Przemyslaw Marczak wrote:
>> Those commands basis on implementation of random UUID generator version 4
>> which is described in RFC4122. The same algorithm is used for generation
>> both ids but string representation is different as below.
>>
>> char:  0        9    14   19   24         36
>>         xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
>> UUID:     be     be   be   be       be
>> GUID:     le     le   le   be       be
>>
>> Commands usage:
>> - uuid <varname(optional)>
>> - guid <varname(optional)>
>
> Square brackets are usually used to indicate optional parameters:
>
> - uuid [<varname>]
> - guid [<varname>]
>

Ok, I change this.

>> diff --git a/include/common.h b/include/common.h
>
>>   #if defined(CONFIG_RANDOM_MACADDR) || \
>>   	defined(CONFIG_BOOTP_RANDOM_DELAY) || \
>>   	defined(CONFIG_CMD_LINK_LOCAL) || \
>> -	defined(CONFIG_RANDOM_UUID)
>> +	defined(CONFIG_RANDOM_UUID) || \
>> +	defined(CONFIG_CMD_UUID)
>
> Why not require that if you want to use CONFIG_CMD_UUID, you must define
> CONFIG_RANDOM_UUID too? You can even make that automatic in
> include/config_fallbacks.h which already does similar things:
>
> #if defined(CONFIG_CMD_FAT) && !defined(CONFIG_FS_FAT)
> #define CONFIG_FS_FAT
> #endif
>
> That way, you won't need to touch lib/Makefile in this patch either, or
> modify the ifdef that wraps gen_rand_uuid().
>

I change this part of code in one of my other patch set which can be 
found here: http://patchwork.ozlabs.org/patch/332499/
After apply those changes then I add some automation here.

>> diff --git a/lib/uuid.c b/lib/uuid.c
>
>
>> +#ifdef CONFIG_CMD_UUID
>> +int do_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>> +{
>> +	char uuid[UUID_STR_LEN + 1];
>> +	uuid_str_t str_format;
>> +
>> +	if (!strcmp(argv[0], "uuid"))
>> +		str_format = UUID_STR_FORMAT_STD;
>> +	else
>> +		str_format = UUID_STR_FORMAT_GUID;
>> +
>> +	if (argc == 1) {
>> +		gen_rand_uuid_str(uuid, str_format);
>> +		printf("%s\n", uuid);
>> +	} else if (argc == 2) {
>> +		gen_rand_uuid_str(uuid, str_format);
>> +		setenv(argv[1], uuid);
>> +	} else {
>> +		return CMD_RET_USAGE;
>> +	}
>
> This duplicates some code; the call to gen_rand_uuid(). I think it would
> be better as:
>
> if (argc < 2)
> 	return CMD_RET_USAGE;
> gen_rand_uuid_str(uuid, str_format);
> if (argc == 1)
> 	printf("%s\n", uuid);
> else
> 	setenv(argv[1], uuid);
>

Yes, this is better, but the first condition should be as:
if ((argc != 1) || (argc != 2))

>> +U_BOOT_CMD(uuid, CONFIG_SYS_MAXARGS, 1, do_uuid,
>> +	"UUID - generate Universally Unique Identifier version 4",
>
> Would it be batter to say "a random ..." rather than "... version 4"?
> I'm not sure if the details of the version matter so long as its a valid
> UUID, and certainly the fact the generated UUID is random is likely more
> interesting.
>
>> +	"<varname(optional)>\n"
>
> 	"[<varname>]\n"
>
>
Ok, I also apply those two commands above.

Thanks
-- 
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com


More information about the U-Boot mailing list