Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ netdir(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

gethostname(3N)

getnetpath(3N)

netconfig(4)

netdir(3N)                                                       netdir(3N)

NAME
     netdir: netdirgetbyname, netdirgetbyaddr, netdirfree, taddr2uaddr,
     uaddr2taddr, netdirperror, netdiroptions, netdirsperror - Namen auf
     Adressen des Transportsystems generisch abbilden

SYNTAX
     #include <netdir.h>

     int netdirgetbyname(struct netconfig *config,
             struct ndhostserv  *service,
             struct ndaddrlist  **addrs);

     int netdirgetbyaddr(struct netconfig  *config,
             struct ndhostservlist  **service,
             struct netbuf  *netaddr);

     void netdirfree(void ptr, int ident);

     char *taddr2uaddr(struct netconfig *config, struct netbuf *addr);

     struct netbuf *uaddr2taddr(struct netconfig *config, char *uaddr);

     int netdiroptions(struct netconfig  *netconfig, int  option, int  fd,
             char *pointtoargs);

     void netdirperror(char *s);

     char *netdirsperror(void)

BESCHREIBUNG
     Diese Routinen bieten eine generische Schnittstelle für die Abbildung
     von Namen auf Adressen an und arbeiten mit allen Transportprotokollen.
     Diese Schnittstelle ermöglicht Programmen in einer generischen Art und
     Weise, transportspezifische Adressen in allgemeine Strukturen umzuset-
     zen. Die Umsetzung in umgekehrter Richtung ist ebenso möglich.

     Die Routine netdirgetbyname() bildet einen Rechnernamen und einen
     Dienstnamen in der Struktur ndhostserv auf eine Reihe von Adressen
     ab. Die Adressen sind von einem Typ, der dem Transportsystem, das in
     der Struktur netconfig festgelegt ist, bekannt ist. Die Routine lie-
     fert alle Adressen, die für den Transport gültig sind in der Struktur
     ndaddrlist. Die Strukturen ndhostserv und ndaddrlist haben die
     unten beschriebenen Elemente. Die Struktur netconfig wird in
     netconfig(4) beschrieben.

          struct ndaddrlist    {
                  int ncnt
                  struct netbuf  *naddrs;
          };






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

netdir(3N)                                                       netdir(3N)

          struct ndhostserv    {
                  char  *hhost;
                  char  *hserv;
          };

     netdirgetbyname() akzeptiert einige spezielle Rechnernamen. Diese
     Rechnernamen sind Hinweise für die darunterliegenden Abbildungsrouti-
     nen und werden von einigen Entwicklern von Transportdiensten benötigt,
     um die korrekte Information zum Aufrufer zurückzugeben. Die Rechnerna-
     men sind in /usr/include/netdir.h definiert. Die aktuell definierten
     Rechnernamen sind:

     HOSTSELF   stellt die Adresse dar, an die lokale Programme ihre End-
                 punkte binden. HOSTSELF ist verschieden von dem Rechner-
                 namen, der durch gethostname(3N) geliefert wird. Letzterer
                 ist die Adresse, an die ferne Programme ihre Endpunkte
                 binden.

     HOSTANY    repräsentiert jeden Host, auf den durch diesen Transport-
                 anbieter zugegriffen werden kann. HOSTANY erlaubt Anwen-
                 dungen, erforderliche Dienste zu spezifizieren, ohne einen
                 bestimmten Rechnernamen anzugeben.

     HOSTBROADCAST
                 repräsentiert die Adresse für alle Hosts, auf die durch
                 diesen Transportanbieter zugegriffen werden kann. Netz-
                 werknachrichten auf dieser Adresse werden von allen
                 Maschinen empfangen.

     Alle Felder der Struktur ndhostserv müssen initialisiert werden.

     Um alle verfügbaren Transporte aufzufinden, müssen Sie die Routine
     netdirgetbyname() mit jeder Struktur netconfig aufrufen, die von dem
     getnetpath(3N)-Aufruf zurückgeliefert wurde.

     Die Routine netdirgetbyaddr() bildet Adressen auf Dienstnamen ab. Sie
     liefert eine Liste von Host- und Dienstnamen zurück, die sich mit die-
     ser Adresse ergeben würden. Wenn mehr als ein Paar von Host- und
     Dienstnamen zurückgegeben wird, enthält das erste Paar den bevorzugten
     Host- und Dienstnamen.

          struct ndhostservlist {
                  int  *hcnt;
                  struct hostserv  *hhostservs;
          };

     Die Routine netdirfree() wird für die Freigabe von Strukturen verwen-
     det, die durch die Routinen für die Abbildung von Namen auf Adressen
     angelegt wurden.





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

netdir(3N)                                                       netdir(3N)

     Die Routinen taddr2uaddr() und uaddr2taddr() bieten eine Umsetzung von
     universellen Adressen auf netbuf-Strukturen vom Typ TLI (Transport
     Level Interface). Die Routinen erwarten Zeiger auf Zeichenketten, und
     liefern ebenfalls Zeiger auf Zeichenketten zurück. Die Routine
     taddr2uaddr() liefert einen Zeiger auf eine Zeichenkette zurück, die
     die universelle Adresse enthält. Wenn die Umsetzung nicht möglich ist,
     wird NULL zurückgegeben. Dies muß keinen Fehler zur Folge haben, da
     einige Transporte kein universelles Adreßformat vorsehen.

     option, fd und pointertoargs werden der Routine netdiroptions für
     den in netconfig spezifizierten Transport übergeben. Es gibt vier
     Werte für option:

     NDSETBROADCAST

     NDSETRESERVEDPORT

     NDCHECKRESERVEDPORT

     NDMERGEADDR

     Falls ein Transportanbieter keine Option unterstützt, liefert
     netdiroptions -1 zurück und setzt nderror auf NDNOCTRL.

     Die jeweils spezifischen Aktionen sind:

     NDSETBROADCAST
          Setzt die Erlaubnis für Broadcast, falls der Transport Broadcast
          anbietet. fd ist ein Transport-Dateideskriptor, der als Ergebnis
          eines topen auf /dev/udp zurückgegeben wird. pointertoargs
          wird nicht verwendet. Danach können Broadcasts auf dem Dateide-
          skriptor fd durchgeführt werden.

     NDSETRESERVEDPORT
          Erlaubt Anwendungen, sich an einen reservierten Port zu binden,
          falls der Transportanbieter das erlaubt. fd ist ein Dateideskrip-
          tor auf den Transport (er darf nicht zu einer Adresse gebunden
          werden). Falls pointertoargs NULL ist, wird fd an einen reser-
          vierten Port gebunden. Falls pointertoargs ein Zeiger auf eine
          netbuf-Struktur ist, wird versucht, die darin angegebene Adresse
          an einen reservierten Port zu binden.

     NDCHECKRESERVEDPORT
          Wird dazu verwendet, zu verifizieren, ob eine Adresse zu einem
          reservierten Port gehört, falls der Transportanbieter das
          erlaubt. fd wird nicht verwendet. pointertoargs ist ein Zeiger
          auf eine netbuf-Struktur, die eine Adresse enthält. Diese Option
          liefert 0, falls die in pointertoargs angegebene Adresse reser-
          viert ist.





Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

netdir(3N)                                                       netdir(3N)

     NDMERGEADDR
          Wird dazu verwendet, für eine "lokale Adresse" (wie die Adresse
          0.0.0.0) eine "reale Adresse" zurückzuliefern, mit der sich
          Client-Maschinen verbinden können. fd wird nicht verwendet und
          pointertoargs ist ein Zeiger auf eine Struktur ndmergearg, die
          folgendes Format hat:

          struct ndmergearg {
                  char *suaddr;  /* universelle Adresse des Servers */
                  char *cuaddr;  /* universelle Adresse des Client */
                  char *muaddr;  /* das Ergebnis */
          }

     suaddr hat ein Format der Art 0.0.0.0.1.12. Falls der Aufruf erfol-
     greich war, wird muaddr auf ein Format der Art 192.11.109.89.1.12
     gesetzt. Bei den meisten Transporten entspricht muaddr exakt suaddr.

     Die Routine netdirperror() gibt eine Fehlermeldung auf der Standard-
     ausgabe aus und zeigt an, warum eine der Abbildungsroutinen (von Namen
     auf Adressen) fehlgeschlagen ist. Die Fehlermeldung wird nach der Zei-
     chenkette ausgegeben, die als Argument übergeben wird.

     Die Routine netdirsperror() liefert eine Zeichenkette zurück, die
     eine Fehlermeldung enthält und anzeigt, warum eine der Routinen für
     die Abbildung von Namen auf Adressen fehlgeschlagen ist.

SIEHE AUCH
     gethostname(3N), getnetpath(3N), netconfig(4).


























Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

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