1 .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
3 .\" Permission is granted to make and distribute verbatim copies of this
4 .\" manual provided the copyright notice and this permission notice are
5 .\" preserved on all copies.
7 .\" Permission is granted to copy and distribute modified versions of this
8 .\" manual under the conditions for verbatim copying, provided that the
9 .\" entire resulting derived work is distributed under the terms of a
10 .\" permission notice identical to this one
12 .\" Since the Linux kernel and libraries are constantly changing, this
13 .\" manual page may be incorrect or out-of-date. The author(s) assume no
14 .\" responsibility for errors or omissions, or for damages resulting from
15 .\" the use of the information contained herein. The author(s) may not
16 .\" have taken the same level of care in the production of this manual,
17 .\" which is licensed free of charge, as they might when working
20 .\" Formatted or processed versions of this manual, if unaccompanied by
21 .\" the source, must acknowledge the copyright and authors of this work.
23 .\" References consulted:
24 .\" Linux libc source code
25 .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
27 .\" Modified Sun Jul 25 11:01:53 1993 by Rik Faith (faith@cs.unc.edu)
28 .\" Translated to German Sun Nov 10 1996 by Patrick Rother <krd@gulu.net>
30 .TH RESOLVER 3 "10. November 1996" "BSD" "Bibliotheksfunktionen"
32 res_init, res_query, res_search, res_querydomain, res_mkquery, res_send,
33 dn_comp, dn_expand \- Resolverroutinen
36 .B #include <netinet/in.h>
37 .B #include <arpa/nameser.h>
38 .B #include <resolv.h>
39 .B extern struct state _res;
41 .B int res_init(void);
43 .BI "int res_query(const char *" dname ", int " class ", int " type ,
45 .BI "unsigned char *" answer ", int " anslen );
48 .BI "int res_search(const char *" dname ", int " class ", int " type ,
50 .BI "unsigned char *" answer ", int " anslen );
53 .BI "int res_querydomain(const char *" name ", const char *" domain ,
55 .BI "int " class ", int " type ", unsigned char *" answer ", int " anslen );
58 .BI "int res_mkquery(int " op ", const char *" dname ", int " class ", int " type ,
60 .BI "char *" data ", int " datalen ", struct rrec *" newrr ", char *" buf ,
64 .BI "int res_send(const char *" msg ", int " msglen ", char *" answer ,
69 .BI "int dn_comp(unsigned char *" exp_dn ", unsigned char *" comp_dn ,
71 .BI "int " length ", unsigned char **" dnptrs ", unsigned char *" exp_dn ,
72 .BI "unsigned char **" lastdnptr );
75 .BI "int dn_expand(unsigned char *" msg ", unsigned char *" eomorig ,
77 .BI "unsigned char *" comp_dn ", unsigned char *" exp_dn ", int " length );
81 Diese Funktionen machen Anfragen an Internet Domain Nameserver und
82 interpretieren die Rückmeldungen.
86 liest die Konfigurationsdateien (siehe
88 um den vorgegebenen Domainnamen, die Suchreihenfolge und
89 Nameserveradresse(n) zu erhalten. Wenn kein Server angegeben ist, wird
90 der lokale Host verwendet. Wenn keine Domain angegeben ist, wird diejenige
91 benutzt, die mit dem lokalen Host in Verbindung gebracht wird.
92 Dies kann mit der Umgebungsvariable LOCALDOMAIN überschrieben werden .
94 wird normalerweise durch den ersten Aufruf von einer der anderen
95 Funktionen ausgeführt.
99 fragt den Nameserver nach dem vollständigen Host- und Domainnamen von
102 .IR type " und " class .
103 Die Antwort verbleibt im Puffer
107 der von Aufrufer angegeben ist.
111 macht eine Anfrage und wartet auf die Antwort wie
113 implementiert jedoch zusätzlich die Vorgabe- und Such-Regeln, die durch
114 RES_DEFNAMES und RES_DNSRCH kontrolliert werden (siehe Beschreibung von
115 .IR _res "-Optionen unten)."
119 macht eine Anfrage über
121 auf die Verkettung von
122 .IR name " und " domain .
124 Die folgenden Funktionen sind Routinen tieferer Ebene, die von
130 konstruiert eine Anfrage-Nachricht für den Domainnamen
136 ist gewöhnlich QUERY, kann aber jeder der in
138 definierten Typen sein.
140 ist momentan unbenutzt.
144 sendet eine vorformatierte Anfrage, die in
146 gegeben ist und die Länge
148 hat, und gibt die Antwort in
150 zurück, die die Länge
154 auf, wenn es noch nicht aufgerufen wurde.
158 komprimiert den Domainnamen
160 und speichert ihn in dem Puffer
164 Die Komprimierung benutzt ein Feld von Zeigern
166 auf bereits komprimierte Namen in der aktuellen Nachricht. Der
167 erste Zeiger zeigt auf den Anfang der Nachricht und die Liste endet
168 mit NULL. Die Grenze des Feldes ist angegeben durch
172 NULL ist, dann sind Domainnamen nicht komprimiert. Wenn
174 NULL ist, dann ist die Liste der Namen nicht aktualisiert.
178 expandiert den komprimierten Domainnamen
180 zu einem vollen Domainnamen, welcher in dem Puffer
184 platziert ist. Der komprimierte Name ist enthalten in einer
185 Anfrage- oder Antwortnachricht, und
187 zeigt auf den Anfang der Nachricht.
189 Die Resolverroutinen benutzen globale Konfigurations- und Statusinformationen,
192 enthalten sind, welche in
194 definiert ist. Das einzige Feld, das normalerweise vom Benutzer manipuliert
197 Dieses Feld kann bitweise oder-Verknüpfungen der folgenden Optionen enthalten:
206 Drucke Debugnachrichten.
209 Akzeptiere nur autoritative Antworten.
211 fährt fort bis es eine autoritative Antwort findet, oder gibt einen
212 Fehler zurück. [Noch nicht implementiert.]
215 Benutze TCP-Verbindungen für Anfragen, nicht UDP-Datagramme.
218 Frage nur primäre Domainnameserver.
221 Ignoriere Fehler bei verstümmelten Antworten. Versuche es nicht
222 erneut mit TCP. [Noch nicht implementiert.]
225 Setze das Rekursionswunsch-Bit in Anfragen. Rekursion wird von dem
226 Domainnameserver ausgeführt, nicht von
228 [Eingeschaltet durch Vorgabe.]
233 den Vorgabedomainnamen an Einzelnamen an, d.h. an solche, die keinen
234 Punkt enthalten. [Eingeschaltet durch Vorgabe.]
239 um die TCP-Verbindung zwischen Anfragen geöffnet zu halten.
244 nach Hostnamen in der aktuellen und in übergeordneten Domains. Diese
246 .BR gethostbyname (3)
247 benutzt. [Eingeschaltet durch Vorgabe.]
251 gibt 0 zurück be Erfolg, oder \-1 wenn ein Fehler auftritt.
254 .BR res_query() ", " res_search() ", " res_querydomain() ,
255 .BR res_mkquery() " und " res_send()
256 geben die Länge der Antwort zurück, oder \-1 wenn ein Fehler auftritt.
259 .BR dn_comp() " und " dn_expand()
260 geben die Länge des komprimierten Namens zurück, oder \-1 wenn ein
265 Resolverkonfigurationsdatei
268 Resolverkonfigurationsdatei
273 .BR gethostbyname (3),