Did you know you can rena... (14 Feb 2003)
Did you know you can rename network interfaces under Linux. It could be quite useful to have a utility that reads a mapping of MAC addresses to names and sets all the interface names. That way you could work with inside and outside and not eth0 and eth1. A quick utility for your renaming pleasure:
/* if_rename.c - Renames linux network interfaces * Adam Langley <aglREMOVETHIS@imperialviolet.org> * % gcc -o if_rename if_rename.c -Wall */ #include <sys/ioctl.h> #include <net/if.h> #include <linux/sockios.h> #include <stdio.h> #include <string.h> int main (int argc, char **argv) { struct ifreq ifr; int fd; if (argc != 3) { printf ("Usage: %s <old interface name> <new interface name>\n", argv[0]); return 1; } if (strlen (argv[1]) > IFNAMSIZ - 1 || strlen (argv[2]) > IFNAMSIZ - 1) { printf ("String too long (max length is %d chars)\n", IFNAMSIZ - 1); return 2; } strcpy (ifr.ifr_name, argv[1]); strcpy (ifr.ifr_newname, argv[2]); fd = socket (PF_INET, SOCK_STREAM, 0); if (fd < 0) { printf ("I cannot create a normal TCP socket. It is, of course, possible " "to not build your kernel with TCP/IP support, in which case you have to " "hack this utility to work you wizard you.\n"); return 3; } if (ioctl (fd, SIOCSIFNAME, &ifr) == -1) { perror ("ioctl"); printf ("Are you root? Is %s down? Does %s even exist?\n", argv[0], argv[0]); return 4; } return 0; }