September 2002
Intermediate to advanced
560 pages
13h 16m
English
/********************************************************* NAME : hwaddr_set *********************************************************/ static int hwaddr_set( char *ifname, char *addr, int addrlen ) { struct ifreq ifr; int fd = socket(AF_INET, SOCK_DGRAM, 0); int ret; unsigned long flags; if (fd < 0) return (-1); strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); /* get the flags */ ret = ioctl(fd, SIOCGIFFLAGS, (char *)&ifr); if( ret ) goto end; flags = ifr.ifr_flags; /* set the interface down */ ifr.ifr_flags &= ~IFF_UP; ret = ioctl(fd, SIOCSIFFLAGS, (char *)&ifr); if( ret ) goto end; /* change the hwaddr */ memcpy( ifr.ifr_hwaddr.sa_data, addr, addrlen ); ifr.ifr_hwaddr.sa_family ...Read now
Unlock full access