#include <common.h>
#include <command.h>
#include <fs.h>
+#include <net.h>
#include "pxe_utils.h"
NULL
};
-static int do_get_tftp(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
+static int do_get_tftp(struct cmd_tbl *cmdtp, const char *file_path,
+ char *file_addr)
{
char *tftp_argv[] = {"tftp", NULL, NULL, NULL};
return 1;
}
-#endif
-
-static char *fs_argv[5];
-
-static int do_get_ext2(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
-{
-#ifdef CONFIG_CMD_EXT2
- fs_argv[0] = "ext2load";
- fs_argv[3] = file_addr;
- fs_argv[4] = (void *)file_path;
-
- if (!do_ext2load(cmdtp, 0, 5, fs_argv))
- return 1;
-#endif
- return -ENOENT;
-}
-
-static int do_get_fat(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
-{
-#ifdef CONFIG_CMD_FAT
- fs_argv[0] = "fatload";
- fs_argv[3] = file_addr;
- fs_argv[4] = (void *)file_path;
-
- if (!do_fat_fsload(cmdtp, 0, 5, fs_argv))
- return 1;
-#endif
- return -ENOENT;
-}
-
-static int do_get_any(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
-{
-#ifdef CONFIG_CMD_FS_GENERIC
- fs_argv[0] = "load";
- fs_argv[3] = file_addr;
- fs_argv[4] = (void *)file_path;
-
- if (!do_load(cmdtp, 0, 5, fs_argv, FS_TYPE_ANY))
- return 1;
-#endif
- return -ENOENT;
-}
-
-#ifdef CONFIG_CMD_NET
/*
* Looks for a pxe file with a name based on the pxeuuid environment variable.
*
* Returns 1 on success or < 0 on error.
*/
-static int pxe_uuid_path(cmd_tbl_t *cmdtp, unsigned long pxefile_addr_r)
+static int pxe_uuid_path(struct cmd_tbl *cmdtp, unsigned long pxefile_addr_r)
{
char *uuid_str;
*
* Returns 1 on success or < 0 on error.
*/
-static int pxe_mac_path(cmd_tbl_t *cmdtp, unsigned long pxefile_addr_r)
+static int pxe_mac_path(struct cmd_tbl *cmdtp, unsigned long pxefile_addr_r)
{
char mac_str[21];
int err;
*
* Returns 1 on success or < 0 on error.
*/
-static int pxe_ipaddr_paths(cmd_tbl_t *cmdtp, unsigned long pxefile_addr_r)
+static int pxe_ipaddr_paths(struct cmd_tbl *cmdtp, unsigned long pxefile_addr_r)
{
char ip_addr[9];
int mask_pos, err;
* Returns 0 on success or 1 on error.
*/
static int
-do_pxe_get(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+do_pxe_get(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
{
char *pxefile_addr_str;
unsigned long pxefile_addr_r;
return 1;
err = strict_strtoul(pxefile_addr_str, 16,
- (unsigned long *)&pxefile_addr_r);
+ (unsigned long *)&pxefile_addr_r);
if (err < 0)
return 1;
* Returns 0 on success, 1 on error.
*/
static int
-do_pxe_boot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+do_pxe_boot(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
{
unsigned long pxefile_addr_r;
struct pxe_menu *cfg;
cfg = parse_pxefile(cmdtp, pxefile_addr_r);
- if (cfg == NULL) {
+ if (!cfg) {
printf("Error parsing config file\n");
return 1;
}
return 0;
}
-static cmd_tbl_t cmd_pxe_sub[] = {
+static struct cmd_tbl cmd_pxe_sub[] = {
U_BOOT_CMD_MKENT(get, 1, 1, do_pxe_get, "", ""),
U_BOOT_CMD_MKENT(boot, 2, 1, do_pxe_boot, "", "")
};
-static int do_pxe(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_pxe(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
{
- cmd_tbl_t *cp;
+ struct cmd_tbl *cp;
if (argc < 2)
return CMD_RET_USAGE;
return CMD_RET_USAGE;
}
-U_BOOT_CMD(
- pxe, 3, 1, do_pxe,
- "commands to get and boot from pxe files",
- "get - try to retrieve a pxe file using tftp\npxe "
- "boot [pxefile_addr_r] - boot from the pxe file at pxefile_addr_r\n"
+U_BOOT_CMD(pxe, 3, 1, do_pxe,
+ "commands to get and boot from pxe files",
+ "get - try to retrieve a pxe file using tftp\n"
+ "pxe boot [pxefile_addr_r] - boot from the pxe file at pxefile_addr_r\n"
);
#endif
-
-/*
- * Boots a system using a local disk syslinux/extlinux file
- *
- * Returns 0 on success, 1 on error.
- */
-static int do_sysboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
- unsigned long pxefile_addr_r;
- struct pxe_menu *cfg;
- char *pxefile_addr_str;
- char *filename;
- int prompt = 0;
-
- is_pxe = false;
-
- if (argc > 1 && strstr(argv[1], "-p")) {
- prompt = 1;
- argc--;
- argv++;
- }
-
- if (argc < 4)
- return cmd_usage(cmdtp);
-
- if (argc < 5) {
- pxefile_addr_str = from_env("pxefile_addr_r");
- if (!pxefile_addr_str)
- return 1;
- } else {
- pxefile_addr_str = argv[4];
- }
-
- if (argc < 6)
- filename = env_get("bootfile");
- else {
- filename = argv[5];
- env_set("bootfile", filename);
- }
-
- if (strstr(argv[3], "ext2"))
- do_getfile = do_get_ext2;
- else if (strstr(argv[3], "fat"))
- do_getfile = do_get_fat;
- else if (strstr(argv[3], "any"))
- do_getfile = do_get_any;
- else {
- printf("Invalid filesystem: %s\n", argv[3]);
- return 1;
- }
- fs_argv[1] = argv[1];
- fs_argv[2] = argv[2];
-
- if (strict_strtoul(pxefile_addr_str, 16, &pxefile_addr_r) < 0) {
- printf("Invalid pxefile address: %s\n", pxefile_addr_str);
- return 1;
- }
-
- if (get_pxe_file(cmdtp, filename, pxefile_addr_r) < 0) {
- printf("Error reading config file\n");
- return 1;
- }
-
- cfg = parse_pxefile(cmdtp, pxefile_addr_r);
-
- if (cfg == NULL) {
- printf("Error parsing config file\n");
- return 1;
- }
-
- if (prompt)
- cfg->prompt = 1;
-
- handle_pxe_menu(cmdtp, cfg);
-
- destroy_pxe_menu(cfg);
-
- return 0;
-}
-
-U_BOOT_CMD(
- sysboot, 7, 1, do_sysboot,
- "command to get and boot from syslinux files",
- "[-p] <interface> <dev[:part]> <ext2|fat|any> [addr] [filename]\n"
- " - load and parse syslinux menu file 'filename' from ext2, fat\n"
- " or any filesystem on 'dev' on 'interface' to address 'addr'"
-);