As Stefan Bethke wrote:
> Genau diese Frage hat sich mir vor ein paar Tagen in anderem Zusammenhang
> auch gestellt. Meine Suche in Stevens II hat mich aber zu der Erkenntnis
> gebracht, daß if_dstaddr für nichts benutzt wird, außer bei einem
> SIOCAIFADDR einen passenden Routing-Eintrag zu erzeugen (und entsprechend
> SIOCDIFADDR).
Sie wird eindeutig fürs Routing benutzt um festzustellen, wolang ein
Paket zu schicken ist. Hier ein Stück aus der Funktion
ifa_ifwithnet():
if (ifa->ifa_addr->sa_family != af)
next: continue;
if (ifp->if_flags & IFF_POINTOPOINT) {
if (ifa->ifa_dstaddr != 0
&& equal(addr, ifa->ifa_dstaddr))
return (ifa);
Wenn das Interface also p2p ist, dann bestimmt die Adresse der
Gegenseite, ob es als Transportmedium in Frage kommt oder nicht.
(Wenn es nicht p2p ist, bestimmen lokale Adresse + Netzmaske, ob es
benutzt wird.)
Die Abfrage ifa->ifa_dstaddr != 0 ist übrigens Paranoia; der Kernel
sichert beim Konfigurieren eines p2p-Interfaces ab, daß eine derartige
Adresse vorhanden ist (EDESTADDRREQ).
-- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)Received on Fri 01 Aug 1997 - 16:23:07 CEST