t_accept(3xti)t_accept(3xti)Namet_accept - accept a connect request
Syntax
#include <xti.h>
int t_accept(fd, resfd, call)
int fd;
int resfd;
struct t_call *call;
Arguments
fd Identifies the local transport endpoint where the connect
indication arrived.
resfd Specifies the local transport endpoint where the connection
is to be established.
call Contains information required by the transport provider to
complete the connection.
The Call argument points to a t_call structure that contains
the following members:
struct netbuf addr;
struct netbuf opt;
struct netbuf udata;
int sequence;
In call, the members have the following meanings:
addr Specifies the address of the caller.
opt Indicates any protocol-specific parameters asso‐
ciated with the connection.
udata Points to any user data to be returned to the
caller.
sequence Is the value returned by that uniquely associates
the response with a previously received connect
indication.
Description
A transport user issues this function to accept a connect request. A
transport user can accept a connection on either the same, or on a dif‐
ferent local transport endpoint than the one on which the connect indi‐
cation arrived. Before the connection can be accepted on the same end‐
point (resfd==fd), the user must have responded to any previous connect
indications received on that transport endpoint by means of or Other‐
wise, fails and sets t_errno to [TBADF].
If a different transport endpoint is specified (resfd!=fd), the end‐
point must be bound to a protocol address (if it is the same, qlen must
be set to 0) and must be in the T_IDLE state before the is issued.
For both types of endpoints, fails and sets t_errno to [TLOOK] if there
are connection indications, (for example, connect or disconnect) wait‐
ing to be received on that endpoint.
The values of parameters specified by opt and the syntax of those val‐
ues are protocol-specific. The udata argument enables the called trans‐
port user to send user data to the caller and the amount of user data
must not exceed the limits supported by the transport provider as
returned in the connect field of the info argument of or If the len
field of udata is zero, no data is sent to the caller.
All the maxlen fields are meaningless.
──────────────────────────────────────────────
Parameters Before Call After Call
──────────────────────────────────────────────
fd x /
resfd x /
call->addr.maxlen / /
call->addr.len x /
call->addr.buf ?(?) /
call->opt.maxlen / /
call->opt.len x /
call->opt.buf ?(?) /
call->udata.maxlen / /
call->udata.len x /
call->udata.buf ?(?) /
call->sequence x /
──────────────────────────────────────────────
Return Values
Upon successful completion, a value of 0 is returned. On failure, a
value of -1 is returned, and t_errno is set to indicate the error.
Diagnostics
On failure, t_errno is set to one of the following:
[TBADF] The file descriptor fd or resfd does not refer to a
transport endpoint, or the user is illegally
accepting a connection on the same transport end‐
point on which the connect indication arrived.
[TOUTSTATE] The function was issued in the wrong sequence on
the transport endpoint referenced by fd, or the
transport endpoint referred to by resfd is not in
the appropriate state.
[TACCES] The user does not have permission to accept a con‐
nection on the responding transport endpoint or to
use the specified options.
[TBADOPT] The specified options were in an incorrect format
or contained illegal information.
[TBADDATA] The specific amount of user data was not within the
bounds allowed by the transport provider.
[TBADADDR] The specified protocol address was in an incorrect
format or contained illegal information.
[TBADSEQ] The specified sequence number was invalid.
[TLOOK] An asynchronous event has occurred on the transport
endpoint referenced by fd and requires immediate
attention.
[TNOTSUPPORT] This function is not supported by the underlying
transport provider.
[TSYSERR] A system error has occurred during execution of
this function.
See Alsot_connect(3xti), t_getstate(3xti), t_listen(3xti), t_open(3xti) ,
t_optmgmt(3xti), t_rcvconnect(3xti)t_accept(3xti)