|
From: | Heinrich Schuchardt |
Subject: | Re: EFI_PXE_BASE_CODE_PROTOCOL |
Date: | Tue, 6 Aug 2019 08:34:58 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 |
Hello Leif, iPXE uses the EFI simple network protocol to execute DHCP. Can GRUB already do the same when the EFI_PXE_BASE_CODE_PROTOCOL is not present? What I do not understand about GRUB's grub_net_configure_by_dhcp_ack() is that it silently assumes IPv4 being used without even checking. This contradicts the definition of the PXE base code protocol in the UEFI standard: EFI_PXE_BASE_CODE_PACKET DhcpAck is a union: typedef union { UINT8 Raw[1472]; EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4; EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6; } EFI_PXE_BASE_CODE_PACKET; Should the check be done in grub_efi_net_config_real()? Best regards Heinrich On 8/5/19 10:08 PM, Heinrich Schuchardt wrote:
Hello Alex, lib/efi_loader/efi_net.c contains pieces of the EFI_PXE_BASE_CODE_PROTOCOL. But it is incompletely implemented: all function pointers are NULL and so immediate failure is expected when using the protocol. Do you remember why you introduced this protocol into U-Boot? It is not part of the EBBR specification. It is not needed for booting via GRUB from disk but seems to be used to configure the network device in GRUB (grub_net_configure_by_dhcp_ack() seems only to consume pxe_mode->dhcp_ack). If the UEFI subsystem is initialized before using the 'dhcp' command the DHCP results are ignored. @Patrick: What do you use the protocol for? GRUB? Best regards Heinrich
[Prev in Thread] | Current Thread | [Next in Thread] |