From 74fd544101c8f17f35dfc2cd16738ebd5228d366 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 8 Jan 2008 15:51:36 +0000 Subject: Added the embedded pxelinux payload patch from hpa. --- src/usr/autoboot.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/usr') diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c index 918369784..c3b07e9a6 100644 --- a/src/usr/autoboot.c +++ b/src/usr/autoboot.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -45,6 +46,30 @@ static struct net_device * find_boot_netdev ( void ) { 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 * @@ -115,6 +140,11 @@ static int netboot ( struct net_device *netdev ) { 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 ) ); -- cgit v1.2.3-55-g7522