From: Michael Brown Date: Thu, 26 Feb 2026 13:11:57 +0000 (+0000) Subject: [cachedhcp] Automatically open network device matching cached DHCPACK X-Git-Tag: v2.0.0~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=efe8126;p=thirdparty%2Fipxe.git [cachedhcp] Automatically open network device matching cached DHCPACK It is unintuitive to have to include an "ifopen" at the start of an autoexec.ipxe script. Provide a mechanism for upper-layer drivers to mark a network device to be opened automatically upon registration, and do so for the device to which the cached DHCPACK is applied. Signed-off-by: Michael Brown --- diff --git a/src/core/cachedhcp.c b/src/core/cachedhcp.c index 3f6564efd..21cb382ad 100644 --- a/src/core/cachedhcp.c +++ b/src/core/cachedhcp.c @@ -171,6 +171,9 @@ static int cachedhcp_apply ( struct cached_dhcp_packet *cache, settings = netdev_settings ( netdev ); DBGC ( colour, "CACHEDHCP %s is for %s\n", cache->name, netdev->name ); + + /* Mark network device to be opened automatically */ + netdev->state |= NETDEV_AUTO_OPEN; } /* Register settings */ diff --git a/src/include/ipxe/netdevice.h b/src/include/ipxe/netdevice.h index 62f0dd1f7..ebd54658b 100644 --- a/src/include/ipxe/netdevice.h +++ b/src/include/ipxe/netdevice.h @@ -461,6 +461,9 @@ struct net_device { /** Network device must be polled even when closed */ #define NETDEV_INSOMNIAC 0x0040 +/** Network device should be opened automatically */ +#define NETDEV_AUTO_OPEN 0x0080 + /** Link-layer protocol table */ #define LL_PROTOCOLS __table ( struct ll_protocol, "ll_protocols" ) diff --git a/src/net/netdevice.c b/src/net/netdevice.c index 0af916ff5..af0debd5a 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -836,6 +836,10 @@ int register_netdev ( struct net_device *netdev ) { } } + /* Attempt to open device automatically, if applicable */ + if ( netdev->state & NETDEV_AUTO_OPEN ) + netdev_open ( netdev ); + return 0; err_probe: