This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push: new ba9ef06970 tun: add ioctl cmd TUNGETIFF implement ba9ef06970 is described below commit ba9ef0697079a278dac9c2d59a97269de1e79395 Author: zhanghongyu <zhanghon...@xiaomi.com> AuthorDate: Tue Dec 20 16:32:20 2022 +0800 tun: add ioctl cmd TUNGETIFF implement Signed-off-by: zhanghongyu <zhanghon...@xiaomi.com> --- drivers/net/tun.c | 16 ++++++++++++++-- include/nuttx/net/ioctl.h | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index ecffb10b07..751efeaf2d 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1177,13 +1177,13 @@ static int tun_ioctl(FAR struct file *filep, int cmd, unsigned long arg) FAR struct tun_device_s *priv = filep->f_priv; int ret = OK; - if (cmd == TUNSETIFF && priv == NULL) + if (cmd == TUNSETIFF) { uint8_t free_tuns; int intf; FAR struct ifreq *ifr = (FAR struct ifreq *)arg; - if (ifr == NULL || + if (priv != NULL || ifr == NULL || ((ifr->ifr_flags & IFF_MASK) != IFF_TUN && (ifr->ifr_flags & IFF_MASK) != IFF_TAP)) { @@ -1223,6 +1223,18 @@ static int tun_ioctl(FAR struct file *filep, int cmd, unsigned long arg) strlcpy(ifr->ifr_name, priv->dev.d_ifname, IFNAMSIZ); nxmutex_unlock(&tun->lock); + return OK; + } + else if (cmd == TUNGETIFF) + { + FAR struct ifreq *ifr = (FAR struct ifreq *)arg; + if (priv == NULL || ifr == NULL) + { + return -EINVAL; + } + + strlcpy(ifr->ifr_name, priv->dev.d_ifname, IFNAMSIZ); + return OK; } diff --git a/include/nuttx/net/ioctl.h b/include/nuttx/net/ioctl.h index 4e82bb440c..9ba5635ab4 100644 --- a/include/nuttx/net/ioctl.h +++ b/include/nuttx/net/ioctl.h @@ -106,6 +106,7 @@ /* TUN/TAP driver ***********************************************************/ #define TUNSETIFF _SIOC(0x0028) /* Set TUN/TAP interface */ +#define TUNGETIFF _SIOC(0x0035) /* Get TUN/TAP interface */ /* Telnet driver ************************************************************/