summaryrefslogtreecommitdiffstats
path: root/contrib/tcpdump/addrtoname.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tcpdump/addrtoname.c')
-rw-r--r--contrib/tcpdump/addrtoname.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/contrib/tcpdump/addrtoname.c b/contrib/tcpdump/addrtoname.c
index c8ad891..bb0f2f5 100644
--- a/contrib/tcpdump/addrtoname.c
+++ b/contrib/tcpdump/addrtoname.c
@@ -25,7 +25,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.108 2005/03/27 22:38:09 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.108.2.5 2005/04/25 08:43:05 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -44,12 +44,18 @@ struct rtentry; /* declarations in <net/if.h> */
#ifdef NETINET_ETHER_H_DECLARES_ETHER_NTOHOST
#include <netinet/ether.h>
#endif /* NETINET_ETHER_H_DECLARES_ETHER_NTOHOST */
-#endif /* USE_ETHER_NTOHOST */
#if !defined(HAVE_DECL_ETHER_NTOHOST) || !HAVE_DECL_ETHER_NTOHOST
+#ifndef HAVE_STRUCT_ETHER_ADDR
+struct ether_addr {
+ unsigned char ether_addr_octet[6];
+};
+#endif
extern int ether_ntohost(char *, const struct ether_addr *);
#endif
+#endif /* USE_ETHER_NTOHOST */
+
#include <pcap.h>
#include <pcap-namedb.h>
#include <signal.h>
@@ -61,6 +67,8 @@ extern int ether_ntohost(char *, const struct ether_addr *);
#include "addrtoname.h"
#include "llc.h"
#include "setsignal.h"
+#include "extract.h"
+#include "oui.h"
/*
* hash tables for whatever-to-name translations
@@ -69,6 +77,7 @@ extern int ether_ntohost(char *, const struct ether_addr *);
*/
#define HASHNAMESIZE 4096
+#define BUFSIZE 128
struct hnamemem {
u_int32_t addr;
@@ -169,7 +178,7 @@ intoa(u_int32_t addr)
static char buf[sizeof(".xxx.xxx.xxx.xxx")];
NTOHL(addr);
- cp = &buf[sizeof buf];
+ cp = buf + sizeof(buf);
*--cp = '\0';
n = 4;
@@ -454,17 +463,17 @@ lookup_protoid(const u_char *pi)
const char *
etheraddr_string(register const u_char *ep)
{
- register u_int i;
+ register u_int i, oui;
register char *cp;
register struct enamemem *tp;
- char buf[sizeof("00:00:00:00:00:00")];
+ char buf[BUFSIZE];
tp = lookup_emem(ep);
if (tp->e_name)
return (tp->e_name);
#ifdef USE_ETHER_NTOHOST
if (!nflag) {
- char buf2[128];
+ char buf2[BUFSIZE];
/*
* We don't cast it to "const struct ether_addr *"
@@ -479,14 +488,20 @@ etheraddr_string(register const u_char *ep)
}
#endif
cp = buf;
+ oui=EXTRACT_24BITS(ep);
*cp++ = hex[*ep >> 4 ];
*cp++ = hex[*ep++ & 0xf];
- for (i = 5; (int)--i >= 0;) {
- *cp++ = ':';
- *cp++ = hex[*ep >> 4 ];
- *cp++ = hex[*ep++ & 0xf];
- }
- *cp = '\0';
+ for (i = 5; (int)--i >= 0;) {
+ *cp++ = ':';
+ *cp++ = hex[*ep >> 4 ];
+ *cp++ = hex[*ep++ & 0xf];
+ }
+
+ if (!nflag) {
+ snprintf(cp,BUFSIZE," (oui %s)",
+ tok2str(oui_values,"Unknown",oui));
+ } else
+ *cp = '\0';
tp->e_name = strdup(buf);
return (tp->e_name);
}
@@ -600,7 +615,7 @@ isonsap_string(const u_char *nsap, register u_int nsap_length)
register struct enamemem *tp;
if (nsap_length < 1 || nsap_length > ISONSAP_MAX_LENGTH)
- error("isonsap_string: illegal length");
+ return ("isonsap_string: illegal length");
tp = lookup_nsap(nsap);
if (tp->e_name)
OpenPOWER on IntegriCloud