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, &ethaddr) != 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

Reply via email to