1 /*
2  * Copyright (C) 2017-2020 Alibaba Group Holding Limited
3  */
4 
5 #include "lwip/opt.h"
6 #include "lwip/netif.h"
7 #include "lwip/apps/ifconfig.h"
8 #include <lwip/def.h>
9 #include <lwip/netdb.h>
10 #include <lwip/sockets.h>
11 #include <aos/cli.h>
12 
ifconfig(int argc,char * argv[])13 int ifconfig(int argc,char *argv[])
14 {
15 	struct netif *net_if = NULL;
16 
17     if ((argc == 0) || (argc >= 1) && (strcmp(argv[0], "status") == 0)) {
18         NETIF_FOREACH(net_if) {
19             if (netif_is_up(net_if) && !ip_addr_isany(&net_if->ip_addr) && netif_is_link_up(net_if)) {
20                 char address[16];
21                 char gateway[16];
22                 char netmask[16];
23                 inet_ntoa_r(net_if->ip_addr, address, sizeof(address));
24                 inet_ntoa_r(net_if->gw, gateway, sizeof(gateway));
25                 inet_ntoa_r(net_if->netmask, netmask, sizeof(netmask));
26                 aos_cli_printf("%c%c%d up, "
27                             "address:%s gateway:%s netmask:%s\n",
28                             net_if->name[0], net_if->name[1], net_if->num,
29                             address, gateway, netmask);
30             } else {
31                 aos_cli_printf("%c%c%d down\n",
32                             net_if->name[0], net_if->name[1], net_if->num);
33             }
34 #if LWIP_IPV6
35             if (netif_is_link_up(net_if)) {
36                 int i;
37                 for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
38                     if (ip6_addr_isvalid(netif_ip6_addr_state(net_if, i))) {
39                         aos_cli_printf("IPv6 addr [%d]: %s\n",
40                         i, inet6_ntoa(net_if->ip6_addr[i]));
41                     }
42                 }
43             }
44 #endif /* LWIP_IPV6 */
45         }
46     } else if (strcmp(argv[1], "up") == 0) {
47         aos_cli_printf("ifconfig up is not support\n");
48     } else if (strcmp(argv[1], "down") == 0) {
49         aos_cli_printf("ifconfig down is not support\n");
50     } else {
51         aos_cli_printf("Invalid command\n");
52     }
53 
54     return 0;
55 }
56