|
|
#include <sys/tiuser.h>int t_connect (fd, sndcall, rcvcall) int fd; struct t_call *sndcall; struct t_call *rcvcall;
#include <xti.h>int t_connect (fd, sndcall, rcvcall) int fd; struct t_call *sndcall; struct t_call *rcvcall;
struct netbuf addr; struct netbuf opt; struct netbuf udata; int sequence;sndcall specifies information needed by the transport provider to establish a connection, and rcvcall specifies information that is associated with the newly established connection.
netbuf is described in
netbuf(FP).
In sndcall, addr
specifies the protocol address of the destination transport user,
opt
presents any protocol-specific information that might be
needed by the transport provider, udata
points to optional user data that may be passed to
the destination transport user during connection establishment,
and sequence
has no meaning for this function.
On return in rcvcall, addr
returns the protocol address associated with the responding
transport endpoint;
opt
presents any protocol-specific information associated with the connection;
udata
points to optional user data that may be returned by
the destination transport user during connection establishment;
and sequence has no meaning for this function.
The
opt
argument implies no structure on the options that may be passed to the
transport provider.
The transport provider is free to specify the structure of any options
passed to it.
These options are specific to the underlying protocol of the transport
provider.
The user may choose not to negotiate protocol
options by setting the len
field of opt
to zero.
In this case, the provider may use default options.
The udata
argument enables the caller to pass user data to the destination
transport user and receive user data
from the destination user during connection establishment.
However, the amount of user data must not exceed the limits supported by
the transport provider as returned by
t_open(NET)
or
t_getinfo(NET)
If the len
(see netbuf in
netbuf(FP))
field of
udata
is zero in sndcall,
no data will be sent to the destination transport user.
On return, the addr
, opt
, and udata
fields of rcvcall
will be updated to reflect values associated with the connection.
Thus, the maxlen
(see netbuf in
netbuf(FP))
field of each argument
must be set before issuing this function to indicate the maximum
size of the buffer for each.
However, rcvcall
may be NULL, in which case no information is given to
the user on return from t_connect.
By default, t_connect executes in synchronous mode, and will wait for the destination user's response before returning control to the local user. A successful return (that is, a return value of zero) indicates that the requested connection has been established. However, if O_NONBLOCK is set (via t_open or fcntl), t_connect executes in asynchronous mode. In this case, the call will not wait for the remote user's response, but will return control immediately to the local user and return -1 with t_errno set to TNODATA to indicate that the connection has not yet been established. In this way, the function simply initiates the connection establishment procedure by sending a connect request to the destination transport user.
AT&T SVID Issue 3
;
X/Open CAE Specification, Networking Services, Issue 4, 1994.
;
and
Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2)
.