up | Inhaltsverzeichniss | Kommentar

Manual page for TCPTLI(4P)

tcptli - TLI-Conforming TCP Stream-Head

CONFIG

pseudo-device clone

pseudo-device tcptli32

SYNOPSIS

#include <fcntl.h>
#include <nettli/tiuser.h>

tfd = t_open("/dev/tcp", O_RDWR, tinfo); struct t_info *tinfo;

DESCRIPTION

TCPTLI provides access to TCP service via the Transport Library Interface (TLI). Prior to this release, TCP access was only possible via the socket programming interface. Programmers have the choice of using either the socket or TLI programming interface for their application.

TCPTLI is implemented in STREAMS conforming to the Transport Provider Interface (TPI) specification as a TCP Transport Provider to a TLI application. It utilizes the existing underlying socket and TCP support in the SunOS kernel to communicate over the network. It is also a clone driver, see clone(4) for more characteristics pertaining to a clone STREAMS driver.

The notion of an address is the same as the socket address (struct sockaddr_in) defined in <netinet/in.h>. TCPTLI maintains transport state information for each outstanding connection and the current state of the provider may be retrieved via the t_getstate(3N) call. See t_getstate(3N) for a list of possible states.

A server usually starts up with the t_open(3N) call followed by t_bind(3N) to bind an address that it listens for incoming connection. It may call t_listen(3N) to retrieve an indication of a connect request from another transport user, and then calls t_accept(3N) if it is willing to provide its service. TLI allows a server to accept connection on the same file descriptor it is listening on, or a different file descriptor (as in the sense of socket's accept(2) ).

A client usually calls t_open(3N) and followed by a call to t_bind(3N). Then it calls t_connect(3N) to the address of a server advertized for providing service. Once the connection is established, it may use t_rcv(3N) and t_snd(3N) to receive and send data. The routine t_close(3N) is used to terminate the connection.

TLI ERRORS

An TLI operation may fail if one of the following error conditions is encountered. They are returned by the TLI user level library.
TBADADDR
Incorrect/invalid address format supplied by the user.
TBADOPT
Incorrect option.
TACCESS
No permission.
TBADF
Illegal transport file descriptor.
TNOADDR
Could not allocate address
TOUTSTATE
The transport is in an incorrect state.
TBADSEQ
Incorrect sequence number.
TSYSERR
A system error, i.e. below the transport level (see list below) is encountered.
TLOOK
An event requires attention.
TBADDATA
Illegal amount of data
TBUFOVFLW
Buffer not large enough.
TFLOW
Flow control problem.
TNODATA
No data.
TNODIS
No discon_ind is found on the queue.
TNOUDERR
Unit data not found.
TBADFLAG
Bad flags.
TNOREL
No orderly release request found on queue.
TNOTSUPPORT
Protocol/primitive is not supported.
TSTATECHNG
State is in the process of changing.

SYSTEM ERRORS

The following errors are returned by TCPTLI. However they may be translated to the above TLI errors by the user level library ( libnsl ).
ENXIO
Invalid device or address, out of range.
EBUSY
Request device is busy or not ready.
ENOMEM
Not enough memory for transmitting data, non fatal.
EPROTO
The operation encountered an underlying protocol. error (TCP).
EWOULDBLOCK
The operation would block as normally the file descriptors are set with non-blocking flag.
EACCES
Permission denied.
ENOBUFS
The system ran out of memory for internal (network) data structures.

SEE ALSO

accept.2 t_open.3n t_close.3n t_accept.3n t_getstate.3n t_bind.3n t_connect.3n t_rcv.3n t_snd.3n t_alloc.3n t_unbind.3n t_getinfo.3n

BUGS

Only TCP (i.e. connection oriented) protocol is supported, no UDP. The maximum network connection is 32 by default. A new kernel has to be configured if an increase of such limit is desired: by changing the entry pseudo-device tcptli32 in the kernel config file to tcptli64.


index | Inhaltsverzeichniss | Kommentar

Created by unroff & hp-tools. © somebody (See intro for details). All Rights Reserved. Last modified 11/5/97