Commit 223b229b authored by Andy Shevchenko's avatar Andy Shevchenko Committed by David S. Miller

bridge: Use helpers to handle MAC address

Use
	%pM to print MAC
	mac_pton() to convert it from ASCII to binary format, and
	ether_addr_copy() to copy.
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarStephen Hemminger <stephen@networkplumber.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 53c81e95
...@@ -272,10 +272,7 @@ static ssize_t group_addr_show(struct device *d, ...@@ -272,10 +272,7 @@ static ssize_t group_addr_show(struct device *d,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct net_bridge *br = to_bridge(d); struct net_bridge *br = to_bridge(d);
return sprintf(buf, "%x:%x:%x:%x:%x:%x\n", return sprintf(buf, "%pM\n", br->group_addr);
br->group_addr[0], br->group_addr[1],
br->group_addr[2], br->group_addr[3],
br->group_addr[4], br->group_addr[5]);
} }
static ssize_t group_addr_store(struct device *d, static ssize_t group_addr_store(struct device *d,
...@@ -284,14 +281,11 @@ static ssize_t group_addr_store(struct device *d, ...@@ -284,14 +281,11 @@ static ssize_t group_addr_store(struct device *d,
{ {
struct net_bridge *br = to_bridge(d); struct net_bridge *br = to_bridge(d);
u8 new_addr[6]; u8 new_addr[6];
int i;
if (!ns_capable(dev_net(br->dev)->user_ns, CAP_NET_ADMIN)) if (!ns_capable(dev_net(br->dev)->user_ns, CAP_NET_ADMIN))
return -EPERM; return -EPERM;
if (sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", if (!mac_pton(buf, new_addr))
&new_addr[0], &new_addr[1], &new_addr[2],
&new_addr[3], &new_addr[4], &new_addr[5]) != 6)
return -EINVAL; return -EINVAL;
if (!is_link_local_ether_addr(new_addr)) if (!is_link_local_ether_addr(new_addr))
...@@ -306,8 +300,7 @@ static ssize_t group_addr_store(struct device *d, ...@@ -306,8 +300,7 @@ static ssize_t group_addr_store(struct device *d,
return restart_syscall(); return restart_syscall();
spin_lock_bh(&br->lock); spin_lock_bh(&br->lock);
for (i = 0; i < 6; i++) ether_addr_copy(br->group_addr, new_addr);
br->group_addr[i] = new_addr[i];
spin_unlock_bh(&br->lock); spin_unlock_bh(&br->lock);
br->group_addr_set = true; br->group_addr_set = true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment