This is an automated email from the ASF dual-hosted git repository.
pkarashchenko 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 1c7a9d282c Add mtu set and interface name set in ioctl
1c7a9d282c is described below
commit 1c7a9d282cb5ebc05a84a82c615b7f27c55eb6ba
Author: tangyusong1 <[email protected]>
AuthorDate: Wed Dec 7 17:22:02 2022 +0800
Add mtu set and interface name set in ioctl
Follow LinuxOS:linux-5.10.152\include\uapi\linux\sockios.h
Add SIOCSIFMTU and SIOCSIFNAME
Signed-off-by: tangyusong1 <[email protected]>
---
include/nuttx/net/ioctl.h | 2 ++
net/netdev/netdev_ioctl.c | 24 ++++++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/include/nuttx/net/ioctl.h b/include/nuttx/net/ioctl.h
index 6d68dae029..8ce23b7a7f 100644
--- a/include/nuttx/net/ioctl.h
+++ b/include/nuttx/net/ioctl.h
@@ -47,6 +47,7 @@
#define SIOCGIFNETMASK _SIOC(0x0007) /* Get network mask */
#define SIOCSIFNETMASK _SIOC(0x0008) /* Set network mask */
#define SIOCGIFMTU _SIOC(0x0009) /* Get MTU size */
+#define SIOCSIFMTU _SIOC(0x0033) /* Set MTU size */
/* IPv6 interface control operations */
@@ -72,6 +73,7 @@
#define SIOCGIFNAME _SIOC(0x002A) /* Get interface name string */
#define SIOCGIFINDEX _SIOC(0x002B) /* Get index based name string */
+#define SIOCSIFNAME _SIOC(0x0034) /* Set interface name string*/
/* Interface flags */
diff --git a/net/netdev/netdev_ioctl.c b/net/netdev/netdev_ioctl.c
index da189c90c9..e8f9e2f324 100644
--- a/net/netdev/netdev_ioctl.c
+++ b/net/netdev/netdev_ioctl.c
@@ -643,6 +643,7 @@ static ssize_t net_ioctl_ifreq_arglen(int cmd)
case SIOCSIFBRDADDR:
case SIOCGIFNETMASK:
case SIOCSIFNETMASK:
+ case SIOCSIFMTU:
case SIOCGIFMTU:
case SIOCGIFHWADDR:
case SIOCSIFHWADDR:
@@ -661,6 +662,7 @@ static ssize_t net_ioctl_ifreq_arglen(int cmd)
case SIOCACANSTDFILTER:
case SIOCDCANSTDFILTER:
case SIOCSCELLNETDEV:
+ case SIOCSIFNAME:
case SIOCGIFNAME:
case SIOCGIFINDEX:
return sizeof(struct ifreq);
@@ -731,6 +733,21 @@ static int netdev_ifr_ioctl(FAR struct socket *psock, int
cmd,
#endif
#ifdef CONFIG_NETDEV_IFINDEX
+ case SIOCSIFNAME: /* Set interface name */
+ {
+ FAR struct net_driver_s *tmpdev;
+ tmpdev = netdev_findbyindex(req->ifr_ifindex);
+ if (tmpdev != NULL)
+ {
+ strlcpy(tmpdev->d_ifname, req->ifr_name, IFNAMSIZ);
+ }
+ else
+ {
+ ret = -ENODEV;
+ }
+ }
+ break;
+
case SIOCGIFNAME: /* Get interface name */
{
FAR struct net_driver_s *tmpdev;
@@ -860,6 +877,13 @@ static int netdev_ifr_ioctl(FAR struct socket *psock, int
cmd,
case SIOCGIFMTU: /* Get MTU size */
req->ifr_mtu = NETDEV_PKTSIZE(dev);
break;
+ case SIOCSIFMTU: /* Set MTU size */
+ dev = netdev_ifr_dev(req);
+ if (dev)
+ {
+ NETDEV_PKTSIZE(dev) = req->ifr_mtu;
+ }
+ break;
#ifdef CONFIG_NET_ICMPv6_AUTOCONF
case SIOCIFAUTOCONF: /* Perform ICMPv6 auto-configuration */