aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2022-01-04 13:31:15 +0000
committerMichael Brown <mcb30@ipxe.org>2022-01-04 14:03:12 +0000
commitf43c2fd69749bb9a44f2a3ab61b6735938432b52 (patch)
treeb5afddef6c6f701312dda21aa4732e9c0253d587 /src/tests
parent9062544f6a0c69c249b90d21a08d05518aafc2ec (diff)
downloadipxe-f43c2fd69749bb9a44f2a3ab61b6735938432b52.zip
ipxe-f43c2fd69749bb9a44f2a3ab61b6735938432b52.tar.gz
ipxe-f43c2fd69749bb9a44f2a3ab61b6735938432b52.tar.bz2
[settings] Support formatting UUIDs as little-endian GUIDsguid
The RFC4122 specification defines UUIDs as being in network byte order, but an unfortunately significant amount of (mostly Microsoft) software treats them as having the first three fields in little-endian byte order. In an ideal world, any server-side software that compares UUIDs for equality would perform an endian-insensitive comparison (analogous to comparing strings for equality using a case-insensitive comparison), and would therefore not care about byte order differences. Define a setting type name ":guid" to allow a UUID setting to be formatted in little-endian order, to simplify interoperability with server-side software that expects such a formatting. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/settings_test.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/tests/settings_test.c b/src/tests/settings_test.c
index 828901b..5da7eb0 100644
--- a/src/tests/settings_test.c
+++ b/src/tests/settings_test.c
@@ -250,6 +250,12 @@ static struct setting test_uuid_setting = {
.type = &setting_type_uuid,
};
+/** Test GUID setting type */
+static struct setting test_guid_setting = {
+ .name = "test_guid",
+ .type = &setting_type_guid,
+};
+
/** Test PCI bus:dev.fn setting type */
static struct setting test_busdevfn_setting = {
.name = "test_busdevfn",
@@ -419,6 +425,10 @@ static void settings_test_exec ( void ) {
RAW ( 0x1a, 0x6a, 0x74, 0x9d, 0x0e, 0xda, 0x46, 0x1a,0xa8,
0x7a, 0x7c, 0xfe, 0x4f, 0xca, 0x4a, 0x57 ),
"1a6a749d-0eda-461a-a87a-7cfe4fca4a57" );
+ fetchf_ok ( &test_settings, &test_guid_setting,
+ RAW ( 0x1a, 0x6a, 0x74, 0x9d, 0x0e, 0xda, 0x46, 0x1a,0xa8,
+ 0x7a, 0x7c, 0xfe, 0x4f, 0xca, 0x4a, 0x57 ),
+ "9d746a1a-da0e-1a46-a87a-7cfe4fca4a57" );
/* "busdevfn" setting type (no store capability) */
fetchf_ok ( &test_settings, &test_busdevfn_setting,