summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2010-03-09 18:12:39 +0300
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2010-03-09 18:12:39 +0300
commit4e25f49680e96da86840ecf9b65c724edfdf4e20 (patch)
treec8cd10054ab9aa75393b45917f1e71ab355cfc05
parentec799d60f6cd3f41041b57efe3963c28dda94d4a (diff)
downloadtcpdump-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.c28
-rw-r--r--addrtoname.h1
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);