* and address to string conversion routines
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#ifdef HAVE_CASPER
#include <libcasper.h>
#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 <net/if.h>, which too defines a macro
- * named ND_UNREACHABLE.
- */
- #include "diag-control.h"
#include <net/if.h> /* Needed on some platforms */
#include <netinet/in.h> /* Needed on some platforms */
#include <netinet/if_ether.h>
* (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) {
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)];
}
const char *
-etheraddr_string(netdissect_options *ndo, const uint8_t *ep)
+mac48_string(netdissect_options *ndo, const uint8_t *ep)
{
int i;
char *cp;
*/
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)
}
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;
if (len == 0)
return ("<empty>");
- 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));
}
static const struct etherlist {
- const nd_mac_addr addr;
+ const nd_mac48 addr;
const char *name;
} etherlist[] = {
{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, "Broadcast" },
* 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.
/*
* 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)
{ 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" },
* 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)