From: Stefan Assmann <sassmann@redhat.com>
To: David Miller <davem@davemloft.net>
Cc: abadea@ixiacom.com, bhutchings@solarflare.com,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
gospo@redhat.com, gregory.v.rose@intel.com,
alexander.h.duyck@intel.com, leedom@chelsio.com,
harald@redhat.com
Subject: Re: [PATCH net-next] sysfs: add entry to indicate network interfaces with random MAC address
Date: Wed, 21 Jul 2010 10:10:08 +0200 [thread overview]
Message-ID: <4C46AB60.5060008@redhat.com> (raw)
In-Reply-To: <20100720.131839.134093789.davem@davemloft.net>
On 20.07.2010 22:18, David Miller wrote:
> From: Stefan Assmann <sassmann@redhat.com>
> Date: Tue, 20 Jul 2010 14:17:30 +0200
>
>> On 20.07.2010 13:58, Alex Badea wrote:
>>> Hi,
>>>
>>> On 07/20/2010 02:47 PM, Stefan Assmann wrote:
>>>>> What about devices that 'steal' MAC addresses from slave devices?
>>>
>>> Might I suggest an attribute such as "address_type", which could report
>>> "permanent", "random", "stolen", or something else in the future?
>>
>> In case there's demand for such a multi-purpose attribute I see no
>> reason to object. More thoughts on this?
>
> I think this is a great idea.
>
> Now it makes sense to use a new 'u8' in struct netdevice or similar to
> store this, since we'll have more than a boolean here.
>
I put Alex' idea into code for further discussion, keeping the names
mentioned here until we agree on the scope of this attribute. When we
have settled I'll post a patch with proper patch description.
Stefan
---
include/linux/etherdevice.h | 14 ++++++++++++++
include/linux/netdevice.h | 6 ++++++
net/core/net-sysfs.c | 2 ++
3 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index 3d7a668..f15cac8 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -127,6 +127,20 @@ static inline void random_ether_addr(u8 *addr)
}
/**
+ * dev_hw_addr_random - Create random MAC and set device flag
+ * @dev: pointer to net_device structure
+ * @addr: Pointer to a six-byte array containing the Ethernet address
+ *
+ * Generate random MAC to be used by a device and set addr_type
+ * so the state can be read by sysfs and be used by udev.
+ */
+static inline void dev_hw_addr_random(struct net_device *dev, u8 *hwaddr)
+{
+ dev->addr_type |= NET_ADDR_RANDOM;
+ random_ether_addr(hwaddr);
+}
+
+/**
* compare_ether_addr - Compare two Ethernet addresses
* @addr1: Pointer to a six-byte array containing the Ethernet address
* @addr2: Pointer other six-byte array containing the Ethernet address
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index b626289..2718895 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -66,6 +66,11 @@ struct wireless_dev;
#define HAVE_FREE_NETDEV /* free_netdev() */
#define HAVE_NETDEV_PRIV /* netdev_priv() */
+/* hardware address types */
+#define NET_ADDR_PERM 0 /* address is permanent (default) */
+#define NET_ADDR_RANDOM 1 /* address is generated randomly */
+#define NET_ADDR_STOLEN 2 /* address is stolen from other device */
+
/* Backlog congestion levels */
#define NET_RX_SUCCESS 0 /* keep 'em coming, baby */
#define NET_RX_DROP 1 /* packet dropped */
@@ -920,6 +925,7 @@ struct net_device {
/* Interface address info. */
unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
unsigned char addr_len; /* hardware address length */
+ unsigned char addr_type; /* hardware address type */
unsigned short dev_id; /* for shared network cards */
spinlock_t addr_list_lock;
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index d2b5965..052ab14 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -96,6 +96,7 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr,
NETDEVICE_SHOW(dev_id, fmt_hex);
NETDEVICE_SHOW(addr_len, fmt_dec);
+NETDEVICE_SHOW(addr_type, fmt_dec);
NETDEVICE_SHOW(iflink, fmt_dec);
NETDEVICE_SHOW(ifindex, fmt_dec);
NETDEVICE_SHOW(features, fmt_long_hex);
@@ -296,6 +297,7 @@ static ssize_t show_ifalias(struct device *dev,
static struct device_attribute net_class_attributes[] = {
__ATTR(addr_len, S_IRUGO, show_addr_len, NULL),
+ __ATTR(addr_type, S_IRUGO, show_addr_type, NULL),
__ATTR(dev_id, S_IRUGO, show_dev_id, NULL),
__ATTR(ifalias, S_IRUGO | S_IWUSR, show_ifalias, store_ifalias),
__ATTR(iflink, S_IRUGO, show_iflink, NULL),
--
1.7.1
next prev parent reply other threads:[~2010-07-21 8:10 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-20 10:50 [PATCH net-next] sysfs: add entry to indicate network interfaces with random MAC address Stefan Assmann
2010-07-20 11:20 ` Ben Hutchings
2010-07-20 11:47 ` Stefan Assmann
2010-07-20 11:58 ` Alex Badea
2010-07-20 12:17 ` Stefan Assmann
2010-07-20 20:18 ` David Miller
2010-07-21 8:10 ` Stefan Assmann [this message]
2010-07-21 13:54 ` Ben Hutchings
2010-07-22 12:50 ` [PATCH net-next] sysfs: add attribute to indicate hw address assignment type Stefan Assmann
2010-07-22 14:07 ` Ben Hutchings
2010-07-22 14:47 ` Stefan Assmann
2010-07-25 3:50 ` David Miller
2010-07-20 12:07 ` [PATCH net-next] sysfs: add entry to indicate network interfaces with random MAC address Ben Hutchings
2010-07-20 12:41 ` Stefan Assmann
2010-07-20 14:29 ` Ben Hutchings
2010-07-20 20:17 ` David Miller
2010-07-20 21:18 ` Stephen Hemminger
2010-07-20 21:20 ` David Miller
2010-07-21 6:26 ` Harald Hoyer
2010-07-21 6:34 ` David Miller
2010-07-21 6:47 ` Harald Hoyer
2010-07-21 15:07 ` Andy Gospodarek
2010-07-21 16:34 ` Casey Leedom
2010-07-21 17:28 ` Stephen Hemminger
2010-07-21 17:32 ` David Miller
2010-07-21 18:29 ` Casey Leedom
2010-07-21 18:39 ` David Miller
2010-07-21 19:25 ` Casey Leedom
2010-07-21 18:43 ` Rose, Gregory V
2010-07-21 18:48 ` David Miller
2010-07-21 18:50 ` David Miller
2010-07-21 19:02 ` Rose, Gregory V
2010-07-21 19:33 ` David Miller
2010-07-21 19:35 ` Rose, Gregory V
2010-07-22 7:12 ` Ian Campbell
2010-07-22 6:53 ` Stefan Assmann
2010-07-23 0:26 ` Casey Leedom
2010-07-23 8:08 ` Stefan Assmann
2010-07-23 16:35 ` Casey Leedom
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C46AB60.5060008@redhat.com \
--to=sassmann@redhat.com \
--cc=abadea@ixiacom.com \
--cc=alexander.h.duyck@intel.com \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=gospo@redhat.com \
--cc=gregory.v.rose@intel.com \
--cc=harald@redhat.com \
--cc=leedom@chelsio.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.