Herakles
Profifragensteller
Moin!
Ich möchte gern den Systembefehl
in ein C-Programm einfügen. Hierbei möchte ich NICHT system(3) nutzen, sondern das Ganze selbst mit ioctl(2) programmmieren.
Das request, welches ich hierfür verwenden muss ist SIOCSIFADDR und der Datentyp des Pointers für das dritte Argument von ioctl(2) ist struct ifreq.
Ich definiere also ein
und setze den Namen des Interfaces in dieses struct ein:
Mein anschließender ioctl(2)-Befehl sieht dann folgendermaßen aus:
Kompilieren will das Ganze prima, lediglich bei Ausführung des Codes bekomme ich Probleme. Die Software steigt genau an der "exit(-1)"-Stelle aus und zwar mit dem Fehler "Invalid argument".
Hat jemand dazu eine Lösung parat? Wie kann ich meine IP-Adresse eines Interfaces mit ioctl(2) setzen?
Vielen Dank an jeden, der bis hierher gelesen hat!
Herakles
Ich möchte gern den Systembefehl
Code:
ifconfig rl0 192.168.1.1
in ein C-Programm einfügen. Hierbei möchte ich NICHT system(3) nutzen, sondern das Ganze selbst mit ioctl(2) programmmieren.
Das request, welches ich hierfür verwenden muss ist SIOCSIFADDR und der Datentyp des Pointers für das dritte Argument von ioctl(2) ist struct ifreq.
Ich definiere also ein
Code:
struct ifreq request
und setze den Namen des Interfaces in dieses struct ein:
Code:
strcpy( request.ifr_ifrn.ifrn_name, "rl0" );
Mein anschließender ioctl(2)-Befehl sieht dann folgendermaßen aus:
Code:
if( ioctl( fd_udp, SIOCSIFADDR, &request) != 0 ) {
perror(Failed to set IP-Address");
exit(-1);
}
Kompilieren will das Ganze prima, lediglich bei Ausführung des Codes bekomme ich Probleme. Die Software steigt genau an der "exit(-1)"-Stelle aus und zwar mit dem Fehler "Invalid argument".
Hat jemand dazu eine Lösung parat? Wie kann ich meine IP-Adresse eines Interfaces mit ioctl(2) setzen?
Vielen Dank an jeden, der bis hierher gelesen hat!
Herakles