From fac993e0663bd0436eb32c445f91a40156420239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Wed, 16 Feb 2022 18:19:07 +0800 Subject: [PATCH 1/3] modify ifconfig function --- .../net/lwip-2.1.2/src/netif/ethernetif.c | 34 +++++----- components/net/netdev/src/netdev.c | 63 +++++++++++++++++++ 2 files changed, 80 insertions(+), 17 deletions(-) diff --git a/components/net/lwip-2.1.2/src/netif/ethernetif.c b/components/net/lwip-2.1.2/src/netif/ethernetif.c index de1d33a7d1..89d78af304 100644 --- a/components/net/lwip-2.1.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.1.2/src/netif/ethernetif.c @@ -111,39 +111,39 @@ static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; #include "lwip/netdb.h" #include -static int lwip_netdev_set_up(struct netdev *netif) +static int lwip_netdev_set_up(struct netdev *netdev) { - netif_set_up((struct netif *)netif->user_data); + netif_set_up((struct netif *)netdev->user_data); return ERR_OK; } -static int lwip_netdev_set_down(struct netdev *netif) +static int lwip_netdev_set_down(struct netdev *netdev) { - netif_set_down((struct netif *)netif->user_data); + netif_set_down((struct netif *)netdev->user_data); return ERR_OK; } -static int lwip_netdev_set_addr_info(struct netdev *netif, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) +static int lwip_netdev_set_addr_info(struct netdev *netdev, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) { if (ip_addr && netmask && gw) { - netif_set_addr((struct netif *)netif->user_data, ip_2_ip4(ip_addr), ip_2_ip4(netmask), ip_2_ip4(gw)); + netif_set_addr((struct netif *)netdev->user_data, ip_2_ip4(ip_addr), ip_2_ip4(netmask), ip_2_ip4(gw)); } else { if (ip_addr) { - netif_set_ipaddr((struct netif *)netif->user_data, ip_2_ip4(ip_addr)); + netif_set_ipaddr((struct netif *)netdev->user_data, ip_2_ip4(ip_addr)); } if (netmask) { - netif_set_netmask((struct netif *)netif->user_data, ip_2_ip4(netmask)); + netif_set_netmask((struct netif *)netdev->user_data, ip_2_ip4(netmask)); } if (gw) { - netif_set_gw((struct netif *)netif->user_data, ip_2_ip4(gw)); + netif_set_gw((struct netif *)netdev->user_data, ip_2_ip4(gw)); } } @@ -151,7 +151,7 @@ static int lwip_netdev_set_addr_info(struct netdev *netif, ip_addr_t *ip_addr, i } #ifdef RT_LWIP_DNS -static int lwip_netdev_set_dns_server(struct netdev *netif, uint8_t dns_num, ip_addr_t *dns_server) +static int lwip_netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, ip_addr_t *dns_server) { extern void dns_setserver(uint8_t dns_num, const ip_addr_t *dns_server); dns_setserver(dns_num, dns_server); @@ -160,9 +160,9 @@ static int lwip_netdev_set_dns_server(struct netdev *netif, uint8_t dns_num, ip_ #endif /* RT_LWIP_DNS */ #ifdef RT_LWIP_DHCP -static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled) +static int lwip_netdev_set_dhcp(struct netdev *netdev, rt_bool_t is_enabled) { - netdev_low_level_set_dhcp_status(netif, is_enabled); + netdev_low_level_set_dhcp_status(netdev, is_enabled); return ERR_OK; } #endif /* RT_LWIP_DHCP */ @@ -172,7 +172,7 @@ static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled) extern int lwip_ping_recv(int s, int *ttl); extern err_t lwip_ping_send(int s, ip_addr_t *addr, int size); -int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len, +int lwip_netdev_ping(struct netdev *netdev, const char *host, size_t data_len, uint32_t timeout, struct netdev_ping_resp *ping_resp) { int s, ttl, recv_len, result = 0; @@ -188,7 +188,7 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len, struct sockaddr_in *h = RT_NULL; struct in_addr ina; - RT_ASSERT(netif); + RT_ASSERT(netdev); RT_ASSERT(host); RT_ASSERT(ping_resp); @@ -245,7 +245,7 @@ __exit: #endif /* RT_LWIP_USING_PING */ #if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) -void lwip_netdev_netstat(struct netdev *netif) +void lwip_netdev_netstat(struct netdev *netdev) { extern void list_tcps(void); extern void list_udps(void); @@ -260,9 +260,9 @@ void lwip_netdev_netstat(struct netdev *netif) #endif /* RT_LWIP_TCP || RT_LWIP_UDP */ #endif /* RT_USING_FINSH */ -static int lwip_netdev_set_default(struct netdev *netif) +static int lwip_netdev_set_default(struct netdev *netdev) { - netif_set_default((struct netif *)netif->user_data); + netif_set_default((struct netif *)netdev->user_data); return ERR_OK; } diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index 0d8cd15a5d..37d5570b37 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -959,6 +959,53 @@ static void netdev_list_if(void) } } +#ifdef RT_LWIP_DHCP +struct netif; +void dhcp_stop(struct netif *netif); +int dhcp_start(struct netif *netif); +int netdev_dhcp_open(char* netdev_name) +{ + struct netdev *netdev = RT_NULL; + int ret; + netdev = netdev_get_by_name(netdev_name); + if (netdev == RT_NULL) + { + rt_kprintf("bad network interface device name(%s).\n", netdev_name); + return -1; + } + if (!netdev_is_dhcp_enabled(netdev)) + { + ret = dhcp_start(netdev->user_data); + if(ret != 0) + { + LOG_E("dhcp start failed\n"); + } + netdev_low_level_set_dhcp_status(netdev, RT_TRUE); + } + + return 0; +} + +int netdev_dhcp_close(char* netdev_name) +{ + struct netdev *netdev = RT_NULL; + + netdev = netdev_get_by_name(netdev_name); + if (netdev == RT_NULL) + { + rt_kprintf("bad network interface device name(%s).\n", netdev_name); + return -1; + } + if (netdev_is_dhcp_enabled(netdev)) + { + dhcp_stop(netdev->user_data); + netdev_low_level_set_dhcp_status(netdev, RT_FALSE); + } + + return 0; +} +#endif + static void netdev_set_if(char* netdev_name, char* ip_addr, char* gw_addr, char* nm_addr) { struct netdev *netdev = RT_NULL; @@ -971,6 +1018,10 @@ static void netdev_set_if(char* netdev_name, char* ip_addr, char* gw_addr, char* return; } +#ifdef RT_LWIP_DHCP + netdev_dhcp_close(netdev_name); +#endif + /* set IP address */ if ((ip_addr != RT_NULL) && inet_aton(ip_addr, &addr)) { @@ -996,6 +1047,15 @@ int netdev_ifconfig(int argc, char **argv) { netdev_list_if(); } +#ifdef RT_LWIP_DHCP + else if(argc == 3) + { + if (!strcmp(argv[2], "dhcp")) + { + netdev_dhcp_open(argv[1]); + } + } +#endif else if (argc == 5) { rt_kprintf("config : %s\n", argv[1]); @@ -1007,6 +1067,9 @@ 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"); +#ifdef RT_LWIP_DHCP + rt_kprintf("bad parameter! e.g: ifconfig e0 dhcp\n"); +#endif } return 0; -- Gitee From 1d3414e1bb8c39a9a34d35c01d738fbb672b31fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Thu, 17 Feb 2022 10:01:18 +0800 Subject: [PATCH 2/3] modify ifconfig function according to the suggestion --- .../net/lwip-2.1.2/src/netif/ethernetif.c | 9 ++++++++ components/net/netdev/src/netdev.c | 22 ++----------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/components/net/lwip-2.1.2/src/netif/ethernetif.c b/components/net/lwip-2.1.2/src/netif/ethernetif.c index 89d78af304..ef9c05511f 100644 --- a/components/net/lwip-2.1.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.1.2/src/netif/ethernetif.c @@ -162,6 +162,15 @@ static int lwip_netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, ip #ifdef RT_LWIP_DHCP static int lwip_netdev_set_dhcp(struct netdev *netdev, rt_bool_t is_enabled) { + if(RT_TRUE == is_enabled) + { + dhcp_start((struct netif *)netdev->user_data); + } + else + { + dhcp_stop((struct netif *)netdev->user_data); + } + netdev_low_level_set_dhcp_status(netdev, is_enabled); return ERR_OK; } diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index 37d5570b37..b5a7486ee4 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -960,29 +960,16 @@ static void netdev_list_if(void) } #ifdef RT_LWIP_DHCP -struct netif; -void dhcp_stop(struct netif *netif); -int dhcp_start(struct netif *netif); int netdev_dhcp_open(char* netdev_name) { struct netdev *netdev = RT_NULL; - int ret; netdev = netdev_get_by_name(netdev_name); if (netdev == RT_NULL) { rt_kprintf("bad network interface device name(%s).\n", netdev_name); return -1; } - if (!netdev_is_dhcp_enabled(netdev)) - { - ret = dhcp_start(netdev->user_data); - if(ret != 0) - { - LOG_E("dhcp start failed\n"); - } - netdev_low_level_set_dhcp_status(netdev, RT_TRUE); - } - + netdev_dhcp_enabled(netdev,RT_TRUE); return 0; } @@ -996,12 +983,7 @@ int netdev_dhcp_close(char* netdev_name) rt_kprintf("bad network interface device name(%s).\n", netdev_name); return -1; } - if (netdev_is_dhcp_enabled(netdev)) - { - dhcp_stop(netdev->user_data); - netdev_low_level_set_dhcp_status(netdev, RT_FALSE); - } - + netdev_dhcp_enabled(netdev,RT_FALSE); return 0; } #endif -- Gitee From 54c2679df21590c92dd968e3e8859b8d66e9ea0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Thu, 17 Feb 2022 11:07:55 +0800 Subject: [PATCH 3/3] modify ifconfig function and remove unnecessary modifications --- .../net/lwip-2.1.2/src/netif/ethernetif.c | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/components/net/lwip-2.1.2/src/netif/ethernetif.c b/components/net/lwip-2.1.2/src/netif/ethernetif.c index ef9c05511f..8b581c3e04 100644 --- a/components/net/lwip-2.1.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.1.2/src/netif/ethernetif.c @@ -111,39 +111,39 @@ static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; #include "lwip/netdb.h" #include -static int lwip_netdev_set_up(struct netdev *netdev) +static int lwip_netdev_set_up(struct netdev *netif) { - netif_set_up((struct netif *)netdev->user_data); + netif_set_up((struct netif *)netif->user_data); return ERR_OK; } -static int lwip_netdev_set_down(struct netdev *netdev) +static int lwip_netdev_set_down(struct netdev *netif) { - netif_set_down((struct netif *)netdev->user_data); + netif_set_down((struct netif *)netif->user_data); return ERR_OK; } -static int lwip_netdev_set_addr_info(struct netdev *netdev, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) +static int lwip_netdev_set_addr_info(struct netdev *netif, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) { if (ip_addr && netmask && gw) { - netif_set_addr((struct netif *)netdev->user_data, ip_2_ip4(ip_addr), ip_2_ip4(netmask), ip_2_ip4(gw)); + netif_set_addr((struct netif *)netif->user_data, ip_2_ip4(ip_addr), ip_2_ip4(netmask), ip_2_ip4(gw)); } else { if (ip_addr) { - netif_set_ipaddr((struct netif *)netdev->user_data, ip_2_ip4(ip_addr)); + netif_set_ipaddr((struct netif *)netif->user_data, ip_2_ip4(ip_addr)); } if (netmask) { - netif_set_netmask((struct netif *)netdev->user_data, ip_2_ip4(netmask)); + netif_set_netmask((struct netif *)netif->user_data, ip_2_ip4(netmask)); } if (gw) { - netif_set_gw((struct netif *)netdev->user_data, ip_2_ip4(gw)); + netif_set_gw((struct netif *)netif->user_data, ip_2_ip4(gw)); } } @@ -151,7 +151,7 @@ static int lwip_netdev_set_addr_info(struct netdev *netdev, ip_addr_t *ip_addr, } #ifdef RT_LWIP_DNS -static int lwip_netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, ip_addr_t *dns_server) +static int lwip_netdev_set_dns_server(struct netdev *netif, uint8_t dns_num, ip_addr_t *dns_server) { extern void dns_setserver(uint8_t dns_num, const ip_addr_t *dns_server); dns_setserver(dns_num, dns_server); @@ -160,18 +160,17 @@ static int lwip_netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, ip #endif /* RT_LWIP_DNS */ #ifdef RT_LWIP_DHCP -static int lwip_netdev_set_dhcp(struct netdev *netdev, rt_bool_t is_enabled) +static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled) { if(RT_TRUE == is_enabled) { - dhcp_start((struct netif *)netdev->user_data); + dhcp_start((struct netif *)netif->user_data); } else { - dhcp_stop((struct netif *)netdev->user_data); + dhcp_stop((struct netif *)netif->user_data); } - - netdev_low_level_set_dhcp_status(netdev, is_enabled); + netdev_low_level_set_dhcp_status(netif, is_enabled); return ERR_OK; } #endif /* RT_LWIP_DHCP */ @@ -181,7 +180,7 @@ static int lwip_netdev_set_dhcp(struct netdev *netdev, rt_bool_t is_enabled) extern int lwip_ping_recv(int s, int *ttl); extern err_t lwip_ping_send(int s, ip_addr_t *addr, int size); -int lwip_netdev_ping(struct netdev *netdev, const char *host, size_t data_len, +int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len, uint32_t timeout, struct netdev_ping_resp *ping_resp) { int s, ttl, recv_len, result = 0; @@ -197,7 +196,7 @@ int lwip_netdev_ping(struct netdev *netdev, const char *host, size_t data_len, struct sockaddr_in *h = RT_NULL; struct in_addr ina; - RT_ASSERT(netdev); + RT_ASSERT(netif); RT_ASSERT(host); RT_ASSERT(ping_resp); @@ -254,7 +253,7 @@ __exit: #endif /* RT_LWIP_USING_PING */ #if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) -void lwip_netdev_netstat(struct netdev *netdev) +void lwip_netdev_netstat(struct netdev *netif) { extern void list_tcps(void); extern void list_udps(void); @@ -269,9 +268,9 @@ void lwip_netdev_netstat(struct netdev *netdev) #endif /* RT_LWIP_TCP || RT_LWIP_UDP */ #endif /* RT_USING_FINSH */ -static int lwip_netdev_set_default(struct netdev *netdev) +static int lwip_netdev_set_default(struct netdev *netif) { - netif_set_default((struct netif *)netdev->user_data); + netif_set_default((struct netif *)netif->user_data); return ERR_OK; } -- Gitee