summaryrefslogtreecommitdiffstats
path: root/src/include/gpxe/dhcp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/gpxe/dhcp.h')
-rw-r--r--src/include/gpxe/dhcp.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/include/gpxe/dhcp.h b/src/include/gpxe/dhcp.h
index 2d9f8853..ebfe8ede 100644
--- a/src/include/gpxe/dhcp.h
+++ b/src/include/gpxe/dhcp.h
@@ -16,6 +16,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <gpxe/tables.h>
#include <gpxe/uuid.h>
#include <gpxe/netdevice.h>
+#include <gpxe/uaccess.h>
struct job_interface;
struct dhcp_options;
@@ -332,6 +333,16 @@ struct dhcp_netdev_desc {
uint16_t device;
} __attribute__ (( packed ));
+/** Use cached network settings
+ *
+ * Cached network settings may be available from a prior DHCP request
+ * (if running as a PXE NBP), non-volatile storage on the NIC, or
+ * settings set via the command line or an embedded image. If this
+ * flag is not set, it will be assumed that those sources are
+ * insufficient and that DHCP should still be run when autobooting.
+ */
+#define DHCP_EB_USE_CACHED DHCP_ENCAP_OPT ( DHCP_EB_ENCAP, 0xb2 )
+
/** BIOS drive number
*
* This is the drive number for a drive emulated via INT 13. 0x80 is
@@ -615,4 +626,12 @@ extern int start_dhcp ( struct job_interface *job, struct net_device *netdev );
extern int start_pxebs ( struct job_interface *job, struct net_device *netdev,
unsigned int pxe_type );
+/* In environments that can provide cached DHCP packets, this function
+ * should look for such a packet and call store_cached_dhcpack() with
+ * it if it exists.
+ */
+__weak_decl ( void, get_cached_dhcpack, ( void ), (), );
+
+extern void store_cached_dhcpack ( userptr_t data, size_t len );
+
#endif /* _GPXE_DHCP_H */