|
Beschreibung
Im Gegensatz zu gethostbyaddr() und gethostbyname() untertützen die Funktionen getipnodebyaddr() und getipnodebyname() neben IPv4 auch IPv6.
Die Funktionen getipnodebyaddr() und getipnodebyname() liefern aktuelle Informationen über die im Netz bekannten Rechner. Dabei beschaffen sie sich die benötigten Informationen (Rechnername bzw. Rechneradresse) von einem DNS-Server über den in SOCKETS(BS2000) integrierten DNS-Resolver. Falls dies nicht erfolgreich ist, wird die Information aus der BCAM-Prozessor-Tabelle ermittelt (siehe Handbuch "BCAM").
Bei getipnodebyaddr() ist addr ein Zeiger auf die Rechneradresse. Die Rechneradresse muss in binärem Format mit der Länge len vorliegen.
Bei getipnodebyname() muss für name der Rechnername (Socket-Hostname) angegeben werden. Der Name kann in Form eines vollqualifizierten DNS-Namens, also mit Rechnernamen- und Domain-Anteil (z.B. rechnerx.fujitsu.com) oder als teilqualifizierter DNS-Name (z.B. rechnerx.) oder nur als Rechnername (z.B. rechnerx) angegeben werden. Alternativ kann für name auch eine IPv4-Adresse in Punkt-Notation oder eine IPv6-Adresse in sedezimaler Doppelpunkt-Notation angegeben werden.
Im Parameter af wird beim Aufruf die Adressfamilie spezifiziert (AF_INET oder AF_INET6). Bei getipnodebyname() kann auch AF_UNSPEC angegeben werden, wenn eine IP-Adresse in Punkt- bzw. Doppelpunkt-Notation als name angegeben ist.
Mit dem Parameter flags kann die Ausgabe der gewünschten Adressfamilie gesteuert werden. Hat flags den Wert 0, dann wird eine der in af spezifizierten Adressfamilie entsprechende Adresse zurückgeliefert.
AI_V4MAPPED
Der Aufrufer akzeptiert eine IPv4-Mapped-Adresse, wenn keine IPv6-Adresse zur Verfügung steht.
AI_ALL
Nur wenn auch AI_V4MAPPED gesetzt ist: Es werden, wenn vorhanden, IPv6-Adressen und IPv4-Mapped-Adressen zurückgeliefert. af muss den Wert AF_INET6 haben.
AI_ADDRCONFIG
Es wird nur eine IPv6- oder IPv4-Adresse abhängig vom Wert von af zurückgegeben, wenn auch der Rechner, auf dem die Funktion aufgerufen wird, eine Interface-Adresse des gleichen Typs besitzt.
AI_DEFAULT
Ist gleich (AI_ADDRCONFIG | AI_V4MAPPED).
Wenn af = AF_INET6 gesetzt ist und der Rechner, auf dem die Funktion aufgerufen wird, eine IPv6-Interface-Adresse hat, dann wird für den angegebenen Rechnernamen eine IPv6-Adresse zurückgeliefert.
Wenn der Rechner, auf dem die Funktion aufgerufen wird, nur eine IPv4-Interface-Adresse besitzt, wird eine IPv4-Mapped-Adresse zurückgegeben.
getipnodebyaddr() und getipnodebyname() liefern einen Zeiger auf ein Objekt vom Typ struct hostent zurück. Für dieses Objekt wird der Speicher dynamisch angefordert und muss mit der Funktion freehostent() vom Aufrufer wieder freigegeben werden.
Der Abschnitt "Rechnernamen in Netzadressen umwandeln und umgekehrt" beschreibt die Struktur hostent.
Returnwert
Zeiger auf ein Objekt vom Typ struct hostent. Im Fehlerfall wird der Null-Zeiger zurückgeliefert und die Variable err mit einem der folgenden Werte versorgt:
HOST_NOT_FOUND
Rechner unbekannt.
NO_ADDRESS
Zu dem angegebenen Namen ist keine Rechneradresse verfügbar.
NO_RECOVERY
Es ist ein nicht behebbarer Server-Fehler aufgetreten.
TRY_AGAIN
Zugriff muss wiederholt werden.
-1:
Fehler; errno wird gesetzt, um den Fehler anzuzeigen.
Fehler
EAFNOSUPPORT
Die Funktion wird an diesem System nicht unterstützt. Vergleichen Sie dazu auch den