[syslinux] EFI: PXE: "My IP is 0.0.0.0"

Patrick Masotta masottaus at yahoo.com
Thu Jun 25 01:55:27 PDT 2015


>>> 
 Looks like the patch mostly addresses the
 initial search to find the right handle for
 PXE.  I think I found the remaining source of the
 issue (the part that's generating the
 handle->Configure() messages).
 I'm trying to read through pieces of the EFI spec, gnu-efi API,
 and a few other sources.  I'm pretty
 certain you'll see that the previous
 patch/binaries are sending packets that
 _should_ be sent on NIC1 out
 NIC0.-- 
 -Gene
<<<

Hi Gene
have you seen this thread?
http://www.syslinux.org/archives/2015-April/023436.html
continued here
http://www.syslinux.org/archives/2015-May/023443.html

Cao's patch try to solve the same multi-NIC issue you are dealing with;

Your approach detect's the right NIC at 
pxe.c\net_parse_dhcp(void)
but it is also necessary to detect the right NIC again at 
main.c\efi_create_binding()
as explained here.
http://www.syslinux.org/archives/2015-May/023453.html
Cao's patch fails doing this because it relies on certain assumptions on 
handle "order" that are not correct.

I'm also trying to fix this bug but unfortunately I'm not having much time.
This is the approach I'm going to try: 
1) detecting the right NIC at pxe.c\net_parse_dhcp(void) (as you do)
2) saving its associated MAC address.
3) at main.c\efi_create_binding()    (let's consider the UDP case)
LibLocateHandle() returns the handles of the devices that publish a EFI
UDPv4 Service Binding Protocol GUID. Each device with a published EFI UDPv4 
Service Binding Protocol GUID supports the EFI UDPv4 Protocol and may be available for use.
Considering a "Device Path Protocol" is attached to device handles then
I think parsing the Path Protocol of each returned handle we can detect the 
"MAC Address Device Path" structure and get the associated MAC address.
The returned handle that has a MAC address matching the one previously saved at
pxe.c\net_parse_dhcp(void) should be the one that has to be used creating a child of
EFI UDPv4 Protocol.

I'm looking for a simpler way to do this but so far I haven't found it.

Best,
Patrick









More information about the Syslinux mailing list