Mit Hilfe von Sockets und dem System-Call ioctl(2) lassen sich auf einfache Weise Parameter von Netzwerk-Interfaces ermitteln und auch ändern. Hierzu wird lediglich ein Socket mit Adreß-Familie AF_INET und Socket-Typ SOCK_DGRAM benötigt:
int sd = socket( AF_INET , SOCK_DGRAM , 0 );
if ( sd == -1 )
{
perror(“socket”);
exit(errno);
}
Es stehen dann eine Reihe von ioctl-Kommandos für Netzwerk-Interfaces zur Verfügung, unter Anderem:
SIOCGIFADDRS – Abfragen der IP-Adresse eines Netzwerk-Interfaces.
SIOCGIFNETMASK – Abfragen der Netzmaske eines Netzwerk-Interfaces.
SIOCGIFCONF – Ermitteln aller Netzwerk-Interfaces.
Nachfolgend werden die verschiedenen ioctl-Kommandos im Detail beschrieben.