[ipxe-devel] [PATCH] [autoboot] Check Vendor Class ID from PROXYDHCP_SETTINGS_NAME
Anoob Soman
anoob.soman at citrix.com
Fri Feb 24 12:11:18 UTC 2017
Checking for vendor_class_id_setting == 'PXEClient' in have_pxe_menu(), might
not get us desired result, as fetch_string_setting(vendor_class_id_setting)
might return DHCP_VENDOR_CLASS_ID from DHCP_SETTINGS_NAME.
DHCP_VENDOR_CLASS_ID (Option 60) setting in DHCP_SETTINGS_NAME, might not
have 'PXEClient' as Vendor class identifier. But, DHCP_VENDOR_CLASS_ID
setting, in PROXYDHCP_SETTINGS_NAME, is expected to have 'PXEClient' as
Vendor class identifier.
Instead, check for DHCP_VENDOR_CLASS_ID only from PROXYDHCP_SETTINGS_NAME.
If there are no PROXYDHCP_SETTINGS_NAME, then
fetch_string_setting(vendor_class_id_setting), will scan through all
settings.
Signed-off-by: Anoob Soman <anoob.soman at citrix.com>
---
src/usr/autoboot.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c
index 57bf96e..d31d8cd 100644
--- a/src/usr/autoboot.c
+++ b/src/usr/autoboot.c
@@ -327,8 +327,10 @@ static int have_pxe_menu ( void ) {
= { .tag = DHCP_PXE_BOOT_MENU };
char buf[ 10 /* "PXEClient" + NUL */ ];
unsigned int pxe_discovery_control;
+ struct settings *proxy_settings;
- fetch_string_setting ( NULL, &vendor_class_id_setting,
+ proxy_settings = find_settings ( PROXYDHCP_SETTINGS_NAME );
+ fetch_string_setting ( proxy_settings, &vendor_class_id_setting,
buf, sizeof ( buf ) );
pxe_discovery_control =
fetch_uintz_setting ( NULL, &pxe_discovery_control_setting );
--
1.8.3.1
More information about the ipxe-devel
mailing list