JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Programming Interfaces Guide     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information

Preface

1.  Memory and CPU Management

2.  Session Description Protocol API

3.  Process Scheduler

4.  Locality Group APIs

5.  Input/Output Interfaces

6.  Interprocess Communication

7.  Socket Interfaces

8.  Programming With XTI and TLI

What Are XTI and TLI?

XTI/TLI Read/Write Interface

Write Data

Read Data

Close Connection

Advanced XTI/TLI Topics

Asynchronous Execution Mode

Advanced XTI/TLI Programming Example

Asynchronous Networking

Networking Programming Models

Asynchronous Connectionless-Mode Service

Making the Endpoint Asynchronous

Asynchronous Network Transfers

Asynchronous Connection-Mode Service

Asynchronously Establishing a Connection

Asynchronous Use of a Connection

Asynchronous Open

Transferring a File Descriptor

State Transitions

XTI/TLI States

Outgoing Events

Incoming Events

State Tables

Guidelines to Protocol Independence

XTI/TLI Versus Socket Interfaces

Socket-to-XTI/TLI Equivalents

Additions to the XTI Interface

9.  Packet Filtering Hooks

10.  Transport Selection and Name-to-Address Mapping

11.  Real-time Programming and Administration

12.  The Oracle Solaris ABI and ABI Tools

A.  UNIX Domain Sockets

Index

State Transitions

The tables in the following sections describe all state transitions associated with XTI/TLI.

XTI/TLI States

The following table defines the states used in XTI/TLI state transitions, along with the service types.

Table 8-1 XTI/TLI State Transitions and Service Types

State
Description
Service Type
T_UNINIT
Uninitialized–initial and final state of interface
T_COTS, T_COTS_ORD, T_CLTS
T_UNBND
Initialized but not bound
T_COTS, T_COTS_ORD, T_CLTS
T_IDLE
No connection established
T_COTS, T_COTS_ORD, T_CLTS
T_OUTCON
Outgoing connection pending for client
T_COTS, T_COTS_ORD
T_INCON
Incoming connection pending for server
T_COTS, T_COTS_ORD
T_DATAXFER
Data transfer
T_COTS, T_COTS_ORD
T_OUTREL
Outgoing orderly release (waiting for orderly release request)
T_COTS_ORD
T_INREL
Incoming orderly release (waiting to send orderly release request)
T_COTS_ORD

Outgoing Events

The outgoing events described in the following table correspond to the status returned from the specified transport routines, where these routines send a request or response to the transport provider. In the table, some events, such as “accept,” are distinguished by the context in which they occur. The context is based on the values of the following variables:

Table 8-2 Outgoing Events

Event
Description
Service Type
opened
Successful return of t_open(3NSL)
T_COTS, T_COTS_ORD, T_CLTS
bind
Successful return of t_bind(3NSL)
T_COTS, T_COTS_ORD, T_CLTS
optmgmt
Successful return of t_optmgmt(3NSL)
T_COTS, T_COTS_ORD, T_CLTS
unbind
Successful return of t_unbind(3NSL)
T_COTS, T_COTS_ORD, T_CLTS
closed
Successful return of t_close(3NSL)
T_COTS, T_COTS_ORD, T_CLT
connect1
Successful return of t_connect(3NSL) in synchronous mode
T_COTS, T_COTS_ORD
connect2
TNODATA error on t_connect(3NSL) in asynchronous mode, or TLOOK error due to a disconnect request arriving on the transport endpoint
T_COTS, T_COTS_ORD
accept1
Successful return of t_accept(3NSL) with ocnt == 1, fd == resfd
T_COTS, T_COTS_ORD
accept2
Successful return of t_accept(3NSL) with ocnt== 1, fd!= resfd
T_COTS, T_COTS_ORD
accept3
Successful return of t_accept(3NSL) with ocnt > 1
T_COTS, T_COTS_ORD
snd
Successful return of t_snd(3NSL)
T_COTS, T_COTS_ORD
snddis1
Successful return of t_snddis(3NSL) with ocnt <= 1
T_COTS, T_COTS_ORD
snddis2
Successful return of t_snddis(3NSL) with ocnt > 1
T_COTS, T_COTS_ORD
sndrel
Successful return of t_sndrel(3NSL)
T_COTS_ORD
sndudata
Successful return of t_sndudata(3NSL)
T_CLTS

