aboutsummaryrefslogtreecommitdiff
path: root/pfinet/iioctl-ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'pfinet/iioctl-ops.c')
-rw-r--r--pfinet/iioctl-ops.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/pfinet/iioctl-ops.c b/pfinet/iioctl-ops.c
index a6a0cbc8..637e9f5b 100644
--- a/pfinet/iioctl-ops.c
+++ b/pfinet/iioctl-ops.c
@@ -271,6 +271,31 @@ SIOCGIF (brdaddr, BRDADDR);
/* 37 SIOCGIFNETMASK -- Get netmask of a network interface. */
SIOCGIF (netmask, NETMASK);
+/* 39 SIOCGIFHWADDR -- Get the hardware address of a network interface. */
+error_t
+S_iioctl_siocgifhwaddr (io_t port,
+ ifname_t ifname,
+ sockaddr_t *addr)
+{
+ error_t err = 0;
+ struct device *dev;
+
+ if (!port)
+ return EOPNOTSUPP;
+
+ dev = get_dev (ifname);
+ if (!dev)
+ err = ENODEV;
+ else
+ {
+ memcpy (addr->sa_data, dev->dev_addr, dev->addr_len);
+ addr->sa_family = dev->type;
+ }
+
+ __mutex_unlock (&global_lock);
+ return err;
+}
+
/* 51 SIOCGIFMTU -- Get mtu of a network interface. */
error_t
S_iioctl_siocgifmtu (io_t port,