Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ t_bind(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

t_bind(3N)                                                       t_bind(3N)

NAME
     tbind - Adresse mit Transportendpunkt verbinden

SYNTAX
     #include <sys/tiuser.h>

     int tbind (int fd, struct tbind *req, struct tbind *ret);

BESCHREIBUNG
     Die Funktion bindet eine Protokolladresse mit dem durch fd angegebenen
     Transportendpunkt und aktiviert ihn. Im verbindungsorientierten Modus
     kann der Transportanbieter mit dem Annehmen oder dem Versenden von
     Verbindungswünschen auf dem Transportendpunkt beginnen. Im verbin-
     dungslosen Modus kann der Benutzer Dateneinheiten durch den Transport-
     endpunkt versenden oder empfangen.

     Die Argumente req und ret zeigen auf eine tbind-Struktur, die die
     folgenden Felder enthält:

          struct netbuf addr;
          unsigned qlen;

     Das addr-Feld der Struktur von tbind spezifiziert eine Protokoll-
     adresse. Das qlen-Feld zeigt die maximale Anzahl noch ausstehender
     Verbindungswünsche an.

     req wird zur Anforderung verwendet, um eine Adresse, die durch die
     netbuf-Struktur dargestellt wird, an den gegebenen Transportendpunkt
     zu binden. len gibt die Anzahl der Bytes in der Adresse an und buf
     zeigt auf den Adreßpuffer. maxlen hat für das Argument req keine
     Bedeutung. Bei der Rückkehr enthält ret die Adresse, die den Trans-
     portanbieter an den Transportendpunkt gebunden hat. Diese kann ver-
     schieden von der Adresse sein, die durch den Benutzer in req angegeben
     wurde. In ret spezifiziert der Benutzer maxlen, die maximale Größe des
     Adreßpuffers, und buf, der auf den Puffer zeigt, in dem die Adresse
     abgelegt werden soll. Bei der Rückkehr gibt len die Anzahl der Bytes
     in der verbundenen Adresse an, und buf verweist auf die gebundene
     Adresse. Wenn maxlen nicht groß genug ist, um die zurückgelieferte
     Adresse aufnehmen zu können, wird der Fehlercode TBUFOVFLW zurückge-
     liefert.

     Wenn die angeforderte Adresse nicht verfügbar ist, oder wenn in req
     keine Adresse angegeben ist (das len-Feld von addr in req ist NULL),
     kann der Transportanbieter eine geeignete Adresse zuweisen, die gebun-
     den werden soll, und liefert die Adresse im Feld addr von ret zurück.
     Der Benutzer kann die Adressen in req und ret vergleichen, um festzu-
     stellen, ob der Transportanbieter den Transportendpunkt mit einer
     anderen als der angeforderten Adresse gebunden hat.

     req kann NULL sein, wenn der Benutzer keine zu bindende Adresse ange-
     ben will. Dabei wird der Wert von qlen als NULL vorausgesetzt und der
     Transportanbieter muß dem Transportendpunkt eine Adresse zuweisen.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

t_bind(3N)                                                       t_bind(3N)

     Ebenso kann ret NULL sein, wenn es dem Benutzer gleichgültig ist, wel-
     che Adresse von dem Transportanbieter verbunden wird und welchen Wert
     qlen besitzt. Es ist erlaubt, req und ret im gleichen Aufruf NULL zu
     setzen. In diesem Fall wählt der Transportanbieter die Adresse aus,
     die zum Transportendpunkt verbunden wird, liefert diese Information
     jedoch nicht an den Benutzer zurück.

     Das qlen-Feld ist nur von Bedeutung, wenn fd auf einen verbindungs-
     orientierten Dienst verweist. Es gibt die maximale Anzahl ausstehender
     Verbindungswünsche an, die der Transportanbieter für den gegebenen
     Transportendpunkt unterstützen soll. Eine ausstehende Verbindungsan-
     zeige ist eine Verbindungsanzeige, die dem Transportbenutzer durch den
     Transportanbieter übergeben wurde [siehe tlisten(3N) und
     taccept(3N)]. Ein Wert von qlen, der größer als NULL ist, ist nur von
     Bedeutung für einen passiven Transportbenutzer, der von anderen Benut-
     zern Anrufe erwartet. Der Wert von qlen wird mit dem Transportanbieter
     ausgehandelt und kann geändert werden, wenn der Transportanbieter die
     angegebene Anzahl ausstehender Verbindungswünsche nicht unterstützen
     kann. Bei der Rückkehr enthält das qlen-Feld der Struktur ret den aus-
     gehandelten Wert.

     Diese Funktion erlaubt, daß mehr als ein Transportendpunkt an dersel-
     ben Protokolladresse verbunden wird (jedoch muß auch der Transportan-
     bieter diese Möglichkeit anbieten). Es ist jedoch nicht erlaubt, mehr
     als eine Protokolladresse an denselben Transportendpunkt zu binden.
     Wenn ein Benutzer mehr als einen Transportendpunkt mit derselben Pro-
     tokolladresse bindet, kann nur ein Endpunkt für das Abhören nach Ver-
     bindungswünschen, die an diese Protokolladresse kommen, verwendet wer-
     den. Mit anderen Worten, es kann für eine gegebene Protokolladresse
     nur ein tbind-Aufruf einen Wert von qlen angeben, der größer als NULL
     ist. Auf diesem Weg kann der Transportanbieter erkennen, welchem Tran-
     sportendpunkt eine ankommende Verbindungsanfrage gemeldet werden soll.
     Wenn ein Benutzer versucht, eine Protokolladresse mit einem zweiten
     Transportendpunkt mit einem Wert qlen, der größer als NULL ist, zu
     binden, wird der Transportanbieter eine andere Adresse auswählen, die
     mit dem Endpunkt verbunden werden soll. Wenn ein Benutzer eine Verbin-
     dung auf dem Transportendpunkt akzeptiert, der als der abhörende End-
     punkt gilt, ist die verbundene Adresse für die Dauer der Verbindung
     belegt. Es können keine weiteren Transportendpunkte zum Abhören ver-
     bunden werden, solange der erste Abhörendpunkt sich in der Datenüber-
     tragungsphase befindet. Dies verhindert, daß mehr als ein Transport-
     endpunkt mit der gleichen Protokolladresse verbunden wird und dabei
     von mehr als ein Endpunkt Verbindungswünsche akzeptiert.

     Im Fehlerfall wird terrno entsprechend auf einen der folgenden Werte
     gesetzt:

     TBADF           Der angegebene Dateideskriptor verweist nicht auf
                     einen Transportendpunkt.

     TOUTSTATE       Die Funktion wurde in falscher Reihenfolge ausgeführt.



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

t_bind(3N)                                                       t_bind(3N)

     TBADADDR        Die angegebene Protokolladresse hatte ein falsches
                     Format oder enthielt falsche Informationen.

     TNOADDR         Der Transportanbieter konnte keine Adresse reservie-
                     ren.

     TACCES          Der Benutzer hat keine Erlaubnis, die spezifizierte
                     Adresse zu benutzen.

     TBUFOVFLW       Die erlaubte Anzahl Bytes für ein ankommendes Argument
                     ist zu klein, um den Wert des Arguments zu speichern.
                     Der Zustand des Transportanbieters wird in TIDLE
                     umgeändert, und die Information, die in ret zurückge-
                     liefert werden soll, wird gelöscht.

     TSYSERR         Während der Ausführung dieser Funktion ist ein System-
                     fehler aufgetreten.

DIAGNOSE
     tbind liefert im Erfolgsfall 0 zurück. Im Fehlerfall wird -1 zurück-
     gegeben und terrno wird gesetzt, um den Fehler anzuzeigen.

SIEHE AUCH
     topen(3N), toptmgmt(3N), tunbind(3N).






























Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

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