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