tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: tap interface address



On Mon, 11 Aug 2008, der Mouse wrote:

> > So, how do I get to the ethernet address? (technically, it does not
> > have any address family protocol code :)
>
> I thought that's what AF_LINK was for...?

Ok, I admit it.

        s = socket(PF_LINK, SOCK_DGRAM, 0);

        memset(&iflr, 0, sizeof(iflr));
        memcpy(iflr.iflr_name, ifr.ifr_name, IFNAMSIZ);

        sdl = (struct sockaddr_dl *)&iflr.addr;
        sdl->sdl_family = AF_LINK;
        sdl->sdl_len = sizeof(struct sockaddr_dl);
        sdl->sdl_alen = ETHER_ADDR_LEN;

        if (ioctl(s, SIOCGLIFADDR, &iflr) == -1) {
                syslog(LOG_ERR, "Could not get interface address: %m");
                exit(EXIT_FAILURE);
        }

gives me the address with CLLADDR(sdl), thanks!

iain


Home | Main Index | Thread Index | Old Index