Manual pages › Network library (3N)
t_listen(3N)
listen for a connect request
From the original Amiga UNIX 2.1 manual. Some things it mentions may not be in this release.
NAME
t_listen - listen for a connect request
SYNOPSIS
#include <tiuser.h> int t_listen(fd, call) int fd; struct t_call *call;
DESCRIPTION
This function listens for a connect request from a calling transport user. fd identifies the local transport endpoint where connect indications arrive, and on return, call contains information describing the connect indication. call points to a t_call structure, which contains the following members:
struct netbuf addr; truct netbuf opt; struct netbuf udata; int sequence;
netbuf is described in intro(3). In call, addr returns the protocol address of the calling transport user, opt returns protocol-specific parameters associated with the connect request, udata returns any user data sent by the caller on the connect request, and sequence is a number that uniquely identifies the returned connect indication. The value of sequence enables the user to listen for multiple connect indications before responding to any of them.
Since this function returns values for the addr, opt, and udata fields of call, the maxlen [see netbuf in intro(3)] field of each must be set before issuing t_listen to indicate the maximum size of the buffer for each.
By default, t_listen executes in synchronous mode and waits for a connect indication to arrive before returning to the user. However, if O_NDELAY or O_NONBLOCK is set (via t_open or fcntl), t_listen executes asynchronously, reducing to a poll for existing connect indications. If none are available, it returns -1 and sets t_errno to TNODATA. On failure, t_errno may be set to one of the following:
[TBADF] The specified file descriptor 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. The provider's state, as seen by the user, changes to T_INCON, and the connect indication information to be returned in call is discarded.
[TNODATA] O_NDELAY or O_NONBLOCK was set, but no connect indications had been queued.
[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.
CAVEATS
If a user issues t_listen in synchronous mode on a transport endpoint that was not bound for listening (i.e., qlen was zero on t_bind), the call will wait forever because no connect indications will arrive on that endpoint.
SEE ALSO
intro(3), t_accept(3N), t_bind(3N), t_connect(3N), t_open(3N), t_rcvconnect(3N). UNIX System V Network Programmer's Guide.
DIAGNOSTICS
t_listen returns 0 on success and -1 on failure and t_errno is set to indicate the error.