[sanboot] Add "sanhook" and "sanunhook" commands

Expose the multiple-SAN-drive capability of the iPXE core via the iPXE
command line by adding commands to hook and unhook additional drives.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2011-04-23 09:50:38 +01:00
parent 3ca5656208
commit 5d2802e403
10 changed files with 230 additions and 92 deletions

View File

@@ -15,4 +15,9 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define SANBOOT_PREFIX_null __null_
#endif
static inline __always_inline unsigned int
SANBOOT_INLINE ( null, san_default_drive ) ( void ) {
return 0;
}
#endif /* _IPXE_NULL_SANBOOT_H */

View File

@@ -58,12 +58,19 @@ struct uri;
/* Include all architecture-dependent sanboot API headers */
#include <bits/sanboot.h>
/**
* Get default SAN drive number
*
* @ret drive Default drive number
*/
unsigned int san_default_drive ( void );
/**
* Hook SAN device
*
* @v uri URI
* @v drive Requested drive number
* @ret drive Assigned drive number, or negative error
* @v drive Drive number
* @ret rc Return status code
*/
int san_hook ( struct uri *uri, unsigned int drive );

View File

@@ -14,7 +14,19 @@ struct net_device;
struct uri;
struct settings;
extern int uriboot ( struct uri *filename, struct uri *root_path );
/** uriboot() flags */
enum uriboot_flags {
URIBOOT_NO_SAN_DESCRIBE = 0x0001,
URIBOOT_NO_SAN_BOOT = 0x0002,
URIBOOT_NO_SAN_UNHOOK = 0x0004,
};
#define URIBOOT_NO_SAN ( URIBOOT_NO_SAN_DESCRIBE | \
URIBOOT_NO_SAN_BOOT | \
URIBOOT_NO_SAN_UNHOOK )
extern int uriboot ( struct uri *filename, struct uri *root_path, int drive,
unsigned int flags );
extern struct uri *
fetch_next_server_and_filename ( struct settings *settings );
extern int netboot ( struct net_device *netdev );