]> The Tcpdump Group git mirrors - tcpdump/blobdiff - addrtoname.c
Fix the pointer tests in the non-ndoified TTEST2() macro as well.
[tcpdump] / addrtoname.c
index 64ec7ab7e056add30ba604f723bb41657133d942..29826dfbc7e2848a0ddd87d153e7a6075c86779b 100644 (file)
@@ -23,7 +23,7 @@
  */
 #ifndef lint
 static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.114 2005-07-26 17:33:56 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.119 2007-08-08 14:06:34 hannes Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -68,6 +68,10 @@ extern int ether_ntohost(char *, const struct ether_addr *);
 #include "extract.h"
 #include "oui.h"
 
+#ifndef ETHER_ADDR_LEN
+#define ETHER_ADDR_LEN 6
+#endif
+
 /*
  * hash tables for whatever-to-name translations
  *
@@ -75,7 +79,6 @@ extern int ether_ntohost(char *, const struct ether_addr *);
  */
 
 #define HASHNAMESIZE 4096
-#define BUFSIZE 128
 
 struct hnamemem {
        u_int32_t addr;
@@ -83,13 +86,12 @@ struct hnamemem {
        struct hnamemem *nxt;
 };
 
-struct hnamemem hnametable[HASHNAMESIZE];
-struct hnamemem tporttable[HASHNAMESIZE];
-struct hnamemem uporttable[HASHNAMESIZE];
-struct hnamemem eprototable[HASHNAMESIZE];
-struct hnamemem dnaddrtable[HASHNAMESIZE];
-struct hnamemem llcsaptable[HASHNAMESIZE];
-struct hnamemem ipxsaptable[HASHNAMESIZE];
+static struct hnamemem hnametable[HASHNAMESIZE];
+static struct hnamemem tporttable[HASHNAMESIZE];
+static struct hnamemem uporttable[HASHNAMESIZE];
+static struct hnamemem eprototable[HASHNAMESIZE];
+static struct hnamemem dnaddrtable[HASHNAMESIZE];
+static struct hnamemem ipxsaptable[HASHNAMESIZE];
 
 #if defined(INET6) && defined(WIN32)
 /*
@@ -138,7 +140,7 @@ struct h6namemem {
        struct h6namemem *nxt;
 };
 
-struct h6namemem h6nametable[HASHNAMESIZE];
+static struct h6namemem h6nametable[HASHNAMESIZE];
 #endif /* INET6 */
 
 struct enamemem {
@@ -151,9 +153,9 @@ struct enamemem {
        struct enamemem *e_nxt;
 };
 
-struct enamemem enametable[HASHNAMESIZE];
-struct enamemem nsaptable[HASHNAMESIZE];
-struct enamemem bytestringtable[HASHNAMESIZE];
+static struct enamemem enametable[HASHNAMESIZE];
+static struct enamemem nsaptable[HASHNAMESIZE];
+static struct enamemem bytestringtable[HASHNAMESIZE];
 
 struct protoidmem {
        u_int32_t p_oui;
@@ -162,7 +164,7 @@ struct protoidmem {
        struct protoidmem *p_nxt;
 };
 
-struct protoidmem protoidtable[HASHNAMESIZE];
+static struct protoidmem protoidtable[HASHNAMESIZE];
 
 /*
  * A faster replacement for inet_ntoa().
@@ -309,7 +311,7 @@ getname6(const u_char *ap)
 }
 #endif /* INET6 */
 
-static char hex[] = "0123456789abcdef";
+static const char hex[] = "0123456789abcdef";
 
 
 /* Find the hash node that corresponds the ether address 'ep' */
@@ -506,14 +508,20 @@ etheraddr_string(register const u_char *ep)
 }
 
 const char *
-linkaddr_string(const u_char *ep, const unsigned int len)
+linkaddr_string(const u_char *ep, const unsigned int type, const unsigned int len)
 {
        register u_int i;
        register char *cp;
        register struct enamemem *tp;
 
-       if (len == 6)   /* XXX not totally correct... */
-               return etheraddr_string(ep);
+       if (len == 0)
+               return ("<empty>");
+
+       if (type == LINKADDR_ETHER && len == ETHER_ADDR_LEN)
+               return (etheraddr_string(ep));
+
+       if (type == LINKADDR_FRELAY)
+               return (q922_string(ep));
 
        tp = lookup_bytestring(ep, len);
        if (tp->e_name)
@@ -586,25 +594,6 @@ protoid_string(register const u_char *pi)
        return (tp->p_name);
 }
 
-const char *
-llcsap_string(u_char sap)
-{
-       register struct hnamemem *tp;
-       register u_int32_t i = sap;
-       char buf[sizeof("sap 00")];
-
-       for (tp = &llcsaptable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
-               if (tp->addr == i)
-                       return (tp->name);
-
-       tp->addr = i;
-       tp->nxt = newhnamemem();
-
-       snprintf(buf, sizeof(buf), "sap %02x", sap & 0xff);
-       tp->name = strdup(buf);
-       return (tp->name);
-}
-
 #define ISONSAP_MAX_LENGTH 20
 const char *
 isonsap_string(const u_char *nsap, register u_int nsap_length)
@@ -759,7 +748,7 @@ init_eprotoarray(void)
        }
 }
 
-static struct protoidlist {
+static const struct protoidlist {
        const u_char protoid[5];
        const char *name;
 } protoidlist[] = {
@@ -780,7 +769,7 @@ init_protoidarray(void)
 {
        register int i;
        register struct protoidmem *tp;
-       struct protoidlist *pl;
+       const struct protoidlist *pl;
        u_char protoid[5];
 
        protoid[0] = 0;
@@ -804,7 +793,7 @@ init_protoidarray(void)
        }
 }
 
-static struct etherlist {
+static const struct etherlist {
        const u_char addr[6];
        const char *name;
 } etherlist[] = {
@@ -829,7 +818,7 @@ static struct etherlist {
 static void
 init_etherarray(void)
 {
-       register struct etherlist *el;
+       register const struct etherlist *el;
        register struct enamemem *tp;
 #ifdef USE_ETHER_NTOHOST
        char name[256];
@@ -873,41 +862,7 @@ init_etherarray(void)
        }
 }
 
-static struct tok llcsap_db[] = {
-       { LLCSAP_NULL,          "null" },
-       { LLCSAP_8021B_I,       "802.1b-gsap" },
-       { LLCSAP_8021B_G,       "802.1b-isap" },
-       { LLCSAP_IP,            "ip-sap" },
-       { LLCSAP_PROWAYNM,      "proway-nm" },
-       { LLCSAP_8021D,         "802.1d" },
-       { LLCSAP_RS511,         "eia-rs511" },
-       { LLCSAP_ISO8208,       "x.25/llc2" },
-       { LLCSAP_PROWAY,        "proway" },
-       { LLCSAP_SNAP,          "snap" },
-       { LLCSAP_IPX,           "IPX" },
-       { LLCSAP_NETBEUI,       "netbeui" },
-       { LLCSAP_ISONS,         "iso-clns" },
-       { LLCSAP_GLOBAL,        "global" },
-       { 0,                    NULL }
-};
-
-static void
-init_llcsaparray(void)
-{
-       register int i;
-       register struct hnamemem *table;
-
-       for (i = 0; llcsap_db[i].s != NULL; i++) {
-               table = &llcsaptable[llcsap_db[i].v];
-               while (table->name)
-                       table = table->nxt;
-               table->name = llcsap_db[i].s;
-               table->addr = llcsap_db[i].v;
-               table->nxt = newhnamemem();
-       }
-}
-
-static struct tok ipxsap_db[] = {
+static const struct tok ipxsap_db[] = {
        { 0x0000, "Unknown" },
        { 0x0001, "User" },
        { 0x0002, "User Group" },
@@ -1163,7 +1118,6 @@ init_addrtoname(u_int32_t localnet, u_int32_t mask)
        init_etherarray();
        init_servarray();
        init_eprotoarray();
-       init_llcsaparray();
        init_protoidarray();
        init_ipxsaparray();
 }