[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090421183515.12548.1567.stgit@dev.haskins.net>
Date: Tue, 21 Apr 2009 14:35:15 -0400
From: Gregory Haskins <ghaskins@...ell.com>
To: linux-kernel@...r.kernel.org
Cc: kvm@...r.kernel.org, agraf@...e.de, pmullaney@...ell.com,
pmorreale@...ell.com, alext@...ell.com, anthony@...emonkey.ws,
rusty@...tcorp.com.au, netdev@...r.kernel.org, avi@...hat.com,
bhutchings@...arflare.com, andi@...stfloor.org, gregkh@...e.de,
chrisw@...s-sol.org, shemminger@...tta.com, alex.williamson@...com
Subject: [RFC PATCH v3 11/17] venet-tap: add the ability to set the client's
mac address via sysfs
From: Patrick Mullaney <pmullaney@...ell.com>
Signed-off-by: Patrick Mullaney <pmullaney@...ell.com>
Signed-off-by: Gregory Haskins <ghaskins@...ell.com>
---
drivers/vbus/devices/venet-tap.c | 35 ++++++++++++++++++++++++++++++++++-
1 files changed, 34 insertions(+), 1 deletions(-)
diff --git a/drivers/vbus/devices/venet-tap.c b/drivers/vbus/devices/venet-tap.c
index 5e093a0..33ede4c 100644
--- a/drivers/vbus/devices/venet-tap.c
+++ b/drivers/vbus/devices/venet-tap.c
@@ -1214,6 +1214,39 @@ host_mac_show(struct vbus_device *dev, struct vbus_device_attribute *attr,
static struct vbus_device_attribute attr_hmac =
__ATTR_RO(host_mac);
+
+static ssize_t
+cmac_store(struct vbus_device *dev, struct vbus_device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct venettap *priv = vdev_to_priv(dev);
+ const char *pbuf = buf;
+ unsigned int uc;
+ int i;
+
+ /*
+ * Format 00:11:22:33:44:55
+ */
+ if (count != 18)
+ return -EINVAL;
+
+ for (i = 2; i < 17; i += 3) {
+ if (pbuf[i] != ':')
+ return -EINVAL;
+ }
+
+ if (priv->vbus.opened)
+ return -EINVAL;
+
+ for (i = 0; i < ETH_ALEN; i++) {
+ sscanf(pbuf, "%x", &uc);
+ pbuf = pbuf + 3;
+ priv->cmac[i] = (u8)uc;
+ }
+
+ return count;
+}
+
static ssize_t
client_mac_show(struct vbus_device *dev, struct vbus_device_attribute *attr,
char *buf)
@@ -1224,7 +1257,7 @@ client_mac_show(struct vbus_device *dev, struct vbus_device_attribute *attr,
}
static struct vbus_device_attribute attr_cmac =
- __ATTR_RO(client_mac);
+ __ATTR(client_mac, S_IRUGO | S_IWUSR, client_mac_show, cmac_store);
static ssize_t
enabled_show(struct vbus_device *dev, struct vbus_device_attribute *attr,
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists