diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index f121f52c1946c791c90c620b5e4825708aa3e860..f478a36516443aa3d60da583d83e4312467cccec 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -1008,6 +1008,12 @@ static void netdev_set_if(char* netdev_name, char* ip_addr, char* gw_addr, char* return; } + /*auto close DHCP*/ + if (netdev_is_dhcp_enabled(netdev)) + { + netdev_dhcp_enabled(netdev, 0); + } + /* set IP address */ if ((ip_addr != RT_NULL) && inet_aton(ip_addr, &addr)) { @@ -1033,6 +1039,16 @@ int netdev_ifconfig(int argc, char **argv) { netdev_list_if(); } + else if (argc == 3) + { + if (!strcmp(argv[2], "dhcp")) + { + struct netdev *netdev = RT_NULL; + netdev = netdev_get_by_name(argv[1]); + rt_kprintf("config : %s func : DHCP ON\n", argv[1]); + netdev_dhcp_enabled(netdev, 1); + } + } else if (argc == 5) { rt_kprintf("config : %s\n", argv[1]); @@ -1044,6 +1060,7 @@ int netdev_ifconfig(int argc, char **argv) else { rt_kprintf("bad parameter! e.g: ifconfig e0 192.168.1.30 192.168.1.1 255.255.255.0\n"); + rt_kprintf("bad parameter! e.g: ifconfig e0 dhcp \n"); } return 0;