you got that message with root right? with a normal user don't happen?
I have the same issue.
On Tue, 15 Nov 2011 19:21:58 +0100, Thomas Jeunet wrote:
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
--
Sending from my computer