t_connect(3N) t_connect(3N)
NAME
tconnect - Verbindung mit anderem Transportbenutzer einrichten
SYNTAX
#include <sys/tiuser.h>
int tconnect(int fd, struct tcall *sndcall,
struct tcall *rcvcall);
BESCHREIBUNG
Diese Funktion ermöglicht einem Transportbenutzer, einen Verbindungs-
wunsch zum angegebenen Transportbenutzer zu schicken. fd kennzeichnet
den lokalen Transportendpunkt, wo die Kommunikation stattfindet.
sndcall und rcvcall verweisen auf eine tcall-Struktur, die folgende
Felder besitzt:
struct netbuf addr;
struct netbuf opt;
struct netbuf udata;
int sequence;
sndcall enthält Informationen, die von dem Transportanbieter benötigt
werden, um eine Verbindung einzurichten. rcvcall enthält Informatio-
nen, die zu der eben eingerichteten Verbindung gehören.
Das Feld addr in sndcall gibt die Protokollzieladresse des Transport-
benutzers an. opt enthält alle protokollspezifischen Informationen,
die von dem Transportanbieter benötigt werden. udata verweist auf
optionale Benutzerdaten, die während des Verbindungsaufbau an den
Ziel-Transportbenutzer übergeben werden können. sequence hat für diese
Funktion keine Bedeutung.
Bei der Rückkehr enthält addr in rcvcall die Protokolladresse, die an
den antwortenden Transportendpunkt gebunden ist. opt enthält alle pro-
tokollspezifischen Informationen, die mit der Verbindung zu tun haben.
udata zeigt auf optionale Benutzerdaten, die durch den Ziel-Transport-
benutzer während des Verbindungsaufbaus zurückgeliefert werden können.
sequence hat für diese Funktion keine Bedeutung.
Aus dem Argument opt folgt nicht die Struktur der Optionen, die an den
Transportanbieter übergeben werden können. Die Transportvorrichtung
spezifiziert selbständig die Struktur aller Optionen, die an sie über-
geben werden. Diese Optionen sind spezifisch für das darunterliegende
Protokoll des Transportanbieters. Der Benutzer hat die Möglichkeit,
die Protokolloptionen nicht aushandeln zu müssen, indem er das len-
Feld in opt auf Null setzt. In diesem Fall kann der Transportanbieter
Standardoptionen wählen.
Das Argument udata ermöglicht dem Benutzer, Benutzerdaten an den
Ziel-Transportbenutzer zu senden, bzw. Benutzerdaten vom Ziel-Trans-
portbenutzer zu empfangen, während die Verbindung eingerichtet wird.
Die Menge an Benutzerdaten darf jedoch die von dem Transportanbieter
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
t_connect(3N) t_connect(3N)
gesetzte Grenze nicht überschreiten, die im connect-Feld des Arguments
info der Aufrufe topen(3N) oder tgetinfo(3N) zurückgeliefert wird.
Falls das len-Feld von udata in sndcall Null ist, werden keine Benut-
zerdaten an den Ziel-Transportbenutzer gesendet.
Bei der Rückkehr sind die Felder addr, opt und udata von rcvcall
aktualisiert, um die korrekten Werte widerzuspiegeln, die zu der Ver-
bindung gehören. Deshalb muß das Feld maxlen von jedem Argument
gesetzt werden, bevor die Funktion durchgeführt wird, um jeweils die
maximale Puffergröße anzugeben. rcvcall kann jedoch NULL sein, wobei
in diesem Fall keine Information bei der Rückkehr von tconnect an den
Benutzer gegeben wird.
Als Standard arbeitet tconnect im synchronen Modus und wartet auf
eine Antwort des Ziel-Transportbenutzers, bevor die Kontrolle wieder
an den lokalen Benutzer übergeben wird. Eine erfolgreiche Durchführung
(d. h. ein Rückgabewert Null) zeigt an, daß die angeforderte Verbin-
dung eingerichtet wurde. Wenn jedoch ONDELAY oder ONONBLOCK gesetzt
ist (mittels topen oder fcntl), wird tconnect im asynchronen Modus
durchgeführt. In diesem Fall wartet der Aufruf nicht auf die Antwort
des anderen Benutzers, sondern gibt die Kontrolle sofort wieder an den
lokalen Benutzer zurück. Dabei wird eine -1 zurückgegeben und terrno
auf TNODATA gesetzt, um anzuzeigen, daß die Verbindung noch nicht ein-
gerichtet worden ist. Hierbei leitet die Funktion den Vorgang zum Ver-
bindungsaufbau einfach damit ein, daß sie einen Verbindungswunsch an
den Ziel-Transportbenutzer sendet.
Im Fehlerfall wird terrno entsprechend auf einen der folgenden Werte
gesetzt:
TBADF Der angegebene Dateideskriptor verweist nicht auf
einen Transportendpunkt.
TOUTSTATE Die Funktion wurde innerhalb einer falschen Reihen-
folge ausgeführt.
TNODATA ONDELAY oder ONONBLOCK wurden gesetzt, so daß die
Funktion den Vorgang des Verbindungsaufbaus erfol-
greich einleiten konnte, jedoch nicht auf eine Antwort
vom fernen Benutzer wartet.
TBADADDR Die angegebene Protokolladresse war vom falschen For-
mat oder enthielt falsche Informationen.
TBADOPT Die angegebenen Protokolloptionen waren vom falschen
Format oder enthielten falsche Informationen.
TBADDATA Die Menge an Benutzerdaten war nicht unterhalb der von
dem Transportanbieter erlaubten Grenze.
TACCES Der Benutzer hat keine Erlaubnis, die angegebene
Adresse oder die angegebenen Optionen zu verwenden.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
t_connect(3N) t_connect(3N)
TBUFOVFLW Die Anzahl der Bytes, die für ein hereinkommendes
Argument reserviert wurden, reichen nicht aus, um den
Wert des Arguments zu speichern. Falls im synchronen
Modus gearbeitet wird, wird der Zustand des Transport-
anbieters aus Benutzersicht auf den Zustand TDATAXFER
gesetzt, und die Information für die Verbindungsan-
frage, die in rcvcall zurückgeliefert werden soll,
wird entfernt.
TLOOK Auf diesem Transportendpunkt ist ein asynchrones
Ereignis aufgetreten und verlangt sofortige Bearbei-
tung.
TNOTSUPPORT Diese Funktion wird von dem darunterliegenden Trans-
portanbieter nicht angeboten.
TSYSERR Während der Ausführung dieser Funktion ist ein System-
fehler aufgetreten.
DIAGNOSE
tconnect liefert im Erfolgsfall 0 zurück. Im Fehlerfall wird -1
zurückgegeben und terrno gesetzt, um den entsprechenden Fehler anzu-
zeigen.
SIEHE AUCH
taccept(3N), tgetinfo(3N), tlisten(3N), topen(3N), toptmgmt(3N),
trcvconnect(3N).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98