mirror of
https://github.com/ipxe/ipxe
synced 2025-12-27 01:52:39 +03:00
[uuid] Abstract UUID mangling code out to a separate uuid_mangle() function
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
FILE_LICENCE ( GPL2_OR_LATER );
|
||||
|
||||
#include <stdint.h>
|
||||
#include <byteswap.h>
|
||||
|
||||
/** 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 */
|
||||
|
||||
Reference in New Issue
Block a user