From 30a95d4d39214084f435acbc1534cb111dda3095 Mon Sep 17 00:00:00 2001 From: sfu5 Date: Thu, 9 May 2013 05:28:27 +0000 Subject: Skip PXE prompt/menu/discover if PXE_DISCOVERY_CONTROL tag bit 3 set. Signed-off-by: Laszlo Ersek Reviewed-by: Ye Ting Reviewed-by: Fu Siyuan git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14332 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c') diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c b/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c index 540adee311..5bbefcee9d 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c @@ -98,6 +98,17 @@ PxeBcSelectBootPrompt ( ASSERT (!Mode->UsingIpv6); VendorOpt = &Cache->Dhcp4.VendorOpt; + // + // According to the PXE specification 2.1, Table 2-1 PXE DHCP Options, + // we must not consider a boot prompt or boot menu if all of the following hold: + // - the PXE_DISCOVERY_CONTROL tag(6) is present inside the Vendor Options(43), and has bit 3 set + // - a boot file name has been presented in the initial DHCP or ProxyDHCP offer packet. + // + if (IS_DISABLE_PROMPT_MENU (VendorOpt->DiscoverCtrl) && + Cache->Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] != NULL) { + return EFI_ABORTED; + } + if (!IS_VALID_BOOT_PROMPT (VendorOpt->BitMap)) { return EFI_TIMEOUT; } -- cgit v1.2.3