From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leif Lindholm Date: Tue, 6 Aug 2019 09:44:14 +0100 Subject: [U-Boot] EFI_PXE_BASE_CODE_PROTOCOL In-Reply-To: <3b958976-1801-c3cc-196d-606293a06938@gmx.de> References: <20190131142525.GA37117@nyx.local> <22d7dfc2-6013-00e4-b477-0c7d4151dceb@suse.de> <20190131145423.GA37343@nyx.local> <12c99515-030e-3cd6-1eca-cb839d47b00b@gmx.de> <20190410092035.GA96616@thor.local> <20190410092453.GA96737@thor.local> <20190802192639.GA4631@nyx.fritz.box> <3b958976-1801-c3cc-196d-606293a06938@gmx.de> Message-ID: <20190806084414.GD25813@bivouac.eciton.net> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de +Peter Jones (sorry Peter) On Tue, Aug 06, 2019 at 08:34:58AM +0200, Heinrich Schuchardt wrote: > iPXE uses the EFI simple network protocol to execute DHCP. OK. > Can GRUB already do the same when the EFI_PXE_BASE_CODE_PROTOCOL is not > present? Yes. As of very recently (proper* DHCP support was only merged in March 2019, so is included in 2.04 release, prior to that it technically performed BOOTP). SNP means you do your own networking - it gives you access to the raw (usually) Ethernet packets. * proper as in "it now conceptually does the correct thing", not as in "I have extensively tested this". > 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: Well, it would not surprise me if this function predates GRUB's UEFI support. It actually gets even slightly messier when you look at what GRUB does when netbooting itself; it starts out using MNP (and hence IP addresses assigned by UEFI) to load its modules, switching to SNP once it loads efinet.mod. > 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()? Possibly. I've cc:d Peter since he's the last person I know who took a proper look at this. Certainly, it would be useful if you could raise a bug on Savannah on the ipv4 assumption. Best Regards, Leif