[syslinux] [PATCH] Updated udp.c to use real client ip and subnetmask values if on local subnet
Patrick Masotta
masottaus at yahoo.com
Sat Jul 18 10:01:51 PDT 2015
>>>>
The IP4 config data struct contents from core_udp_open
is included below. When UseDefaultAddress is TRUE, it passes
0.0.0.0 for StationAddress and NetMask. core_udp_open calls
core_udp_configure which calls efiip4configure (BIOS). BIOS validates SA and NM but
special-cases both null to allow for proxy. BIOS tries to find the GUID to
configure but fails and returns EFI_UNSUPPORTED error, EFIERR(3).
Then core_udp_sendto attempts to send the packet even
though it was never configured. It does not check for problems, instead
relying on the core_udp_recv to timeout. It retries based on
the timeout table but before completing all of the retries, the watchdog
timer triggers a reset.
So the net is that no udp packets hit the wire once
syslinux starts executing. I was able to circumvent this by setting UseDefaultAddress
to FALSE and populating SA and NM to correct values. Is
there a better/more global approach if the SA/NM values are NULL?
The other question I have is how should we handle
a fail from the configure? Thoughts?
<<<<
Then this means that when you use a "DHCP relay" your particular firmware is able to retrieve
syslinux.efi but when creating an UDPv4 child when using UseDefaultAddress=1
the interface does not have valid IP address and mask (both NULL)
1) Are you sure you are really creating a child corresponding to the NIC that booted syslinux.efi??
this is specially important if you have a multi-NIC client.
2) how about your client firmware? is it updated? does this happen with several clients?
Best,
Patrick
More information about the Syslinux
mailing list