--- libelwix/src/net.c 2016/05/14 19:55:52 1.12.4.4 +++ libelwix/src/net.c 2016/05/18 12:38:16 1.12.4.6 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: net.c,v 1.12.4.4 2016/05/14 19:55:52 misho Exp $ +* $Id: net.c,v 1.12.4.6 2016/05/18 12:38:16 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -521,7 +521,7 @@ e_ether_addr(const char *ifname, ether_addr_t * __rest } #else if (p->ifa_name && !strcmp(p->ifa_name, ifname)) { - s = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); + s = socket(AF_INET, SOCK_DGRAM, 0); if (s == -1) break; strlcpy(req.ifr_name, ifname, sizeof req.ifr_name); @@ -529,6 +529,16 @@ e_ether_addr(const char *ifname, ether_addr_t * __rest a = e_malloc(sizeof(ether_addr_t)); if (a) memcpy(a, req.ifr_addr.sa_data, sizeof(ether_addr_t)); + + /* should set mac address */ + if (addr) { + memset(&req, 0, sizeof req); + strlcpy(req.ifr_name, ifname, sizeof req.ifr_name); + sa.sa.sa_family = ARPHRD_ETHER; + memcpy(sa.sa.sa_data, addr, sizeof(ether_addr_t)); + req.ifr_hwaddr = sa.sa; + ioctl(s, SIOCSIFHWADDR, &req); + } } close(s); break;