From: Harvey Harrison <harvey.harrison@gmail.com>
To: David Miller <davem@davemloft.net>
Cc: johannes@sipsolutions.net, anders@anduras.de,
netdev@vger.kernel.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: [RFC PATCHv3] printk: add %pM format specifier for MAC addresses
Date: Mon, 27 Oct 2008 12:59:02 -0700 [thread overview]
Message-ID: <1225137542.5396.10.camel@brick> (raw)
In-Reply-To: <20081027.123805.134354592.davem@davemloft.net>
Add format specifiers for printing out six colon-separated bytes:
MAC addresses (%pM):
xx:xx:xx:xx:xx:xx
%#pM is also supported and omits the colon separators.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
Dave, this passes testing here, but I was wondering if perhaps it would be
better to allow a length to be specified as well, which would allow:
%pM6 for mac addresses, etc as there seem a lot of places in kernel that
print out a list of colon separated bytes of various lengths.
But if that was added, it may be more natural to call it
%pB (bytes)
%pW (words)
Then mac addresses would be %pB6
IPv6 addresses would be %pW8 (8 words)
It would be trivial to add, but maybe I'm overthinking this. In any event,
this patch only adds %pM for mac addresses.
lib/vsprintf.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index a013bbc..2025305 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -581,6 +581,23 @@ static char *resource_string(char *buf, char *end, struct resource *res, int fie
return string(buf, end, sym, field_width, precision, flags);
}
+static char *mac_address(char *buf, char *end, u8 *addr, int field_width,
+ int precision, int flags)
+{
+ char mac_addr[6 * 3]; /* (6 * 2 hex digits), 5 colons and trailing zero */
+ char *p = mac_addr;
+ int i;
+
+ for (i = 0; i < 6; i++) {
+ p = pack_hex_byte(p, addr[i]);
+ if (!(flags & SPECIAL) && i != 5)
+ *p++ = ':';
+ }
+ *p = '\0';
+
+ return string(buf, end, mac_addr, field_width, precision, flags & ~SPECIAL);
+}
+
/*
* Show a '%p' thing. A kernel extension is that the '%p' is followed
* by an extra set of alphanumeric characters that are extended format
@@ -592,6 +609,8 @@ static char *resource_string(char *buf, char *end, struct resource *res, int fie
* - 'S' For symbolic direct pointers
* - 'R' For a struct resource pointer, it prints the range of
* addresses (not the name nor the flags)
+ * - 'M' For a 6-byte MAC address, it prints the address in the
+ * usual colon-separated hex notation
*
* Note: The difference between 'S' and 'F' is that on ia64 and ppc64
* function pointers are really function descriptors, which contain a
@@ -607,6 +626,8 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, int field
return symbol_string(buf, end, ptr, field_width, precision, flags);
case 'R':
return resource_string(buf, end, ptr, field_width, precision, flags);
+ case 'M':
+ return mac_address(buf, end, ptr, field_width, precision, flags);
}
flags |= SMALL;
if (field_width == -1) {
--
1.6.0.3.729.g6ea410
next prev parent reply other threads:[~2008-10-27 20:01 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1224892008.3919.27.camel@johannes.berg>
[not found] ` <49035AF0.6040700@anduras.de>
[not found] ` <1225008096.3478.3.camel@johannes.berg>
[not found] ` <20081026.010329.11475786.davem@davemloft.net>
[not found] ` <1225009308.3478.22.camel@johannes.berg>
[not found] ` <1225009822.3478.30.camel@johannes.berg>
[not found] ` <1225047674.10060.10.camel@brick>
[not found] ` <1225049591.3746.0.camel@johannes.berg>
[not found] ` <1225049929.10060.11.camel@brick>
[not found] ` <1225050015.3746.2.camel@johannes.berg>
[not found] ` <1225060789.10060.13.camel@brick>
2008-10-27 0:31 ` [RFC PATCHv2] printk: add the %pM, %p4, %p6 format specifiers Harvey Harrison
2008-10-27 1:21 ` Frans Pop
2008-10-27 2:08 ` H. Peter Anvin
2008-10-27 6:59 ` Johannes Berg
2008-10-27 16:28 ` Harvey Harrison
2008-10-27 19:38 ` David Miller
2008-10-27 19:47 ` Johannes Berg
2008-10-27 19:59 ` Harvey Harrison [this message]
2008-10-27 21:55 ` [RFC PATCHv3] printk: add %pM format specifier for MAC addresses Joe Perches
2008-10-27 22:46 ` David Miller
2008-10-27 22:47 ` David Miller
2008-10-27 23:14 ` Harvey Harrison
2008-10-27 23:31 ` Alexey Dobriyan
2008-10-27 23:48 ` Joe Perches
2008-10-28 8:04 ` Johannes Berg
2008-10-27 23:55 ` David Miller
2008-10-28 0:05 ` Harvey Harrison
2008-10-28 0:22 ` Joe Perches
2008-10-28 8:06 ` Johannes Berg
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=1225137542.5396.10.camel@brick \
--to=harvey.harrison@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=anders@anduras.de \
--cc=davem@davemloft.net \
--cc=johannes@sipsolutions.net \
--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.