Hello, I'm using nmap on openbsd, following -current, and recently it stopped working. I get the following message :
Starting Nmap 5.51 ( http://nmap.org ) at 2011-11-15 19:05 CET Warning: Unable to get hardware address for interface em0 -- skipping it. WARNING: Unable to find appropriate interface for system route to <IP of gateway> nexthost: failed to determine route to <target> QUITTING! The message comes from nmap-5.51/nmap-5.51/libnetutil/netutil.cc : if (eth_get(ethsd, ðaddr) != 0) { netutil_error("Warning: Unable to get hardware address for interface %s continue; } and eth_get is defined in libdnet-1.12/libdnet-1.12/src/eth-bsd.c : int eth_get(eth_t *e, eth_addr_t *ea) { struct if_msghdr *ifm; struct sockaddr_dl *sdl; struct addr ha; u_char *p, *buf; size_t len; int mib[] = { CTL_NET, AF_ROUTE, 0, AF_LINK, NET_RT_IFLIST, 0 }; if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) return (-1); if ((buf = malloc(len)) == NULL) return (-1); if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) { free(buf); return (-1); } for (p = buf; p < buf + len; p += ifm->ifm_msglen) { ifm = (struct if_msghdr *)p; sdl = (struct sockaddr_dl *)(ifm + 1); if (ifm->ifm_type != RTM_IFINFO || (ifm->ifm_addrs & RTA_IFP) == 0) continue; if (sdl->sdl_family != AF_LINK || sdl->sdl_nlen == 0 || memcmp(sdl->sdl_data, e->device, sdl->sdl_nlen) != 0) continue; if (addr_ston((struct sockaddr *)sdl, &ha) == 0) break; } free(buf); if (p >= buf + len) { errno = ESRCH; return (-1); } memcpy(ea, &ha.addr_eth, sizeof(*ea)); return (0); } Is anyone also facing this issue? Anyone having a clue on why whould eth_get fail? Cheers, best regards -- Thomas Jeunet
