Re: [edk2] running the StdLib socket test apps in OVMF [was: ovmf pxeboot]

Subject: Re: [edk2] running the StdLib socket test apps in OVMF [was: ovmf pxeboot]

From: Laszlo Ersek <>

To: Duane Voth <>

Date: 2013-04-25 03:11:10

Hi Duane,

On 04/24/13 17:34, Duane Voth wrote:
> Gentlemen, pardon the intrusion but I'm approaching a deadline and need
> to attract a little attention to posts with the subject: [edk2] OVMF
> networking for real this time
> I noticed the two of you discussing this a few months ago:
> On Thu, Jan 17, 2013 at 10:53 AM, Laszlo Ersek  > wrote:
>     On 01/17/13 16:00, Gerd Hoffmann wrote:
>     >
>     > I'm running ovmf with networking enabled and ipxe efi roms.  Network
>     > driver seems to work properly.  In efi shell I can ifconfig the
>     > interface with a static ip address and ping the default gateway.
>     I tried something similar, but didn't get this far.
> I also am using an ipxe based PXE boot payload in OVMF with -D
> NETWORK_ENABLE.  "ifconfig -s eth0 dhcp" appears to work but
> suspiciously returns immediately with the PXE boot IP with *no* network
> traffic for the dhcp handshake.  (I would be thrilled if the dhcp lease
> negotiation during the PXE boot was carried forward to uEFI, but doubt
> that this is actually what is happening!)
> In any case I canNOT ping the gateway after ifconfig.  The error is:
> "There is no route to the destination '' from the source
> '' was found."
> I don't recall ever seeing routing table configs in uEFI - could someone
> explain how the uEFI routing tables are setup?
> GetServByPort.efi btw, works fine.

I'm not ignoring you in the least, I just can't help. The most that I
got out of OVMF networking I documented in this exact thread. As usual I
have no better idea than to read the relevant edk2 docs, narrow down the
affected source (eg. starting with the ifconfig utility), and
carpet-bomb it with DEBUGs.

Wrt. identifying the source code, there's the question of which shell
you're using. For Shell2 you need a -D option at build time, and in that
case I *think* your ifconfig would come from

If you use Shell1 (which I think is the default), then the build process
embeds the Shell1 binary present in the edk2 tree into the firmware. The
source is available (see "EdkShellBinPkg/ReadMe.txt") from a separate
repo. The ifconfig utility is implemented in "IfConfig/IfConfig.c" in
this case.

Anyway both seem to call mHiiConfigRouting->RouteConfig() at some point.
The protocol providing this function seems to be
("gEfiHiiConfigRoutingProtocolGuid") that starts with 0x587e72d7.

In my OVMF build that protocol is installed by InitializeHiiDatabase()
in MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c. The
protocol implementation seems to consist of


See "30.3 EFI HII Configuration Routing Protocol" in the UEFI spec, and
HiiConfigRoutingRouteConfig() in

Just an idea anyway, no idea how much of the routing configuration
happens in the proprietary "Intel3.5/EFIX64/E3507X2.EFI" driver.


Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt!
edk2-devel mailing list