NAME
t_rcvconnect() — receive the confirmation from a connect request
SYNOPSIS
#include <xti.h> /* for X/OPEN Transport Interface - XTI */
/* or */
#include <tiuser.h> /* for Transport Layer Interface - TLI */
int t_rcvconnect (fd, call);
int fd;
struct t_call *call;
DESCRIPTION
The
t_rcvconnect()
function enables a calling transport user to determine the status of a
previously sent connect request.
t_rcvconnect()
is also used in conjunction with
t_connect()
to establish a connection in asynchronous mode. The
connection will be established on successful completion of this function.
fd
identifies the local transport endpoint where communication will be
established.
call
contains information associated with the newly
established connection.
call
points to a
t_call
structure which contains the following members:
struct netbuf addr;
struct netbuf opt;
struct netbuf udata;
int sequence;
The type
netbuf
structure is defined in the
<xti.h>
or
<tiuser.h>
header file. This structure, which is used to define buffer
parameters, has the following members:
- unsigned int maxlen
maximum byte length of the data buffer
- unsigned int len
actual byte length of data written to buffer
- char *buf
points to buffer location
In
call,
addr
returns the protocol address associated with the
responding transport endpoint.
opt
presents any protocol-specific information associated with the connection.
For XTI over the OSI transport provider, struct
isoco_options
should be used. For TLI, see the
documentation for the transport provider being used.
udata
points to
optional user data that may be returned by the destination transport
user during connection establishment.
sequence
has no meaning for this function.
The
maxlen
field of each argument must be set before issuing this
function to indicate the maximum size of the buffer for each. However,
call
may be a null pointer, in which case no information is given to
the user on return from
t_rcvconnect().
By default,
t_rcvconnect()
executes in synchronous mode and waits for the connection to be
established before returning. On return, the
addr,
opt,
and
udata
fields reflect values associated with the connection.
If
O_NONBLOCK
is set (via
t_open()
or
fcntl()),
t_rcvconnect()
executes in asynchronous mode, and reduces to a poll for
existing connect confirmations. If none are available,
t_rcvconnect()
fails and returns immediately without waiting for the
connection to be established. (See [TNODATA] below.)
t_rcvconnect()
must be re-issued at a later time to complete the connection
establishment phase and retrieve the information returned in
call.
Fork Safety
t_rcvconnect
is not fork-safe.
RETURN VALUE
Upon successful completion, a value of 0 is returned. Otherwise, a
value of -1 is returned and
t_errno
is set to indicate the error.
ERRORS
On failure,
t_errno
is set to one of the following:
- [TBADF]
The specified identifier does not refer to a transport endpoint.
- [TBUFOVFLW]
The number of bytes allocated for an incoming argument is not
sufficient to store the value of that argument and the connect
information to be returned in
call
will be discarded. The provider's state, as seen by the user, will be
changed to
T_DATAXFER.
- [TNODATA]
O_NONBLOCK
was set, but a connect confirmation has not yet arrived.
- [TLOOK]
An asynchronous event has occurred on this transport endpoint and
requires immediate attention.
- [TNOTSUPPORT]
This function is not supported by the underlying transport provider.
- [TOUTSTATE]
This function was issued in the wrong sequence on the transport
endpoint referenced by
fd.
- [TSYSERR]
A system error has occurred during execution of this function.
- [TPROTO]
(XTI only) This error indicates that a communication problem has been detected
between XTI and the transport provider for which there is no existing
XTI (t_errno).
FILES
- /usr/include/xti.h
XTI data structure
- /usr/include/tiuser.h
TLI data structure
STANDARDS CONFORMANCE
t_rcvconnect(): SVID2, XPG3, XPG4