]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
net: make dhcp_run() common for NET and NET_LWIP
authorJerome Forissier <jerome.forissier@linaro.org>
Thu, 9 Oct 2025 12:30:14 +0000 (14:30 +0200)
committerJerome Forissier <jerome.forissier@linaro.org>
Wed, 22 Oct 2025 12:28:33 +0000 (14:28 +0200)
There are currently two implementations of dhcp_run(): one in cmd/net.c
for NET and one in net/lwip/dhcp.c for NET_LWIP. There is no
justification for that. Therefore, move the NET version into
net/net-common.c to be used by both stacks, and drop the NET_LWIP
version which by the way does not look totally correct.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Suggested-by: Tom Rini <trini@konsulko.com>
Acked-by: Benjamin Hahn <B.Hahn@phytec.de>
cmd/net.c
include/net-common.h
include/net-lwip.h
net/lwip/dhcp.c
net/net-common.c

index 886735ea14f66293e7ed07f1951030c825fb56fb..24099764493ed326bfe0140933dee308c5cc9414 100644 (file)
--- a/cmd/net.c
+++ b/cmd/net.c
@@ -134,8 +134,8 @@ U_BOOT_CMD(dhcp6,   3,      1,      do_dhcp6,
 #endif
 
 #if defined(CONFIG_CMD_DHCP)
-static int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc,
-                  char *const argv[])
+int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc,
+           char *const argv[])
 {
        return netboot_common(DHCP, cmdtp, argc, argv);
 }
@@ -145,38 +145,6 @@ U_BOOT_CMD(
        "boot image via network using DHCP/TFTP protocol",
        "[loadAddress] [[hostIPaddr:]bootfilename]"
 );
-
-int dhcp_run(ulong addr, const char *fname, bool autoload)
-{
-       char *dhcp_argv[] = {"dhcp", NULL, (char *)fname, NULL};
-       struct cmd_tbl cmdtp = {};      /* dummy */
-       char file_addr[17];
-       int old_autoload;
-       int ret, result;
-
-       log_debug("addr=%lx, fname=%s, autoload=%d\n", addr, fname, autoload);
-       old_autoload = env_get_yesno("autoload");
-       ret = env_set("autoload", autoload ? "y" : "n");
-       if (ret)
-               return log_msg_ret("en1", -EINVAL);
-
-       if (autoload) {
-               sprintf(file_addr, "%lx", addr);
-               dhcp_argv[1] = file_addr;
-       }
-
-       result = do_dhcp(&cmdtp, 0, !autoload ? 1 : fname ? 3 : 2, dhcp_argv);
-
-       ret = env_set("autoload", old_autoload == -1 ? NULL :
-                     old_autoload ? "y" : "n");
-       if (ret)
-               return log_msg_ret("en2", -EINVAL);
-
-       if (result)
-               return log_msg_ret("res", -ENOENT);
-
-       return 0;
-}
 #endif
 
 #if defined(CONFIG_CMD_NFS)
index 1112af381a9842c46bd8a926ecf4e93a682621ca..78d98e5bba07038a248bacbe1436ad3c94a90536 100644 (file)
@@ -479,6 +479,16 @@ int net_loop(enum proto_t protocol);
  */
 int dhcp_run(ulong addr, const char *fname, bool autoload);
 
+/**
+ * do_dhcp - Run the dhcp command
+ *
+ * @cmdtp: Unused
+ * @flag: Command flags (CMD_FLAG_...)
+ * @argc: Number of arguments
+ * @argv: List of arguments
+ * Return: result (see enum command_ret_t)
+ */
+int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 
 /**
  * do_ping - Run the ping command
index e88e2186635b1f1bc3a28f6fd60e66c3bc0185c6..c910def5719ea49c1796c11354e1a3d63e01e023 100644 (file)
@@ -50,7 +50,6 @@ int net_lwip_dns_resolve(char *name_or_ip, ip_addr_t *ip);
  */
 bool wget_validate_uri(char *uri);
 
-int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_dns(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
 int do_wget(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]);
 
index 531bf2c67057acd76b9a79c51fbd54045ecee28b..b798014ebcb97dee688e29ccb34da916296c6772 100644 (file)
@@ -150,25 +150,3 @@ int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 
        return CMD_RET_SUCCESS;
 }
-
-int dhcp_run(ulong addr, const char *fname, bool autoload)
-{
-       char *dhcp_argv[] = {"dhcp", NULL, };
-#ifdef CONFIG_CMD_TFTPBOOT
-       char *tftp_argv[] = {"tftpboot", boot_file_name, NULL, };
-#endif
-       struct cmd_tbl cmdtp = {};      /* dummy */
-
-       if (autoload) {
-#ifdef CONFIG_CMD_TFTPBOOT
-               /* Assume DHCP was already performed */
-               if (boot_file_name[0])
-                       return do_tftpb(&cmdtp, 0, 2, tftp_argv);
-               return 0;
-#else
-               return -EOPNOTSUPP;
-#endif
-       }
-
-       return do_dhcp(&cmdtp, 0, 1, dhcp_argv);
-}
index b064557d5241e50436222c4ae2b49f1ca4fabd08..442b05975581b911f0db2ab36594364101783c78 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 
 #include <dm/uclass.h>
+#include <env.h>
 #include <net-common.h>
 #include <linux/time.h>
 #include <rtc.h>
@@ -48,3 +49,37 @@ void net_sntp_set_rtc(u32 seconds)
               tm.tm_year, tm.tm_mon, tm.tm_mday,
               tm.tm_hour, tm.tm_min, tm.tm_sec);
 }
+
+#if defined(CONFIG_CMD_DHCP)
+int dhcp_run(ulong addr, const char *fname, bool autoload)
+{
+       char *dhcp_argv[] = {"dhcp", NULL, (char *)fname, NULL};
+       struct cmd_tbl cmdtp = {};      /* dummy */
+       char file_addr[17];
+       int old_autoload;
+       int ret, result;
+
+       log_debug("addr=%lx, fname=%s, autoload=%d\n", addr, fname, autoload);
+       old_autoload = env_get_yesno("autoload");
+       ret = env_set("autoload", autoload ? "y" : "n");
+       if (ret)
+               return log_msg_ret("en1", -EINVAL);
+
+       if (autoload) {
+               sprintf(file_addr, "%lx", addr);
+               dhcp_argv[1] = file_addr;
+       }
+
+       result = do_dhcp(&cmdtp, 0, !autoload ? 1 : fname ? 3 : 2, dhcp_argv);
+
+       ret = env_set("autoload", old_autoload == -1 ? NULL :
+                     old_autoload ? "y" : "n");
+       if (ret)
+               return log_msg_ret("en2", -EINVAL);
+
+       if (result)
+               return log_msg_ret("res", -ENOENT);
+
+       return 0;
+}
+#endif