BEZEICHNUNG¶
res_init, res_query, res_search, res_querydomain, res_mkquery, res_send,
dn_comp, dn_expand - Resolver-Routinen
ÜBERSICHT¶
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
extern struct state _res;
int res_init(void);
int res_query(const char *dname, int class, int type,
unsigned char *answer, int anslen);
int res_search(const char *dname, int class, int type,
unsigned char *answer, int anslen);
int res_querydomain(const char *name, const char *domain,
int class, int type, unsigned char *answer,
int anslen);
int res_mkquery(int op, const char *dname, int class,
int type, char *data, int datalen, struct rrec *newrr,
char *buf, int buflen);
int res_send(const char *msg, int msglen, char *answer,
int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn,
int length, unsigned char **dnptrs, unsigned char **lastdnptr);
int dn_expand(unsigned char *msg, unsigned char *eomorig,
unsigned char *comp_dn, char *exp_dn,
int length);
Linken Sie mit der Option
-lresolv.
BESCHREIBUNG¶
Diese Funktionen stellen Anfragen an Internet Domain Nameserver und
interpretieren die Rückmeldungen.
Die Funktion
res_init() liest die Konfigurationsdateien (siehe
resolv.conf(5)), um den vorgegebenen Domainnamen, die Suchreihenfolge
und Nameserveradresse(n) zu erhalten. Wenn kein Server angegeben ist, wird der
lokale Host verwendet. Wenn keine Domain angegeben ist, wird diejenige
benutzt, die dem lokalen Host zugeordnet ist. Dies kann mit der
Umgebungsvariablen
LOCALDOMAIN überschrieben werden.
res_init() wird normalerweise durch den ersten Aufruf von einer der
anderen Funktionen ausgeführt.
Die Funktion
res_query() fragt den Nameserver nach dem vollständigen
Domain-Namen
name des spezifizierten Typs
type und der Klasse
class. Die Antwort verbleibt im Puffer
answer der Länge
anslen, der vom Aufrufenden bereitgestellt wurde.
Die Funktion
res_search() stellt eine Anfrage und wartet wie
res_query() auf die Antwort, implementiert jedoch zusätzlich die
Vorgabe- und Such-Regeln, die durch
RES_DEFNAMES und
RES_DNSRCH
gesteuert werden (siehe im Folgenden die Beschreibung der
_res-Optionen).
Die Funktion
res_querydomain() macht mittels
res_query() eine
Anfrage auf die Verkettung von
name und
domain.
Die folgenden Funktionen sind Routinen tieferer Ebene, die von
res_query() benutzt werden.
Die Funktion
res_mkquery() konstruiert eine Anfragenachricht für den
Domain-Namen
dname in
buf der Länge
buflen. Der
Anfragetyp
op ist gewöhnlich
QUERY, kann aber jeder der in
<arpa/nameser.h> definierten Typen sein.
newrr wird
momentan nicht benutzt.
Die Funktion
res_send() sendet eine vorformatierte Anfrage, die in
msg gegeben ist und die Länge
msglen hat und gibt die
Antwort in
answer zurück, die die Länge
anslen hat.
Sie ruft
res_init() auf, falls sie noch nicht aufgerufen wurde.
Die Funktion
dn_comp() komprimiert den Domain-Namen
exp_dn und
speichert ihn in dem Puffer
comp_dn der Länge
length. Die
Komprimierung benutzt ein Feld von Zeigern
dnptrs auf bereits
komprimierte Namen in der aktuellen Nachricht. Der erste Zeiger zeigt auf den
Anfang der Nachricht und die Liste endet mit NULL. Die Grenze des Feldes ist
angegeben durch
lastdnptr. Wenn
dnptr NULL ist, dann sind
Domain-Namen nicht komprimiert. Wenn
lastdnptr NULL ist, dann wird die
Liste der Namen nicht aktualisiert.
Die Funktion
dn_expand() expandiert den komprimierten Domain-Namen
comp_dn zu einem vollen Domain-Namen, welcher in dem Puffer
exp_dn der Größe
length platziert ist. Der
komprimierte Name ist in einer Anfrage- oder Antwortnachricht enthalten und
msg zeigt auf den Anfang der Nachricht.
Die Resolver-Routinen benutzen globale Konfigurations- und Statusinformationen,
die in der Struktur
_res enthalten sind, welche in
<resolv.h> definiert ist. Das einzige Feld, das normalerweise vom
Benutzer manipuliert wird, ist
_res.options. Dieses Feld kann bitweise
Oder-Verknüpfungen der folgenden Optionen enthalten:
- RES_INIT
- Wahr, falls res_init() aufgerufen wurde.
- RES_DEBUG
- Drucke Debug-Nachrichten.
- RES_AAONLY
- Akzeptiere nur autoritative Antworten. res_send()
fährt fort, bis es eine autoritative Antwort findet oder gibt einen
Fehler zurück. [Noch nicht implementiert.]
- RES_USEVC
- TCP-Verbindungen statt UDP-Datagramme für Anfragen
benutzen.
- RES_PRIMARY
- Nur primäre Domainnameserver abfragen.
- RES_IGNTC
- Ignoriere Fehler bei verstümmelten Antworten. Versuche
es nicht erneut mit TCP. [Noch nicht implementiert.]
- RES_RECURSE
- Setze das Rekursionswunsch-Bit in Anfragen. Rekursion wird
von dem Domainnameserver ausgeführt, nicht von res_send().
[Standardmäßig eingeschaltet]
- RES_DEFNAMES
- Falls gesetzt fügt res_search() den
Vorgabedomainnamen an Einzelkomponentennamen an, d.h. an solchen, die
keinen Punkt enthalten. [Standardmäßig eingeschaltet]
- RES_STAYOPEN
- Benutzt mit RES_USEVC um die TCP-Verbindung zwischen
Anfragen geöffnet zu halten.
- RES_DNSRCH
- Falls gesetzt, sucht res_search() nach Hostnamen in
der aktuellen und in übergeordneten Domains. Diese Option wird von
gethostbyname(3) benutzt. [Eingeschaltet durch Vorgabe.]
Diese Liste ist unvollständig. Sie finden die Beschreibung einiger weiterer
Schalter in
resolv.conf(5).
RÜCKGABEWERT¶
Die Funktion
res_init() gibt 0 bei Erfolg zurück oder -1, falls ein
Fehler auftritt.
Die Funktionen
res_query(),
res_search(),
res_querydomain(),
res_mkquery() und
res_send() geben die
Länge der Antwort zurück oder -1, falls ein Fehler auftritt.
Die Funktionen
dn_comp() und
dn_expand() geben die Länge des
komprimierten Namens zurück oder -1, falls ein Fehler auftritt.
DATEIEN¶
/etc/resolv.conf Resolver-Konfigurationsdatei
/etc/host.conf Resolver-Konfigurationsdatei
4.3BSD.
SIEHE AUCH¶
gethostbyname(3),
resolv.conf(5),
resolver(5),
hostname(7),
named(8)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
Schauer <Martin.E.Schauer@gmx.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird
KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.