Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ resolver(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

named(1M)

gethostbyname(3N)

resolv.conf(4)

in(5)

resolver(3N)                                                   resolver(3N)

NAME
     resolver: resquery, ressearch, resmkquery, ressend, resinit,
     dncomp, dnexpand - Resolver-Routinen

SYNTAX
     #include <sys/types.h>
     #include <netinet/in.h>
     #include <arpa/nameser.h>
     #include <resolv.h>

     int resquery(const char *dname, int class, int type,
                   uchar *answer, int anslen);

     int ressearch(const char *dname, int class, int type,
                   uchar *answer, int anslen);

     int resmkquery(int op, const char *dname, int class, int type,
                   const uchar *data, int datalen,
                   const uchar *newrrin, uchar *buf, int buflen);

     int ressend(const uchar *msg, int msglen,
                   uchar *answer, int anslen);

     int resinit(void);

     int dncomp(const char *expdn, uchar *compdn, int length,
                   uchar **dnptrs, uchar **lastdnptr);

     int dnexpand(const uchar *msg, const uchar *eomorig,
                   const uchar *compdn, char *expdn, int length);

BESCHREIBUNG
     Diese Routinen werden zum Erstellen, Senden und Interpretieren von
     Anfragen an und Antworten von Internet-DNS-Servern (DNS - Domain Name
     System) verwendet.

     Globale Konfigurations- und Statusinformationen, die von den Resol-
     ver-Routinen verwendet werden, werden in der Variablen res, Struktur
     resstate gespeichert. Die meisten dieser Angaben haben brauchbare
     Voreinstellungen und können ignoriert werden. Optionen, die in
     res.options gespeichert sind, sind in resolv.h definiert und werden
     im folgenden aufgeführt. Optionen werden als eine einfache Bit-Maske
     gespeichert, wobei die gesetzten Optionen mit logischem OR verknüpft
     werden.

     RESINIT
          Ist wahr, wenn die anfängliche Nameserveradresse und der Stan-
          darddomänenname initilisiert sind (das heißt, resinit wurde auf-
          gerufen).

     RESDEBUG
          Ausgeben von Testhilfemeldungen.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

resolver(3N)                                                   resolver(3N)

     RESAAONLY
          Nur autorisierte Antworten. Mit dieser Option fährt ressend mit
          der Suche so lange fort, bis eine autorisierte Antwort oder ein
          Fehler zurückkommt. Derzeit ist dies noch nicht implementiert.

     RESUSEVC
          TCP-Verbindungen anstelle von UDP-Datagrammen für Anfragen ver-
          wenden.

     RESSTAYOPEN
          Wird mit RESUSEVC verwendet, um die TCP-Verbindung zwischen den
          Anfragen offen zu halten. Dies bietet sich nur in Programmen an,
          die regelmäßig eine große Anzahl von Anfragen ausführen. Norma-
          lerweise sollte als Modus UDP verwendet werden.

     RESIGNTC
          Zur Zeit nicht verwendet (Abschneidefehler ignorieren, also nicht
          mit TCP wiederholen).

     RESRECURSE
          Das Rekursions-Bit in Anfragen setzen. Dies ist die Voreinstel-
          lung. (ressend führt keine iterativen Anfragen aus und geht
          davon aus, daß der Nameserver die Rekursion durchführt.)

     RESDEFNAMES
          Wenn diese Option gesetzt ist, hängt ressearch den Standarddomä-
          nennamen an Namen an, die aus nur einer Komponente bestehen (dies
          sind Namen ohne Punkte). Diese Option ist standardmäßig akti-
          viert.

     RESDNSRCH
          Wenn diese Option gesetzt ist, sucht ressearch nach Hostnamen in
          der aktuellen Domäne und in übergeordneten Domänen. Dies wird von
          der Standardsuchroutine für Hosts gethostbyname(3N) verwendet.
          Diese Option ist standardmäßig aktiviert.

     RESNOALIASES
          Deaktiviert die Alias-Funktion auf Benutzerebene, die mit der
          Umgebungsvariablen HOSTALIASES gesteuert wird. Diese Option
          sollte von Netzwerkdämonen gesetzt werden.

     Die Routine resinit liest die Konfigurationsdatei [falls vorhanden;
     siehe resolv.conf(4)], um den Standarddomänennamen, die Suchliste und
     die Internet-Adresse der Nameserver zu bekommen. Falls in der Konfigu-
     rationsdatei keine Nameserver eingetragen sind, wird der lokale Rech-
     ner als Nameserver verwendet. Der aktuelle Domänenname ist durch den
     Hostnamen definiert, wenn er nicht in der Konfigurationsdatei angege-
     ben ist; er kann von der Umgebungsvariablen LOCALDOMAIN überschrieben
     werden. Diese Umgebungsvariable kann mehrere durch Leerzeichen
     getrennte Einträge haben, wenn Sie die Suchliste auf Prozeßebene über-
     schreiben wollen. Dies entspricht dem Kommando search in der Konfigu-
     rationsdatei. Eine andere Umgebungsvariable (RESOPTIONS) kann zum


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

resolver(3N)                                                   resolver(3N)

     Überschreiben bestimmter interner Resolver-Optionen verwendet werden,
     die sonst durch das Ändern von Feldern in der Struktur res gesetzt
     oder von dem Kommando options der Konfigurationsdatei übernommen wer-
     den. Die Syntax der Umgebungsvariablen RESOPTIONS wird in
     resolv.conf(4) erläutert. Die Initialisierung erfolgt normalerweise
     mit dem ersten Aufruf einer der anderen Resolver-Routinen.

     Die Funktion resquery bietet eine Schnittstelle für Anfragen an den
     Server. Sie erstellt eine Anfrage, sendet sie an den Server, wartet
     auf Antwort und führt Vorabprüfungen in bezug auf die Antwort aus. Die
     Anfrage fordert Informationen des angegebenen Typs type und der Klasse
     class für den vollständig angegebenen Domänannamen dname an. Die Ant-
     wort wird in dem vom Aufrufer zur Verfügung gestellten Puffer answer
     mit der Länge anslen abgelegt.

     Die Routine ressearch erstellt eine Anfrage und wartet so wie
     resquery eine Antwort ab. Hierbei werden jedoch zusätzlich die von
     den Optionen RESDEFNAMES und RESDNSRCH gesteuerten Standard- und
     Suchregeln angewandt. Sie gibt die erste erfolgreiche Antwort zurück.

     Die anderen Routinen sind Routinen unterer Ebene, die von resquery
     verwendet werden. Die Funktion resmkquery erstellt eine Standardan-
     frage und legt sie in den Puffer buf ab. Sie gibt die Größe der
     Anfrage oder -1 zurück, wenn die Anfrage die Pufferlänge buflen über-
     schreitet. Der Anfragetyp op ist normalerweise QUERY, kann jedoch auch
     ein beliebiger in <arpa/nameser.h> definierter Anfragetyp sein. Der
     Domänenname für die Anfrage wird durch dname angegeben. newrrin wird
     derzeit noch nicht verwendet, ist aber zur Erstellung von Aktualisie-
     rungspaketen vorgesehen.

     Die Routine ressend sendet eine vorformatierte Anfrage und gibt eine
     Antwort zurück. Sie ruft resinit auf (wenn RESINIT nicht gesetzt
     ist), sendet die Anfrage an den Nameserver und bearbeitet Zeitlimits
     und wiederholt die Anfrage, falls erforderlich. Die Routine gibt die
     Länge der Antwortmeldung oder, wenn Fehler aufgetreten sind, -1
     zurück.

     Die Funktion dncomp komprimiert den Domänennamen expdn und speichert
     ihn in compdn. Sie gibt die Größe des komprimierten Namens oder, wenn
     Fehler aufgetreten sind, -1 zurück. Die Größe des Arrays, auf das
     compdn zeigt, wird von length angegeben. Für die Komprimierung wird
     ein Array aus Zeigern dnptrs auf zuvor komprimierte Namen in der aktu-
     ellen Nachricht verwendet. Der erste Zeiger zeigt auf den Anfang des
     Pakets, und die Liste der Zeiger wird mit NULL abgeschlossen.
     lastdnptr zeigt auf das Ende des Arrays. Ein Nebeneffekt von dncomp
     besteht in der Aktualisierung der Zeigerliste für Kennungen (Labels),
     die in die Nachricht eingefügt werden, während der Name komprimiert
     wird. Wenn dnptr gleich NULL ist, werden die Namen nicht komprimiert.
     Wenn lastdnptr gleich NULL ist, wird die Liste der Kennungen nicht
     aktualisiert. (Beide Parameter sollten nie NULL sein!)




Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

resolver(3N)                                                   resolver(3N)

     Der Eintrag dnexpand expandiert den komprimierten Domänennamen
     compdn wieder auf einen vollständigen Domänennamen. Der komprimierte
     Name ist in einer Anfrage oder Antwort enthalten; msg ist ein Zeiger
     auf den Anfang der Nachricht. Der nicht komprimierte Name wird in den
     Puffer geschrieben, der durch expdn angegeben ist. Dieser hat die
     Länge length. Die Länge des komprimierten Namens wird zurückgegeben,
     oder es wird -1 zurückgegeben, wenn ein Fehler aufgetreten ist.

HINWEIS
     Programme müssen mit der Option -lresolv gebunden werden.

DATEIEN
     /usr/include/arpa/nameser.h

     /usr/include/netinet/in.h
          Siehe in(5)

     /usr/include/resolv.h

     /usr/include/sys/types.h

     /etc/resolv.conf
          Siehe resolv.conf(4)

     /usr/lib/libresolv.a

     /usr/lib/named/bog.ascii
     /usr/lib/named/bog.ps
          BIND Name Server Operations Guide for BIND ("BOG"); ASCII- und
          PostScript-Format

SIEHE AUCH
     named(1M), gethostbyname(3N), resolv.conf(4), in(5).

     RFC1032, RFC1033, RFC1034, RFC1035, RFC974.



















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026