]> The Tcpdump Group git mirrors - tcpdump/commitdiff
addrtoname.[ch]: add a printer for Little-Endian 64-bit address
authorDmitry Eremin-Solenikov <[email protected]>
Tue, 9 Mar 2010 15:12:39 +0000 (18:12 +0300)
committerDmitry Eremin-Solenikov <[email protected]>
Tue, 9 Mar 2010 15:12:39 +0000 (18:12 +0300)
Signed-off-by: Dmitry Eremin-Solenikov <[email protected]>
addrtoname.c
addrtoname.h

index 895f149245b74080fc781afbe17a987ce12c68f5..275bcd9b404e398d69216154917497eebfe756e7 100644 (file)
@@ -507,6 +507,34 @@ etheraddr_string(register const u_char *ep)
        return (tp->e_name);
 }
 
+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)
 {
index 1df204a941f483bae06960e6056e7c5f631c87db..cd5c41f4a5ff1e57ffd7d8939266a958d135d168 100644 (file)
@@ -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);