.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and (C) Copyright 2015 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified 1993-07-25 by Rik Faith (faith@cs.unc.edu) .\" Modified 2004-10-31 by aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH RESOLVER 3 "8. Oktober 2016" GNU Linux\-Programmierhandbuch .SH BEZEICHNUNG res_ninit, res_nquery, res_nsearch, res_nquerydomain, res_nmkquery, res_nsend, res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand \- Resolver\-Routinen .SH ÜBERSICHT .nf \fB#include \fP \fB#include \fP \fB#include \fP \fB#include \fP \fB#include \fP \fB#include \fP \fBextern struct __res_state _res;\fP \fBstruct __res_state;\fP \fBtypedef struct __res_state *res_state;\fP \fBint res_ninit(res_state \fP\fIstatep\fP\fB);\fP \fBint res_nquery(res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP \fBint res_nsearch(res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP \fBint res_nquerydomain(res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fIname\fP\fB, const char *\fP\fIdomain\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB, unsigned char *\fP\fIanswer\fP\fB,\fP \fB int \fP\fIanslen\fP\fB);\fP \fBint res_nmkquery(res_state \fP\fIstatep\fP\fB,\fP \fB int \fP\fIop\fP\fB, const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB,\fP \fB int \fP\fItype\fP\fB, const unsigned char *\fP\fIdata\fP\fB, int \fP\fIdatalen\fP\fB,\fP \fB const unsigned char *\fP\fInewrr\fP\fB,\fP \fB unsigned char *\fP\fIbuf\fP\fB, int \fP\fIbuflen\fP\fB);\fP \fBint res_nsend(res_state \fP\fIstatep\fP\fB,\fP \fB const unsigned char *\fP\fImsg\fP\fB, int \fP\fImsglen\fP\fB,\fP \fB unsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP \fBint dn_comp(const char *\fP\fIexp_dn\fP\fB, unsigned char *\fP\fIcomp_dn\fP\fB,\fP \fB int \fP\fIlength\fP\fB, unsigned char **\fP\fIdnptrs\fP\fB,\fP \fB unsigned char **\fP\fIlastdnptr\fP\fB);\fP \fBint dn_expand(const unsigned char *\fP\fImsg\fP\fB,\fP \fB const unsigned char *\fP\fIeomorig\fP\fB,\fP \fB const unsigned char *\fP\fIcomp_dn\fP\fB, char *\fP\fIexp_dn\fP\fB,\fP \fB int \fP\fIlength\fP\fB);\fP .fi .\" .SS Veraltet .nf \fBextern struct __res_state _res;\fP \fBint res_init(void);\fP \fBint res_query(const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP \fBint res_search(const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP \fBint res_querydomain(const char *\fP\fIname\fP\fB, const char *\fP\fIdomain\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB, unsigned char *\fP\fIanswer\fP\fB,\fP \fB int \fP\fIanslen\fP\fB);\fP \fBint res_mkquery(int \fP\fIop\fP\fB, const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB,\fP \fB int \fP\fItype\fP\fB, const unsigned char *\fP\fIdata\fP\fB, int \fP\fIdatalen\fP\fB,\fP \fB const unsigned char *\fP\fInewrr\fP\fB,\fP \fB unsigned char *\fP\fIbuf\fP\fB, int \fP\fIbuflen\fP\fB);\fP \fBint res_send(const unsigned char *\fP\fImsg\fP\fB, int \fP\fImsglen\fP\fB,\fP \fB unsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP .fi .sp Linken Sie mit der Option \fI\-lresolv\fP. .SH BESCHREIBUNG \fBHinweis\fP: Diese Seite ist unvollständig (verschiedene durch Glibc bereitgestellte Resolver\-Funktionen sind nicht beschrieben) und ist wahrscheinlich veraltet. Diese unten beschriebenen Funktionen stellen Anfragen an Internet Domain Nameserver und interpretieren die Rückmeldungen. Das API besteht aus einer Gruppe von moderneren, wiedereintrittsfähigen Funktionen und einer älteren Gruppe von überholten, nicht wiedereintrittsfähigen Funktionen. Die traditionellen Resolver\-Schnittstellen wie \fBres_init\fP() und \fBres_query\fP() verwenden einigen statischen (globalen) Zustand, der in der Struktur \fI_res\fP gespeichert ist, womit die Funktionen nicht Thread\-sicher werden. BIND 8.2 führte eine Gruppe von neuen Schnittstellen \fBres_ninit\fP(), \fBres_nquery\fP() und so weiter ein, die \fIres_state\fP als erstes Argument übernehmen, so dass Sie pro Thread einen Resolver\-Zustand verwenden können. Die Funktionen \fBres_ninit\fP() und \fBres_init\fP() lesen die Konfigurationsdateien (siehe \fBresolv.conf\fP(5)), um den vorgegebenen Domainnamen 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 \fBLOCALDOMAIN\fP überschrieben werden. \fBres_ninit\fP() oder \fBres_init\fP() werden normalerweise durch den ersten Aufruf von einer der anderen Funktionen ausgeführt. Die Funktionen \fBres_nquery\fP() und \fBres_query\fP() fragen den Nameserver nach dem vollständigen Domain\-Namen \fIname\fP des spezifizierten Typs \fItype\fP und der Klasse \fIclass\fP. Die Antwort verbleibt im Puffer \fIanswer\fP der Länge \fIanslen\fP, der vom Aufrufenden bereitgestellt wurde. Die Funktionen \fBres_nsearch\fP() und \fBres_search\fP() stellen eine Anfrage und wartet wie \fBres_nquery\fP() und \fBres_query\fP() auf die Antwort, implementieren jedoch zusätzlich die Vorgabe\- und Such\-Regeln, die durch \fBRES_DEFNAMES\fP und \fBRES_DNSRCH\fP gesteuert werden (siehe im Folgenden die Beschreibung der \fI_res\fP\-Optionen). Die Funktionen \fBres_nquerydomain\fP() und \fBres_querydomain\fP() stellen mittels \fBres_nquery\fP()/\fBres_query\fP() eine Anfrage auf die Verkettung von \fIname\fP und \fIdomain\fP. Die folgenden Funktionen sind Routinen tieferer Ebene, die von \fBres_query\fP()/\fBres_query\fP() benutzt werden. Die Funktionen \fBres_nmkquery\fP() und \fBres_mkquery\fP() konstruieren eine Anfragenachricht für den Domain\-Namen \fIdname\fP in \fIbuf\fP der Länge \fIbuflen\fP. Der Anfragetyp \fIop\fP ist gewöhnlich \fBQUERY\fP, kann aber jeder der in \fI\fP definierten Typen sein. \fInewrr\fP wird momentan nicht benutzt. Die Funktionen \fBres_nsend\fP() und \fBres_send\fP() senden eine vorformatierte Anfrage, die in \fImsg\fP gegeben ist und die Länge \fImsglen\fP hat und gibt die Antwort in \fIanswer\fP zurück, die die Länge \fIanslen\fP hat. Sie rufen \fBres_ninit\fP()/\fBres_init\fP() auf, falls sie noch nicht aufgerufen wurde. .PP Die Funktion \fBdn_comp\fP() komprimiert den Domain\-Namen \fIexp_dn\fP und speichert ihn in dem Puffer \fIcomp_dn\fP der Länge \fIlength\fP. Die Komprimierung benutzt ein Feld von Zeigern \fIdnptrs\fP 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 \fIlastdnptr\fP. Wenn \fIdnptr\fP NULL ist, dann sind Domain\-Namen nicht komprimiert. Wenn \fIlastdnptr\fP NULL ist, dann wird die Liste der Namen nicht aktualisiert. .PP Die Funktion \fBdn_expand\fP() expandiert den komprimierten Domain\-Namen \fIcomp_dn\fP zu einem vollen Domain\-Namen, welcher in dem Puffer \fIexp_dn\fP der Größe \fIlength\fP platziert ist. Der komprimierte Name ist in einer Anfrage\- oder Antwortnachricht enthalten und \fImsg\fP zeigt auf den Anfang der Nachricht. .PP Die Resolver\-Routinen benutzen in einer Struktur \fI__res_state\fP (entweder als Argument \fIstatep\fP übergeben oder im Falle der älteren, nicht wiedereintrittsfähigen Funktion als globale Variable \fI_res\fP) enthaltende Konfigurations\- und Zustandsinformationen. Das einzige Feld in dieser Struktur, das normalerweise vom Benutzer manipuliert wird, ist das Feld \fIoptions\fP. Dieses Feld kann bitweise Oder\-Verknüpfungen der folgenden Optionen enthalten: .TP \fBRES_INIT\fP Wahr, falls \fBres_ninit\fP() oder \fBres_init\fP() aufgerufen wurde. .TP \fBRES_DEBUG\fP .\" See resolv/README. .\" Support for RES_DEBUG was made conditional in glibc 2.2. Gibt Debugging\-Meldungen aus. Diese Option ist nur dann verfügbar, wenn glibc mit Debugging\-Unterstützung kompiliert wurde, was allerdings nicht die Vorgabe ist. .TP \fBRES_AAONLY\fP Akzeptiere nur autoritative Antworten. \fBres_send\fP() fährt fort, bis es eine autoritative Antwort findet oder gibt einen Fehler zurück. [Noch nicht implementiert.] .TP \fBRES_USEVC\fP TCP\-Verbindungen statt UDP\-Datagramme für Anfragen benutzen. .TP \fBRES_PRIMARY\fP Nur primäre Domainnameserver abfragen. [Derzeit nicht implementiert.] .TP \fBRES_IGNTC\fP Ignoriere Fehler bei verstümmelten Antworten. Versuche es nicht erneut mit TCP. .TP \fBRES_RECURSE\fP Setze das Rekursionswunsch\-Bit in Anfragen. Rekursion wird von dem Domainnameserver ausgeführt, nicht von \fBres_send\fP(). [Standardmäßig eingeschaltet] .TP \fBRES_DEFNAMES\fP Falls gesetzt fügt \fBres_search\fP() den Vorgabedomainnamen an Einzelkomponentennamen an, d.h. an solchen, die keinen Punkt enthalten. [Standardmäßig eingeschaltet] .TP \fBRES_STAYOPEN\fP Benutzt mit \fBRES_USEVC\fP um die TCP\-Verbindung zwischen Anfragen geöffnet zu halten. .TP \fBRES_DNSRCH\fP Falls gesetzt, sucht \fBres_search\fP() nach Hostnamen in der aktuellen und in übergeordneten Domains. Diese Option wird von \fBgethostbyname\fP(3) benutzt. [Eingeschaltet durch Vorgabe.] .TP \fBRES_INSECURE1\fP Akzeptiert eine Antwort von einem falschen Server. Dies kann zur Erkennung möglicher Sicherheitsrisiken verwandt werden. Sie müssen dafür aber Glibc mit aktivierter Fehlersuche übersetzen und die (nur zur Fehlersuche gedachte) Option \fBRES_DEBUG\fP verwenden. .TP \fBRES_INSECURE2\fP Akzeptiert eine Antwort, die eine falsche Anfrage enthält. Dies kann zur Erkennung möglicher Sicherheitsrisiken verwandt werden. Sie müssen dafür aber Glibc mit aktivierter Fehlersuche übersetzen und die (nur zur Fehlersuche gedachte) Option \fBRES_DEBUG\fP verwenden. .TP \fBRES_NOALIASES\fP Deaktiviert die Verwendung der Umgebungsvariablen \fBHOSTALIASES\fP. .TP \fBRES_USE_INET6\fP Versucht innerhalb der Funktion \fBgethostbyname\fP(3) zuerst eine AAAA\-Anfrage vor einer A\-Anfrage und bildet IPv4\-Antworten in eine IPv6 »getunnelte Form« ab, falls keine AAAA\-Datensätze aber eine A\-Datensatzgruppe existiert. .TP \fBRES_ROTATE\fP Causes round\-robin selection of name servers from among those listed. This has the effect of spreading the query load among all listed servers, rather than having all clients try the first listed server first every time. .TP \fBRES_NOCHECKNAME\fP Deaktiviert die moderne Prüfung von BIND der eingehenden Rechner\- und Mailnamen auf ungültige Zeichen wie Unterstrich (_), Zeichen außerhalb von ASCII oder Steuerzeichen. [Derzeit nicht implementiert.] .TP \fBRES_KEEPTSIG\fP TSI\-Datensätze nicht herausschneiden. [Derzeit nicht implementiert.] .TP \fBRES_BLAST\fP Jede Abfrage simultan und rekursiv an alle Server senden. Beachten Sie, dass diese Option \fBRES_ROTATE\fP außer Kraft setzt. .TP \fBRES_USEBSTRING\fP (seit Glibc 2.3.4) Make reverse IPv6 lookups using the bit\-label format described in RFC 2673; if this option is not set, then nibble format is used. .TP \fBRES_NOIP6DOTINT\fP Use \fIip6.arpa\fP zone in IPv6 reverse lookup instead of \fIip6.int\fP, which is deprecated since glibc 2.3.4. [Enabled by default]. .TP \fBRES_USE_EDNS0\fP (seit Glibc 2.6) Aktiviert die Unterstützung für in RFC 2671 beschriebene DNS\-Erweiterungen (EDNS0). .TP \fBRES_SNGLKUP\fP (seit Glibc 2.10) By default, glibc performs IPv4 and IPv6 lookups in parallel since version 2.9. Some appliance DNS servers cannot handle these queries properly and make the requests time out. This option disables the behavior and makes glibc perform the IPv6 and IPv4 requests sequentially (at the cost of some slowdown of the resolving process). .TP \fBRES_SNGLKUPREOP\fP Wenn die Option \fBRES_SNGLKUP\fP aktiviert ist, wird für jede Anfrage ein neuer Socket geöffnet. .TP \fBRES_USE_DNSSEC\fP DNSSEC mit Bit OK im OPT\-Datensatz verwenden. Diese Option impliziert \fBRES_USE_EDNS0\fP. .TP \fBRES_NOTLDQUERY\fP Do not look up unqualified name as a top\-level domain (TLD). .TP \fBRES_DEFAULT\fP .\" Standardoption, impliziert: \fBRES_RECURSE\fP, \fBRES_DEFNAMES\fP, \fBRES_DNSRCH\fP und \fBRES_NOIP6DOTINT\fP. .SH RÜCKGABEWERT Die Funktionen \fBres_ninit\fP() und \fBres_init\fP() geben 0 bei Erfolg zurück oder \-1, falls ein Fehler auftritt. .PP Die Funktionen \fBres_nquery\fP(), \fBres_query\fP(), \fBres_nsearch\fP(), \fBres_search\fP(), \fBres_nquerydomain\fP(), \fBres_querydomain\fP(), \fBres_nmkquery\fP(), \fBres_mkquery\fP(), \fBres_nsend\fP() und \fBres_send\fP() geben die Länge der Antwort zurück oder \-1, falls ein Fehler auftritt. .PP Die Funktionen \fBdn_comp\fP() und \fBdn_expand\fP() geben die Länge des komprimierten Namens zurück oder \-1, falls ein Fehler auftritt. .SH DATEIEN .nf /etc/resolv.conf Resolver\-Konfigurationsdatei /etc/host.conf Resolver\-Konfigurationsdatei .fi .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbw34 lb lb l l l. Schnittstelle Attribut Wert T{ \fBres_ninit\fP(), \fBres_nquery\fP(), .br \fBres_nsearch\fP(), \fBres_nquerydomain\fP(), \fBres_nsend\fP() T} Multithread\-Fähigkeit MT\-Safe locale T{ \fBres_nmkquery\fP(), \fBdn_comp\fP(), .br \fBdn_expand\fP() T} Multithread\-Fähigkeit MT\-Safe .TE .SH "KONFORM ZU" 4.3BSD. .SH "SIEHE AUCH" \fBgethostbyname\fP(3), \fBresolv.conf\fP(5), \fBresolver\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) Die Quelldatei der GNU\-C\-Bibliothek \fIresolv/README\fP. .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.09 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Helge Kreutzmann und Dr. Tobias Quathamer 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 .