iPXE
Data Structures | Functions
uuid.h File Reference

Universally unique IDs. More...

#include <stdint.h>
#include <byteswap.h>

Go to the source code of this file.

Data Structures

union  uuid
 A universally unique ID. More...

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
static void uuid_mangle (union uuid *uuid)
 Change UUID endianness.
const char * uuid_ntoa (const union uuid *uuid)
 Convert UUID to printable string.

Detailed Description

Universally unique IDs.

Definition in file uuid.h.


Function Documentation

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )
static void uuid_mangle ( union uuid uuid) [inline, static]

Change UUID endianness.

Parameters:
uuidUUID

RFC4122 defines UUIDs as being encoded in network byte order, but leaves some wriggle room for "explicit application or presentation protocol specification to the contrary". PXE, EFI and SMBIOS (versions 2.6 and above) treat the first three fields as being little-endian.

Definition at line 43 of file uuid.h.

References uuid::a, uuid::b, uuid::c, and uuid::canonical.

Referenced by dhcp_create_request(), efi_guid_ntoa(), smbios_fetch(), and vmbus_probe_channels().

                                                    {

        __bswap_32s ( &uuid->canonical.a );
        __bswap_16s ( &uuid->canonical.b );
        __bswap_16s ( &uuid->canonical.c );
}
const char* uuid_ntoa ( const union uuid uuid)

Convert UUID to printable string.

Parameters:
uuidUUID
Return values:
stringUUID in canonical form

Definition at line 43 of file uuid.c.

References uuid::a, uuid::b, be16_to_cpu, be32_to_cpu, uuid::c, uuid::canonical, uuid::d, uuid::e, and sprintf.

Referenced by efi_guid_ntoa(), format_uuid_setting(), iscsi_fetch_settings(), peerdisc_create(), vmbus_probe_channels(), and vmbus_reset_channels().

                                                  {
        static char buf[37]; /* "00000000-0000-0000-0000-000000000000" */

        sprintf ( buf, "%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x",
                  be32_to_cpu ( uuid->canonical.a ),
                  be16_to_cpu ( uuid->canonical.b ),
                  be16_to_cpu ( uuid->canonical.c ),
                  be16_to_cpu ( uuid->canonical.d ),
                  uuid->canonical.e[0], uuid->canonical.e[1],
                  uuid->canonical.e[2], uuid->canonical.e[3],
                  uuid->canonical.e[4], uuid->canonical.e[5] );
        return buf;
}