diff options
| author | guo <[email protected]> | 2022-12-03 12:07:44 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-12-03 12:07:44 +0800 |
| commit | ecf2d8215961ca7c539132b62a72df6072cc3e14 (patch) | |
| tree | 59005f0f74f2593c0435059264f624c862a89f55 /components/net/netdev/src | |
| parent | aaf5462c6d4ae9466a0a8cd2a4bb00cfe1fef2f2 (diff) | |
sync branch rt-smart. (#6641)
* Synchronize the code of the rt mart branch to the master branch.
* TTY device
* Add lwP code from rt-smart
* Add vnode in DFS, but DFS will be re-write for rt-smart
* There are three libcpu for rt-smart:
* arm/cortex-a, arm/aarch64
* riscv64
Co-authored-by: Rbb666 <[email protected]>
Co-authored-by: zhkag <[email protected]>
Diffstat (limited to 'components/net/netdev/src')
| -rw-r--r-- | components/net/netdev/src/netdev.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index aa06f51fdf..09f6c37d9a 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -741,6 +741,14 @@ static void netdev_auto_change_default(struct netdev *netdev) { struct netdev *new_netdev = RT_NULL; + if (netdev->flags & NETDEV_FLAG_LINK_UP) + { + if (!(netdev_default->flags & NETDEV_FLAG_LINK_UP)) + { + netdev_set_default(netdev); + } + return; + } if (rt_memcmp(netdev, netdev_default, sizeof(struct netdev)) == 0) { new_netdev = netdev_get_first_by_flags(NETDEV_FLAG_LINK_UP); @@ -996,6 +1004,35 @@ static void netdev_list_if(void) } } +#ifdef RT_LWIP_DHCP +int netdev_dhcp_open(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; + } + netdev_dhcp_enabled(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; + } + netdev_dhcp_enabled(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; @@ -1008,6 +1045,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)) { @@ -1033,6 +1074,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]); @@ -1044,6 +1094,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; |