Incoming Events

The incoming events correspond to the successful return of the specified routines. These routines return data or event information from the transport provider. The only incoming event not associated directly with the return of a routine is pass_conn, which occurs when a connection is transferred to another endpoint. The event occurs on the endpoint that is being passed the connection, although no XTI/TLI routine is called on the endpoint.

In the following table, the rcvdis events are distinguished by the value of ocnt, the count of outstanding connect requests on the endpoint.

Table 8-3 Incoming Events

Event
Description
Service Type
listen
Successful return of t_listen(3NSL)
T_COTS, T_COTS_ORD
rcvconnect
Successful return of t_rcvconnect(3NSL)
T_COTS, T_COTS_ORD
rcv
Successful return of t_rcv(3NSL)
T_COTS, T_COTS_ORD
rcvdis1
Successful return of t_rcvdis(3NSL) rcvdis1t_rcvdis(), onct <= 0
T_COTS, T_COTS_ORD
rcvdis2
Successful return of t_rcvdis(3NSL), ocnt == 1
T_COTS, T_COTS_ORD
rcvdis3
Successful return of t_rcvdis(3NSL) with ocnt > 1
T_COTS, T_COTS_ORD
rcvrel
Successful return of t_rcvrel(3NSL)
T_COTS_ORD
rcvudata
Successful return of t_rcvudata(3NSL)
T_CLTS
rcvuderr
Successful return of t_rcvuderr(3NSL)
T_CLTS
pass_conn
Receive a passed connection
T_COTS, T_COTS_ORD

State Tables

The state tables describe the XTI/TLI state transitions. Each box contains the next state, given the current state (column) and the current event (row). An empty box is an invalid state/event combination. Each box can also have an action list. Actions must be done in the order specified in the box.

You should understand the following when studying the state tables:

Some of the state transitions listed in the tables below offer actions the transport user must take. Each action is represented by a digit derived from the list below:

The following table shows endpoint establishment states.

Table 8-4 Connection Establishment State

Event/State
T_UNINIT
T_UNBND
T_IDLE
opened
T_UNBND
bind
T_IDLE[1]
optmgmt (TLI only)
T_IDLE
unbind
T_UNBND
closed
T_UNINIT

The following table shows data transfer in connection mode.

Table 8-5 Connection Mode State: Part 1

Event/State
T_IDLE
T_OUTCON
T_INCON
T_DATAXFER
connect1
T_DATAXFER
connect2
T_OUTCON
rcvconnect
T_DATAXFER
listen
T_INCON [2]
T_INCON [2]
accept1
T_DATAXFER [3]
accept2
T_IDLE [3] [4]
accept3
T_INCON [3] [4]
snd
T_DATAXFER
rcv
T_DATAXFER
snddis1
T_IDLE
T_IDLE [3]
T_IDLE
snddis2
T_INCON [3]
rcvdis1
T_IDLE
T_IDLE
rcvdis2
T_IDLE [3]
rcvdis3
T_INCON [3]
sndrel
T_OUTREL
rcvrel
T_INREL
pass_conn
T_DATAXFER
optmgmt
T_IDLE
T_OUTCON
T_INCON
T_DATAXFER
closed
T_UNINIT
T_UNINIT
T_UNINIT
T_UNINIT

The following table shows connection establishment/connection release/data transfer in connection mode.

Table 8-6 Connection Mode State: Part 2

Event/State
T_OUTREL
T_INREL
T_UNBND
connect1
connect2
rcvconnect
listen
accept1
accept2
accept3
snd
T_INREL
rcv
T_OUTREL
snddis1
T_IDLE
T_IDLE
snddis2
rcvdis1
T_IDLE
T_IDLE
rcvdis2
rcvdis3
sndrel
T_IDLE
rcvrel
T_IDLE
pass_conn
T_DATAXFER
optmgmt
T_OUTREL
T_INREL
T_UNBND
closed
T_UNINIT
T_UNINIT

The following table shows connectionless mode states.

Table 8-7 Connectionless Mode State

Event/State
T_IDLE
snudata
T_IDLE
rcvdata
T_IDLE
rcvuderr
T_IDLE