NAME
t_snddis() — send user-initiated disconnect request
SYNOPSIS
#include <xti.h> /* for X/OPEN Transport Interface - XTI */
/* or */
#include <tiuser.h> /* for Transport Layer Interface - TLI */
int t_snddis (fd, call);
int fd;
struct t_call *call;
DESCRIPTION
The
t_snddis()
function is used to initiate an abortive release on an already
established connection or to reject a connect request.
fd
identifies the local transport endpoint of the connection, and
call
specifies information associated with the abortive release.
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
The values in
call
have different semantics, depending on the context of
the call to
t_snddis().
When rejecting a connect request,
call
must be a non-null pointer and contain a valid value of
sequence
to uniquely
identify the rejected connect indication to the transport provider.
The
sequence
parameter is only meaningful, if the transport connection is in
the
T_INCON
state (see
t_getstate(3)).
The
addr
and
opt
fields of
call
are ignored. In all other cases,
call
need only be used when data is being sent with the disconnect request.
The
addr,
opt,
and
sequence
fields of the
t_call
structure are ignored. If the
user does not wish to send data to the remote user, the value of
call
may be a null pointer.
udata
specifies the user data to be sent to the remote user. The amount
of user data must not exceed the limits supported by the transport
provider as returned in the
discon
field of the
info
argument of
t_open()
or
t_getinfo().
If the
len
field of
udata
is zero, no data will be sent to the remote user.
Valid States
T_DATAXFER,
T_OUTCON,
T_OUTREL,
T_INREL,
T_INCON
(ocnt > 0).
Caveats
t_snddis()
is an abortive disconnect. Therefore a
t_snddis()
issued on a connection endpoint may cause data previously sent via
t_snd()
or data not yet received to be lost (even if an error is returned).
Fork Safety
t_snddis
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.
- [TOUTSTATE]
This function was issued in the wrong sequence on the transport endpoint
referenced by
fd.
- [TBADDATA]
(XTI only) The amount of user data specified was not within the bounds
allowed by the transport provider. Some outbound data queued for this
endpoint may be lost.
- [TBADSEQ]
An invalid sequence was specified, or a null
call
pointer was specified
when rejecting a connect request. Some outbound data queued for this endpoint
may be lost.
- [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.
- [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 other suitable
XTI (
t_errno).
STANDARDS CONFORMANCE
t_snddis(): SVID2, XPG3, XPG4