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

Gene Cumm gene.cumm at gmail.com
Sun Jul 5 04:16:29 PDT 2015


On Fri, Jul 3, 2015 at 11:05 AM, Patrick Masotta <masottaus at yahoo.com> wrote:
>>>>
>  Lovely, the ServiceBindings are on a handle that resembles the NIC
>  while the Pxebc is IP-type specific.  Looks like we should try to do a
>  ServiceBinding based on Pxebc but fall back to MAC-based searching,
>  saving all 3 handles, the image handle, Pxebc handle, and ServiceBinding handle.
>  Presumably the UDP and TCP handles _should_ be the same...
>  --
>  -Gene
> <<<
>
> OK now it works.
> Everything is done within efi_create_binding(EFI_GUID *bguid, EFI_GUID *pguid)
> from image_DeviceHandle I get the right DevPath handle, I parse it and I get the MAC address.
> Next I LibLocateHandle(ByProtocol, bguid, NULL, &nr_handles, &handles)
> what gives me all the handles that include the Service Binding Protocol "bguid".
> For each of this handles I get the DevPath handle and I parse it looking for the matching MAC address.
> The bguid handle with the right MAC is used for binding.
>
> So far it works in the problematic HP 2570p but also in a Vmware 10 client with double NIC.
> I'll test a bit more and I'll upload the code.

I'm just debating what's the best algorithm here.  It would seem if
the LoadeImage's DeviceHandle provides UDPv4Sb, use it as it's
guaranteed to be the same interface.  Otherwise, we need a MNPSb
(EFI_MANAGED_NETWORK_SERVICE_BINDING) that provides UDPv4Sb across the
same interface.  Presumably it should also provide TCPv4Sb (rather
than being on a separate handle).

Additional note for reference: The HP EliteBook 2570p appears to have
been announced in May of 2012 and use Ivy Bridge-based (Intel Core-i
series third generation) processors.  Relatively speaking, this should
be a reasonably recent machine.

-- 
-Gene


More information about the Syslinux mailing list