PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ermitteln, welches Device ::sendto verwenden wird?



7.e.Q
10-09-2007, 11:34
Hi Leute,

socket() gibt ja ein Filehandle zurück...

Gibt es eine Möglichkeit, anhand des socket()-Filehandles zu ermitteln, auf welchem Interface oder über welche IP der nächste Aufruf von ::sendto ein Paket heraussenden würde?

Sowas wie



const char* getDeviceFromFD(int fd);


oder



long getAddrFromFD(int fd);


Irgendwie über ioctl oder sowas??? Ich bräuchte sowas dringend!

Danke!

Update: Mir würde auch eine Funktion reichen, die mir aus einer Zieladresse laut Routing-Table die dazu gehörende Quelladresse ermittelt. Irgendwas! Ich brauche einfach nur die korrekte Absender-Adresse für eine bestimmte Empfänger-Adresse.

Hintergrund:
Ich benutze libnet, um UDP Pakete an einen bestimmten Empfänger zu versenden. Ich habe mich für libnet entschieden, weil dies mir die Möglichkeit gibt, die Absender-Adresse explizit zu setzen. Diese Möglichkeit wird aber jetzt zum Problem, da ich die Adresse IMMER setzen muss. Ich möchte dies aber nur bei bestimmten Paketen. Nicht bei allen. Bei allen anderen Paketen soll die normale Adresse verwendet werden, die das Paket nach Routing-Tabelle auch bekommen hätte. Diese aber zu ermitteln, da hapert's momentan dran. Libnet macht's jedenfalls falsch.

Grüße,
Hendrik