diff options
| author | xiao-mang <[email protected]> | 2023-10-24 13:16:29 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-10-24 13:16:29 +0800 |
| commit | 50bb71e458efd32e28b4e3d79cf3aded76dd8f64 (patch) | |
| tree | 4d2c43727e4225b08a98cd419bef6a838f641c00 /components/net/sal/src/sal_socket.c | |
| parent | 6eb7fa2f6c5b95ecc2d6cbd8cf047e9593777e90 (diff) | |
fix ash ifconfig updown (#8165)
Diffstat (limited to 'components/net/sal/src/sal_socket.c')
| -rw-r--r-- | components/net/sal/src/sal_socket.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/components/net/sal/src/sal_socket.c b/components/net/sal/src/sal_socket.c index d8a68fa0ee..51aa8ce0f4 100644 --- a/components/net/sal/src/sal_socket.c +++ b/components/net/sal/src/sal_socket.c @@ -1314,9 +1314,9 @@ int sal_ioctlsocket(int socket, long cmd, void *arg) if (!strcmp(ifr->ifr_ifrn.ifrn_name, netdev->name)) { uint16_t flags_tmp = 0; - if (sock->netdev->flags & NETDEV_FLAG_UP) + if (netdev->flags & NETDEV_FLAG_UP) flags_tmp = flags_tmp | IFF_UP; - if (!(sock->netdev->flags & NETDEV_FLAG_ETHARP)) + if (!(netdev->flags & NETDEV_FLAG_ETHARP)) flags_tmp = flags_tmp | IFF_NOARP; ifr->ifr_ifru.ifru_flags = flags_tmp; return 0; @@ -1327,8 +1327,24 @@ int sal_ioctlsocket(int socket, long cmd, void *arg) case SIOCSIFFLAGS: - sock->netdev->flags = ifr->ifr_ifru.ifru_flags; - return 0; + for (node = &(cur_netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_list_entry(node, struct netdev, list); + if (!strcmp(ifr->ifr_ifrn.ifrn_name, netdev->name)) + { + if ((ifr->ifr_ifru.ifru_flags & IFF_UP) == 0) + { + netdev_set_down(netdev); + } + else + { + netdev_set_up(netdev); + } + return 0; + } + } + return -1; + case SIOCGIFCONF: { struct ifconf *ifconf_tmp; |
