diff options
author | Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 2010-03-09 18:12:39 +0300 |
---|---|---|
committer | Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 2010-03-09 18:12:39 +0300 |
commit | 4e25f49680e96da86840ecf9b65c724edfdf4e20 (patch) | |
tree | c8cd10054ab9aa75393b45917f1e71ab355cfc05 | |
parent | ec799d60f6cd3f41041b57efe3963c28dda94d4a (diff) | |
download | tcpdump-4e25f49680e96da86840ecf9b65c724edfdf4e20.tar.gz |
addrtoname.[ch]: add a printer for Little-Endian 64-bit address
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
-rw-r--r-- | addrtoname.c | 28 | ||||
-rw-r--r-- | addrtoname.h | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/addrtoname.c b/addrtoname.c index 895f1492..275bcd9b 100644 --- a/addrtoname.c +++ b/addrtoname.c @@ -508,6 +508,34 @@ etheraddr_string(register const u_char *ep) } const char * +le64addr_string(const u_char *ep) +{ + const unsigned int len = 8; + register u_int i; + register char *cp; + register struct enamemem *tp; + char buf[BUFSIZE]; + + tp = lookup_bytestring(ep, len); + if (tp->e_name) + return (tp->e_name); + + cp = buf; + for (i = len; i > 0 ; --i) { + *cp++ = hex[*(ep + i - 1) >> 4]; + *cp++ = hex[*(ep + i - 1) & 0xf]; + *cp++ = ':'; + } + cp --; + + *cp = '\0'; + + tp->e_name = strdup(buf); + + return (tp->e_name); +} + +const char * linkaddr_string(const u_char *ep, const unsigned int type, const unsigned int len) { register u_int i; diff --git a/addrtoname.h b/addrtoname.h index 1df204a9..cd5c41f4 100644 --- a/addrtoname.h +++ b/addrtoname.h @@ -34,6 +34,7 @@ enum { extern const char *linkaddr_string(const u_char *, const unsigned int, const unsigned int); extern const char *etheraddr_string(const u_char *); +extern const char *le64addr_string(const u_char *); extern const char *etherproto_string(u_short); extern const char *tcpport_string(u_short); extern const char *udpport_string(u_short); |