From d938e50136b0bd7dbc56b250cd4363646e59c9fc Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 20 Mar 2013 15:06:40 +0000 Subject: [uuid] Abstract UUID mangling code out to a separate uuid_mangle() function Signed-off-by: Michael Brown --- src/include/ipxe/uuid.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/include/ipxe') diff --git a/src/include/ipxe/uuid.h b/src/include/ipxe/uuid.h index 5de56b94e..ad515d0cb 100644 --- a/src/include/ipxe/uuid.h +++ b/src/include/ipxe/uuid.h @@ -9,6 +9,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include +#include /** A universally unique ID */ union uuid { @@ -28,6 +29,24 @@ union uuid { uint8_t raw[16]; }; +/** + * Change UUID endianness + * + * @v uuid UUID + * + * 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. + */ +static inline void uuid_mangle ( union uuid *uuid ) { + + __bswap_32s ( &uuid->canonical.a ); + __bswap_16s ( &uuid->canonical.b ); + __bswap_16s ( &uuid->canonical.c ); +} + extern char * uuid_ntoa ( const union uuid *uuid ); #endif /* _IPXE_UUID_H */ -- cgit v1.2.3-55-g7522