Oracle® Solaris 11.2 Programming Interfaces Guide

Exit Print View

Updated: July 2014
 
 

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:

  • t_close(3NSL) terminates an established connection for a connection-oriented transport provider. The connection termination will be either orderly or abortive, depending on the service type supported by the transport provider. See the t_getinfo(3NSL) man page.

  • If a transport user issues a interface call out of sequence, the interface fails and t_errno is set to TOUTSTATE. The state does not change.

  • The error codes TLOOK or TNODATA after t_connect(3NSL) can result in state changes. The state tables assume correct use of XTI/TLI.

  • Any other transport error does not change the state, unless the man page for the interface says otherwise.

  • The support interfaces t_getinfo(3NSL), t_getstate(3NSL), t_alloc(3NSL), t_free(3NSL), t_sync(3NSL), t_look(3NSL), and t_error(3NSL) are excluded from the state tables because they do not affect the state.

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:

  • Set the count of outstanding connect requests to zero

  • Increment the count of outstanding connect requests

  • Decrement the count of outstanding connect requests

  • Pass a connection to another transport endpoint, as indicated in thet_accept(3NSL) man page

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