From db73295accbec0c6513817f0a64a92018592bb26 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 15 Aug 2014 13:18:50 +0200 Subject: util: never use ether_ntoa(), since it formats with %x, not %02x, which makes ethernet addresses look funny --- src/shared/socket-util.c | 19 +++++++++++++++++++ src/shared/socket-util.h | 5 +++++ 2 files changed, 24 insertions(+) (limited to 'src/shared') diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 38729a25b8..e3e54e8e08 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -727,3 +727,22 @@ bool sockaddr_equal(const union sockaddr_union *a, const union sockaddr_union *b return false; } + +char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]) { + assert(addr); + assert(buffer); + + /* Like ether_ntoa() but uses %02x instead of %x to print + * ethernet addresses, which makes them look less funny. Also, + * doesn't use a static buffer. */ + + sprintf(buffer, "%02x:%02x:%02x:%02x:%02x:%02x", + addr->ether_addr_octet[0], + addr->ether_addr_octet[1], + addr->ether_addr_octet[2], + addr->ether_addr_octet[3], + addr->ether_addr_octet[4], + addr->ether_addr_octet[5]); + + return buffer; +} diff --git a/src/shared/socket-util.h b/src/shared/socket-util.h index 0b4998d044..07d0aff72b 100644 --- a/src/shared/socket-util.h +++ b/src/shared/socket-util.h @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -111,3 +112,7 @@ int netlink_family_to_string_alloc(int b, char **s); int netlink_family_from_string(const char *s) _pure_; bool sockaddr_equal(const union sockaddr_union *a, const union sockaddr_union *b); + +#define ETHER_ADDR_TO_STRING_MAX (3*6) + +char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]); -- cgit v1.2.3-54-g00ecf