From 27203fe16d119c332f26a19f66f1d7187bc104a4 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 6 Oct 2024 15:22:19 +0800 Subject: [PATCH] net: Remove IFF_DOWN flag to compatible with Linux/*BSD turn off interface by checking IFF_UP flag isn't set: https://github.com/apache/nuttx/issues/1838 Signed-off-by: Xiang Xiao --- lte/alt1250/alt1250_netdev.c | 2 +- lte/alt1250/usock_handlers/alt1250_ioctl_ifreq.c | 7 +------ netutils/netinit/netinit.c | 2 +- netutils/netlib/netlib_setifstatus.c | 2 -- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/lte/alt1250/alt1250_netdev.c b/lte/alt1250/alt1250_netdev.c index 1f8fff8f25e..8e40afd92b0 100644 --- a/lte/alt1250/alt1250_netdev.c +++ b/lte/alt1250/alt1250_netdev.c @@ -60,7 +60,7 @@ void alt1250_netdev_unregister(FAR struct alt1250_s *dev) void alt1250_netdev_ifdown(FAR struct alt1250_s *dev) { - dev->net_dev.d_flags = IFF_DOWN; + dev->net_dev.d_flags = ~IFF_UP; #ifdef CONFIG_NET_IPv4 memset(&dev->net_dev.d_ipaddr, 0, sizeof(dev->net_dev.d_ipaddr)); memset(&dev->net_dev.d_draddr, 0, sizeof(dev->net_dev.d_draddr)); diff --git a/lte/alt1250/usock_handlers/alt1250_ioctl_ifreq.c b/lte/alt1250/usock_handlers/alt1250_ioctl_ifreq.c index 5e327043af0..875361681b2 100644 --- a/lte/alt1250/usock_handlers/alt1250_ioctl_ifreq.c +++ b/lte/alt1250/usock_handlers/alt1250_ioctl_ifreq.c @@ -399,14 +399,9 @@ int usockreq_ioctl_ifreq(FAR struct alt1250_s *dev, { ret = do_ifup(dev, req, usock_result, usock_xid, ackinfo); } - else if (if_req->ifr_flags & IFF_DOWN) - { - ret = do_ifdown(dev, req, usock_result, usock_xid, ackinfo); - } else { - dbg_alt1250("unexpected ifr_flags:0x%02x\n", if_req->ifr_flags); - *usock_result = -EINVAL; + ret = do_ifdown(dev, req, usock_result, usock_xid, ackinfo); } return ret; diff --git a/netutils/netinit/netinit.c b/netutils/netinit/netinit.c index f0017a056e2..6a72c3bfe2a 100644 --- a/netutils/netinit/netinit.c +++ b/netutils/netinit/netinit.c @@ -904,7 +904,7 @@ static int netinit_monitor(void) ninfo("Taking the link down\n"); - ifr.ifr_flags = IFF_DOWN; + ifr.ifr_flags = 0; ret = ioctl(sd, SIOCSIFFLAGS, (unsigned long)&ifr); if (ret < 0) { diff --git a/netutils/netlib/netlib_setifstatus.c b/netutils/netlib/netlib_setifstatus.c index 0c54277dfbd..6a36eaa9025 100644 --- a/netutils/netlib/netlib_setifstatus.c +++ b/netutils/netlib/netlib_setifstatus.c @@ -118,8 +118,6 @@ int netlib_ifdown(const char *ifname) /* Perform the ioctl to ifup flag */ - req.ifr_flags |= IFF_DOWN; - ret = ioctl(sockfd, SIOCSIFFLAGS, (unsigned long)&req); close(sockfd); }