]> git.hungrycats.org Git - linux/commitdiff
[NET]: Add new sysfs attribute 'carrier' for net devices.
authorAndrew Morton <akpm@osdl.org>
Thu, 21 Oct 2004 14:55:58 +0000 (07:55 -0700)
committerDavid S. Miller <davem@nuts.davemloft.net>
Thu, 21 Oct 2004 14:55:58 +0000 (07:55 -0700)
From: Jesper Juhl <juhl-lkml@dif.dk>

The patch adds a new sysfs attribute called carrier for net devices that
exposes the result of netif_carrier_ok().  This allows a user to quickly
and easily determine if a given netdevice has carrier or not.  Reading
/sys/class/net/<interface>/carrier yields a '1' when there is a carrier and
a '0' when there is not.

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/net-sysfs.c

index 6cf0afc7b1c454708418bade5f9af9b1012e5cba..060f703659e83544283990912aa92c587938e41b 100644 (file)
@@ -126,8 +126,18 @@ static ssize_t show_broadcast(struct class_device *dev, char *buf)
        return -EINVAL;
 }
 
+static ssize_t show_carrier(struct class_device *dev, char *buf)
+{
+       struct net_device *netdev = to_net_dev(dev);
+       if (netif_running(netdev)) {
+               return sprintf(buf, fmt_dec, !!netif_carrier_ok(netdev));
+       }
+       return -EINVAL;
+}
+
 static CLASS_DEVICE_ATTR(address, S_IRUGO, show_address, NULL);
 static CLASS_DEVICE_ATTR(broadcast, S_IRUGO, show_broadcast, NULL);
+static CLASS_DEVICE_ATTR(carrier, S_IRUGO, show_carrier, NULL);
 
 /* read-write attributes */
 NETDEVICE_SHOW(mtu, fmt_dec);
@@ -186,6 +196,7 @@ static struct class_device_attribute *net_class_attributes[] = {
        &class_device_attr_type,
        &class_device_attr_address,
        &class_device_attr_broadcast,
+       &class_device_attr_carrier,
        NULL
 };