#include <gpxe/netdevice.h>
#include <gpxe/dhcp.h>
#include <gpxe/image.h>
+#include <gpxe/embedded.h>
#include <usr/ifmgmt.h>
#include <usr/route.h>
#include <usr/dhcpmgmt.h>
return NULL;
}
+/**
+ * Boot embedded image
+ *
+ * @ret rc Return status code
+ */
+static int boot_embedded_image ( void ) {
+ struct image *image;
+ int rc;
+
+ image = embedded_image();
+ if ( !image )
+ return ENOENT;
+
+ if ( ( rc = imgload ( image ) ) != 0 ) {
+ printf ( "Could not load embedded image: %s\n",
+ strerror ( rc ) );
+ } else if ( ( rc = imgexec ( image ) ) != 0 ) {
+ printf ( "Could not boot embedded image: %s\n",
+ strerror ( rc ) );
+ }
+ image_put ( image );
+ return rc;
+}
+
/**
* Boot using filename
*
return rc;
route();
+ /* Try to boot an embedded image if we have one */
+ rc = boot_embedded_image ();
+ if ( rc != ENOENT )
+ return rc;
+
/* Try to download and boot whatever we are given as a filename */
dhcp_snprintf ( buf, sizeof ( buf ),
find_global_dhcp_option ( DHCP_BOOTFILE_NAME ) );