Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 203743
b: refs/heads/master
c: c1f7942
h: refs/heads/master
i:
  203741: ef97ca4
  203739: bdf06ad
  203735: c8ac1be
  203727: 81e49f1
  203711: f0af2da
v: v3
  • Loading branch information
Stefan Assmann authored and David S. Miller committed Jul 25, 2010
1 parent 0588ef3 commit 11b84a5
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 55bad82385f036a844429ff8989732f0ea3bfff9
refs/heads/master: c1f79426e2df5ef96fe3e76de6c7606d15bf390b
14 changes: 14 additions & 0 deletions trunk/include/linux/etherdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,20 @@ static inline void random_ether_addr(u8 *addr)
addr [0] |= 0x02; /* set local assignment bit (IEEE802) */
}

/**
* 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_assign_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_assign_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
Expand Down
6 changes: 6 additions & 0 deletions trunk/include/linux/netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ struct wireless_dev;
#define HAVE_FREE_NETDEV /* free_netdev() */
#define HAVE_NETDEV_PRIV /* netdev_priv() */

/* hardware address assignment 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 */
Expand Down Expand Up @@ -919,6 +924,7 @@ struct net_device {

/* Interface address info. */
unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
unsigned char addr_assign_type; /* hw address assignment type */
unsigned char addr_len; /* hardware address length */
unsigned short dev_id; /* for shared network cards */

Expand Down
2 changes: 2 additions & 0 deletions trunk/net/core/net-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr,
}

NETDEVICE_SHOW(dev_id, fmt_hex);
NETDEVICE_SHOW(addr_assign_type, fmt_dec);
NETDEVICE_SHOW(addr_len, fmt_dec);
NETDEVICE_SHOW(iflink, fmt_dec);
NETDEVICE_SHOW(ifindex, fmt_dec);
Expand Down Expand Up @@ -295,6 +296,7 @@ static ssize_t show_ifalias(struct device *dev,
}

static struct device_attribute net_class_attributes[] = {
__ATTR(addr_assign_type, S_IRUGO, show_addr_assign_type, NULL),
__ATTR(addr_len, S_IRUGO, show_addr_len, NULL),
__ATTR(dev_id, S_IRUGO, show_dev_id, NULL),
__ATTR(ifalias, S_IRUGO | S_IWUSR, show_ifalias, store_ifalias),
Expand Down

0 comments on commit 11b84a5

Please sign in to comment.