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