aboutsummaryrefslogtreecommitdiff
path: root/src/include/ipxe
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2024-02-29 13:58:50 +0000
committerMichael Brown <mcb30@ipxe.org>2024-02-29 14:43:55 +0000
commitda7b2662890dfb284786f37237a6c92809eee217 (patch)
treeb162da60cf331f5db4f1389ebdef1556542858f2 /src/include/ipxe
parent182ee909313fc60875d3f1741cd4a0bb7dfd15e1 (diff)
downloadipxe-da7b2662890dfb284786f37237a6c92809eee217.zip
ipxe-da7b2662890dfb284786f37237a6c92809eee217.tar.gz
ipxe-da7b2662890dfb284786f37237a6c92809eee217.tar.bz2
[uuid] Add uuid_aton() to parse a UUID from a string
Add uuid_aton() to parse a UUID value from a string (analogous to inet_aton(), inet6_aton(), sock_aton(), etc), treating it as a 32-digit hex string with optional hyphen separators. The placement of the separators is not checked: each byte within the hex string may be separated by a hyphen, or not separated at all. Add dedicated self-tests for UUID parsing and formatting (already partially covered by the ":uuid" and ":guid" settings self-tests). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe')
-rw-r--r--src/include/ipxe/base16.h3
-rw-r--r--src/include/ipxe/errfile.h1
-rw-r--r--src/include/ipxe/uuid.h1
3 files changed, 5 insertions, 0 deletions
diff --git a/src/include/ipxe/base16.h b/src/include/ipxe/base16.h
index 8c44da1..c9e430e 100644
--- a/src/include/ipxe/base16.h
+++ b/src/include/ipxe/base16.h
@@ -12,6 +12,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <string.h>
+/** Treat separator as optional while decoding */
+#define HEX_DECODE_OPTIONAL 0x80
+
/**
* Calculate length of base16-encoded data
*
diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h
index 662f849..7cff594 100644
--- a/src/include/ipxe/errfile.h
+++ b/src/include/ipxe/errfile.h
@@ -79,6 +79,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define ERRFILE_cachedhcp ( ERRFILE_CORE | 0x00270000 )
#define ERRFILE_acpimac ( ERRFILE_CORE | 0x00280000 )
#define ERRFILE_efi_strings ( ERRFILE_CORE | 0x00290000 )
+#define ERRFILE_uuid ( ERRFILE_CORE | 0x002a0000 )
#define ERRFILE_eisa ( ERRFILE_DRIVER | 0x00000000 )
#define ERRFILE_isa ( ERRFILE_DRIVER | 0x00010000 )
diff --git a/src/include/ipxe/uuid.h b/src/include/ipxe/uuid.h
index 24c46ac..4874b73 100644
--- a/src/include/ipxe/uuid.h
+++ b/src/include/ipxe/uuid.h
@@ -48,5 +48,6 @@ static inline void uuid_mangle ( union uuid *uuid ) {
}
extern const char * uuid_ntoa ( const union uuid *uuid );
+extern int uuid_aton ( const char *string, union uuid *uuid );
#endif /* _IPXE_UUID_H */