Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Kernel v2.6.25-rc7 /net/ethernet/eth.c

Filename:/net/ethernet/eth.c
Lines Added:27
Lines Deleted:3
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25-rc9-git1  2.6.25-rc9-git2  2.6.25-rc9-git3  2.6.25 

Location
[  2.6.25-rc7
  [  net
    [  ethernet
       o  eth.c

Patch

diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c
index 6b2e454..a7b4175 100644
--- a/net/ethernet/eth.c
+++ b/net/ethernet/eth.c
@@ -359,10 +359,34 @@ struct net_device *alloc_etherdev_mq(int sizeof_priv, unsigned int queue_count)
 }
 EXPORT_SYMBOL(alloc_etherdev_mq);
 
-char *print_mac(char *buf, const u8 *addr)
+static size_t _format_mac_addr(char *buf, int buflen,
+            const unsigned char *addr, int len)
 {
-   sprintf(buf, MAC_FMT,
-      addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+   int i;
+   char *cp = buf;
+
+   for (i = 0; i < len; i++) {
+      cp += scnprintf(cp, buflen - (cp - buf), "%02x", addr[i]);
+      if (i == len - 1)
+         break;
+      cp += strlcpy(cp, ":", buflen - (cp - buf));
+   }
+   return cp - buf;
+}
+
+ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len)
+{
+   size_t l;
+
+   l = _format_mac_addr(buf, PAGE_SIZE, addr, len);
+   l += strlcpy(buf + l, "\n", PAGE_SIZE - l);
+   return ((ssize_t) l);
+}
+EXPORT_SYMBOL(sysfs_format_mac);
+
+char *print_mac(char *buf, const unsigned char *addr)
+{
+   _format_mac_addr(buf, MAC_BUF_SIZE, addr, ETH_ALEN);
    return buf;
 }
 EXPORT_SYMBOL(print_mac);


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.