Merge branch '2020-05-18-reduce-size-of-common.h'
[oweals/u-boot.git] / cmd / pxe.c
index 18f0911e8125a4ea40c32effa3c88103b62b0e65..6372fc987187a35667ce978e50a6ceb94ad7231f 100644 (file)
--- a/cmd/pxe.c
+++ b/cmd/pxe.c
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <command.h>
 #include <fs.h>
+#include <net.h>
 
 #include "pxe_utils.h"
 
@@ -23,7 +24,8 @@ const char *pxe_default_paths[] = {
        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};
 
@@ -35,57 +37,13 @@ static int do_get_tftp(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
 
        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;
 
@@ -103,7 +61,7 @@ static int pxe_uuid_path(cmd_tbl_t *cmdtp, unsigned long pxefile_addr_r)
  *
  * 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;
@@ -123,7 +81,7 @@ static int pxe_mac_path(cmd_tbl_t *cmdtp, unsigned long pxefile_addr_r)
  *
  * 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;
@@ -156,7 +114,7 @@ static int pxe_ipaddr_paths(cmd_tbl_t *cmdtp, unsigned long pxefile_addr_r)
  * 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;
@@ -173,7 +131,7 @@ do_pxe_get(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return 1;
 
        err = strict_strtoul(pxefile_addr_str, 16,
-                               (unsigned long *)&pxefile_addr_r);
+                            (unsigned long *)&pxefile_addr_r);
        if (err < 0)
                return 1;
 
@@ -209,7 +167,7 @@ do_pxe_get(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  * 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;
@@ -235,7 +193,7 @@ do_pxe_boot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        cfg = parse_pxefile(cmdtp, pxefile_addr_r);
 
-       if (cfg == NULL) {
+       if (!cfg) {
                printf("Error parsing config file\n");
                return 1;
        }
@@ -249,14 +207,14 @@ do_pxe_boot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        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;
@@ -275,97 +233,9 @@ static int do_pxe(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        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'"
-);