resolver

RESOLVER(3)                  Bibliotheksfunktionen                 RESOLVER(3)



BEZEICHNUNG
       res_init, res_query, res_search, res_querydomain, res_mkquery,
       res_send, dn_comp, dn_expand - Resolverroutinen

Ã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 anslen);

       int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn,
              int length, unsigned char **dnptrs, unsigned char *exp_dn,
              unsigned char **lastdnptr);

       int dn_expand(unsigned char *msg, unsigned char *eomorig,
              unsigned char *comp_dn, unsigned char *exp_dn, int length);

BESCHREIBUNG
       Diese Funktionen machen Anfragen an Internet Domain Nameserver und
       interpretieren die Rückmeldungen.

       Die Funktion res_init() liest die Konfigurationsdateien (siehe
       resolv+(8)), um den vorgegebenen Domainnamen, ide 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 mit dem lokalen Host in Verbindung gebracht
       wird.  Dies kann mit der Umgebungsvariable 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
       Host- und Domainnamen von name vom spezifizierten type und class.  Die
       Antwort verbleibt im Puffer answer der Länge anslen, der von Aufrufer
       angegeben ist.

       Die Funktion res_search() macht eine Anfrage und wartet auf die Antwort
       wie res_query(), implementiert jedoch zusätzlich die Vorgabe- und
       Such-Regeln, die durch RES_DEFNAMES und RES_DNSRCH kontrolliert werden
       (siehe Beschreibung von _res-Optionen unten).

       Die Funktion res_querydomain() macht eine Anfrage über res_query() 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 Anfrage-Nachricht für den
       Domainnamen 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 ist momentan unbenutzt.

       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, wenn es
       noch nicht aufgerufen wurde.

       Die Funktion dn_comp() komprimiert den Domainnamen 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 Domainnamen
       nicht komprimiert.  Wenn lastdnptr NULL ist, dann ist die Liste der
       Namen nicht aktualisiert.

       Die Funktion dn_expand() expandiert den komprimierten Domainnamen
       comp_dn zu einem vollen Domainnamen, welcher in dem Puffer exp_dn der
       GröÃe length plaziert ist.  Der komprimierte Name ist enthalten in
       einer Anfrage- oder Antwortnachricht, und msg zeigt auf den Anfang der
       Nachicht.

       Die Resolverroutinen 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 enthaltenn:


       RES_INIT
              Wahr wenn res_init() aufgerufen wurde.

       RES_DEBUG
              Drucke Debugnachrichten.

       RES_AAONLY
              Akzeptiere nur authoritative Antworten.  res_send() fährt fort
              bis es eine authoritative Antwort findet, oder gibt einen Fehler
              zurück.  [Noch nicht implementiert.]

       RES_USEVC
              Benutze TCP-Verbindungen für Anfragen, nicht UDP-Datagramme.

       RES_PRIMARY
              Frage nur primäre Domainnameserver.

       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().
              [Eingeschaltet durch Vorgabe.]

       RES_DEFNAMES
              Wenn gesetzt, fügt res_search() den Vorgabedomainnamen an
              Einzelnamen an, d.h. an solche, die keinen Punkt enthalten.
              [Eingeschaltet durch Vorgabe.]

       RES_STAYOPEN
              Benutzt mit RES_USEVC um die TCP-Verbindung zwischen Anfragen
              geöffnet zu halten.

       RES_DNSRCH
              Wenn gesetzt, sucht res_search() nach Hostnamen in der aktuellen
              und in übergeordneten Domains.  Diese Option wird von
              gethostbyname(3) benutzt.  [Eingeschaltet durch Vorgabe.]

RÃCKGABEWERT
       Die Funktion res_init() gibt 0 zurück be Erfolg, oder -1 wenn 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 wenn ein Fehler auftritt.

       Die Funktionen dn_comp() und dn_expand() geben die Länge des
       komprimierten Namens zurück, oder -1 wenn ein Fehler auftritt.

DATEIEN
       /etc/resolv.conf
              Resolverkonfigurationsdatei

       /etc/host.conf
              Resolverkonfigurationsdatei

KONFORM ZU
       BSD 4.3

SIEHE AUCH
       gethostbyname(3), hostname(7), named(8), resolv+(8).



BSD                            10. November 1996                   RESOLVER(3)