ubuntuusers.de

IP-Adresse eines Interfaces auflösen

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

jogi3412

Anmeldungsdatum:
17. Oktober 2007

Beiträge: 117

hi,

ich hab mir über die Funktion ioctl() und den Flags SIOCGIFNETMASK bzw. SIOCGIFADDR ein Programm geschrieben das für einen gegebenen Interfacenamen (z.B. "eth0") die IP-Adressen auflöst bzw. ermittelt.

Soweit so gut, funktioniert auch prächtig. Nur wenn ich ein Interface angebe das es im System definitiv nicht gibt (z.B. "blabla") wird das ganze irgendwie auf die IP: 159.160.0.0 aufgelöst.

Was passiert da? die Funkion schlägt leider nicht wie erwartet fehl. D.h. die Fehlererkennung ist schwer.

Woran kann ich erkennen ob das was in die Hose gegangen ist. Oder woher kommt die IP 159.160.0.0, die wird mir für jeden unsinnigen name geliefert den ich eingebe.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

Was heisst sie schlägt nicht fehl? Du prüfst den Rückgabewert, aber der behauptet alles ist ok, also in der Regel die 0!?

jogi3412

(Themenstarter)

Anmeldungsdatum:
17. Oktober 2007

Beiträge: 117

genau das, so sieht der teil aus wo ich ioctl() aufrufe und hier müsste es eig. in die hose gehen. tut es aber nicht. jeder interface name wir akzeptiert und zuverlässig auf die ip 159.160.0.0 aufgelöst. wirklich jeder!

1
2
3
4
5
6
	struct ifreq ifr;
	strncpy(ifr.ifr_name, interface, strlen(interface) + 1);
	if ( ioctl (p_sock, ioctl_flag,   &ifr) < 0)
	{
		printf("Error\n"); exit(1);		
	}
Antworten |