aboutsummaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2024-03-05 20:20:10 +0000
committerMichael Brown <mcb30@ipxe.org>2024-03-06 12:19:22 +0000
commit636ccb4ca55c73841e634f9d5986087fb3565da4 (patch)
tree31a788498a6a03bfead3a7df5c8da9ef13eab8b9 /src/include
parentb1c13cc43ece3008f7012cf736fc943d5bb89131 (diff)
downloadipxe-636ccb4ca55c73841e634f9d5986087fb3565da4.tar.gz
[block] Allow for additional SAN boot parameters alongside filename
The drive specification alone does not necessarily contain enough information to perform a SAN boot (or local disk boot) under UEFI. If the next-stage bootloader is installed in the EFI system partition under a non-standard name (e.g. "\EFI\debian\grubx64.efi") then this explicit boot filename must also be specified. Generalise this concept to use a "SAN boot configuration parameters" structure (currently containing only the optional explicit boot filename), to allow for easy expansion to provide other parameters such as the partition UUID or volume label. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ipxe/sanboot.h10
-rw-r--r--src/include/usr/autoboot.h3
2 files changed, 10 insertions, 3 deletions
diff --git a/src/include/ipxe/sanboot.h b/src/include/ipxe/sanboot.h
index b11197f93..d981226e9 100644
--- a/src/include/ipxe/sanboot.h
+++ b/src/include/ipxe/sanboot.h
@@ -105,6 +105,12 @@ enum san_device_flags {
SAN_NO_DESCRIBE = 0x0001,
};
+/** SAN boot configuration parameters */
+struct san_boot_config {
+ /** Boot filename (or NULL to use default) */
+ const char *filename;
+};
+
/**
* Calculate static inline sanboot API function name
*
@@ -165,10 +171,10 @@ void san_unhook ( unsigned int drive );
* Attempt to boot from a SAN device
*
* @v drive Drive number
- * @v filename Filename (or NULL to use default)
+ * @v config Boot configuration parameters
* @ret rc Return status code
*/
-int san_boot ( unsigned int drive, const char *filename );
+int san_boot ( unsigned int drive, struct san_boot_config *config );
/**
* Describe SAN devices for SAN-booted operating system
diff --git a/src/include/usr/autoboot.h b/src/include/usr/autoboot.h
index 3719b8243..a081a70df 100644
--- a/src/include/usr/autoboot.h
+++ b/src/include/usr/autoboot.h
@@ -14,6 +14,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
struct net_device;
struct uri;
struct settings;
+struct san_boot_config;
/** uriboot() flags */
enum uriboot_flags {
@@ -33,7 +34,7 @@ extern void set_autoboot_ll_addr ( const void *ll_addr, size_t len,
extern int uriboot ( struct uri *filename, struct uri **root_paths,
unsigned int root_path_count, int drive,
- const char *san_filename, unsigned int flags );
+ struct san_boot_config *san_config, unsigned int flags );
extern struct uri *
fetch_next_server_and_filename ( struct settings *settings );
extern int netboot ( struct net_device *netdev );