X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/d584b1caba87f30e88e20941d6ac6e87c3e8751a..refs/heads/master:/addrtoname.c?ds=inline diff --git a/addrtoname.c b/addrtoname.c index 33ae2752..43bfc47d 100644 --- a/addrtoname.c +++ b/addrtoname.c @@ -22,9 +22,7 @@ * and address to string conversion routines */ -#ifdef HAVE_CONFIG_H #include -#endif #ifdef HAVE_CASPER #include @@ -71,17 +69,12 @@ #else /* HAVE_STRUCT_ETHER_ADDR */ struct ether_addr { /* Beware FreeBSD calls this "octet". */ - unsigned char ether_addr_octet[MAC_ADDR_LEN]; + unsigned char ether_addr_octet[MAC48_LEN]; }; #endif /* HAVE_STRUCT_ETHER_ADDR */ #endif /* what declares ether_ntohost() */ #ifdef NEED_NETINET_IF_ETHER_H - /* - * Include diag-control.h before , which too defines a macro - * named ND_UNREACHABLE. - */ - #include "diag-control.h" #include /* Needed on some platforms */ #include /* Needed on some platforms */ #include @@ -148,14 +141,15 @@ win32_gethostbyaddr(const char *addr, int len, int type) static struct hostent host; static char hostbuf[NI_MAXHOST]; char hname[NI_MAXHOST]; - struct sockaddr_in6 addr6; host.h_name = hostbuf; switch (type) { case AF_INET: return gethostbyaddr(addr, len, type); break; - case AF_INET6: +#ifdef AF_INET6 + case AF_INET6: { + struct sockaddr_in6 addr6; memset(&addr6, 0, sizeof(addr6)); addr6.sin6_family = AF_INET6; memcpy(&addr6.sin6_addr, addr, len); @@ -167,6 +161,8 @@ win32_gethostbyaddr(const char *addr, int len, int type) return &host; } break; + } +#endif /* AF_INET6 */ default: return NULL; } @@ -294,6 +290,7 @@ ipaddr_string(netdissect_options *ndo, const u_char *ap) * (2) Address is foreign and -f was given. (If -f was not * given, f_netmask and f_localnet are 0 and the test * evaluates to true) + * Both addr and f_netmask and f_localnet are in network byte order. */ if (!ndo->ndo_nflag && (addr & f_netmask) == f_localnet) { @@ -358,6 +355,7 @@ ip6addr_string(netdissect_options *ndo, const u_char *ap) /* * Do not print names if -n was given. */ +#ifdef AF_INET6 if (!ndo->ndo_nflag) { #ifdef HAVE_CASPER if (capdns != NULL) { @@ -383,6 +381,7 @@ ip6addr_string(netdissect_options *ndo, const u_char *ap) return (p->name); } } +#endif /* AF_INET6 */ cp = addrtostr6(ap, ntop_buf, sizeof(ntop_buf)); p->name = strdup(cp); if (p->name == NULL) @@ -526,8 +525,7 @@ lookup_nsap(netdissect_options *ndo, const u_char *nsap, k = (ensap[0] << 8) | ensap[1]; j = (ensap[2] << 8) | ensap[3]; i = (ensap[4] << 8) | ensap[5]; - } - else + } else i = j = k = 0; tp = &nsaptable[(i ^ j) & (HASHNAMESIZE-1)]; @@ -585,7 +583,7 @@ lookup_protoid(netdissect_options *ndo, const u_char *pi) } const char * -etheraddr_string(netdissect_options *ndo, const uint8_t *ep) +mac48_string(netdissect_options *ndo, const uint8_t *ep) { int i; char *cp; @@ -606,7 +604,7 @@ etheraddr_string(netdissect_options *ndo, const uint8_t *ep) */ struct ether_addr ea; - memcpy (&ea, ep, MAC_ADDR_LEN); + memcpy (&ea, ep, MAC48_LEN); if (ether_ntohost(buf2, &ea) == 0) { tp->e_name = strdup(buf2); if (tp->e_name == NULL) @@ -637,7 +635,16 @@ etheraddr_string(netdissect_options *ndo, const uint8_t *ep) } const char * -le64addr_string(netdissect_options *ndo, const uint8_t *ep) +eui64_string(netdissect_options *ndo, const uint8_t *ep) +{ + return (linkaddr_string(ndo, ep, LINKADDR_EUI64, EUI64_LEN)); +} + +/* + * EUI-64 with the rightmost octet first. + */ +const char * +eui64le_string(netdissect_options *ndo, const uint8_t *ep) { const unsigned int len = 8; u_int i; @@ -677,8 +684,8 @@ linkaddr_string(netdissect_options *ndo, const uint8_t *ep, if (len == 0) return (""); - if (type == LINKADDR_ETHER && len == MAC_ADDR_LEN) - return (etheraddr_string(ndo, ep)); + if (type == LINKADDR_MAC48 && len == MAC48_LEN) + return (mac48_string(ndo, ep)); if (type == LINKADDR_FRELAY) return (q922_string(ndo, ep, len)); @@ -925,7 +932,7 @@ init_protoidarray(netdissect_options *ndo) } static const struct etherlist { - const nd_mac_addr addr; + const nd_mac48 addr; const char *name; } etherlist[] = { {{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, "Broadcast" }, @@ -936,7 +943,7 @@ static const struct etherlist { * Initialize the ethers hash table. We take two different approaches * depending on whether or not the system provides the ethers name * service. If it does, we just wire in a few names at startup, - * and etheraddr_string() fills in the table on demand. If it doesn't, + * and mac48_string() fills in the table on demand. If it doesn't, * then we suck in the entire /etc/ethers file at startup. The idea * is that parsing the local file will be fast, but spinning through * all the ethers entries via NIS & next_etherent might be very slow. @@ -982,9 +989,9 @@ init_etherarray(netdissect_options *ndo) /* * Use YP/NIS version of name if available. */ - /* Same workaround as in etheraddr_string(). */ + /* Same workaround as in mac48_string(). */ struct ether_addr ea; - memcpy (&ea, el->addr, MAC_ADDR_LEN); + memcpy (&ea, el->addr, MAC48_LEN); if (ether_ntohost(name, &ea) == 0) { tp->e_name = strdup(name); if (tp->e_name == NULL) @@ -1116,7 +1123,7 @@ static const struct ipxsap_ent { { 0x030a, "GalacticommWorldgroupServer" }, { 0x030c, "IntelNetport2/HP JetDirect/HP Quicksilver" }, { 0x0320, "AttachmateGateway" }, - { 0x0327, "MicrosoftDiagnostiocs" }, + { 0x0327, "MicrosoftDiagnostics" }, { 0x0328, "WATCOM SQL Server" }, { 0x0335, "MultiTechSystems MultisynchCommServer" }, { 0x0343, "Xylogics RemoteAccessServer/LANModem" }, @@ -1238,7 +1245,7 @@ init_ipxsaparray(netdissect_options *ndo) * Initialize the address to name translation machinery. We map all * non-local IP addresses to numeric addresses if ndo->ndo_fflag is true * (i.e., to prevent blocking on the nameserver). localnet is the IP address - * of the local network. mask is its subnet mask. + * of the local network, mask is its subnet mask, both in network byte order. */ void init_addrtoname(netdissect_options *ndo, uint32_t localnet, uint32_t mask) @@ -1285,7 +1292,7 @@ newhnamemem(netdissect_options *ndo) static struct hnamemem *ptr = NULL; static u_int num = 0; - if (num <= 0) { + if (num == 0) { num = 64; ptr = (struct hnamemem *)calloc(num, sizeof (*ptr)); if (ptr == NULL) @@ -1305,7 +1312,7 @@ newh6namemem(netdissect_options *ndo) static struct h6namemem *ptr = NULL; static u_int num = 0; - if (num <= 0) { + if (num == 0) { num = 64; ptr = (struct h6namemem *)calloc(num, sizeof (*ptr)); if (ptr == NULL)