Sets the interface hardware address.
int main(int argc,char **argv) {
struct ifreq ifr; int skfd;
if (argc<3) {
fprintf(stderr,"usage:\n%s interface hwaddr\n",argv1?); return 1;
}
/* Fill in the structure / snprintf(ifr.ifr_name, IFNAMSIZ, "%s", argv1?); ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER; / TODO: write some code to parse argv2? into ifr.ifr_hwaddr.sa_data / / memcpy(&ifr.ifr_hwaddr.sa_data, argv2?, sizeof(ether.address)); */
/* Create a socket fd */ skfd = socket(PF_INET,SOCK_STREAM,0);
/* call the IOCTL */ if (ioctl(skfd, SIOCSIFHWADDR, &ifr) < 0) {
perror("ioctl(SIOCSIFHWADDR)"); return 1;
}
/* cleanup */ close(skfd);
/* we're out of here! */ return 0;
}
One page links to SIOCSIFHWADDR: