summaryrefslogtreecommitdiff
path: root/pfinet/iioctl-ops.c
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@gnu.org>2007-10-13 18:30:31 +0000
committerThomas Schwinge <tschwinge@gnu.org>2007-10-13 18:30:31 +0000
commitfe7832186ac403d2cf71c6429973a698d5fc0bf5 (patch)
tree4cdb195f57a5ae966f2a7685978be8055818485d /pfinet/iioctl-ops.c
parent5fc6a5ece060255277783c10875040cdc6a9571e (diff)
2007-10-13 Marco Gerards <metgerards@student.han.nl>
* iioctl-ops.c (S_iioctl_siocgifhwaddr): New function.
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,