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() terminates an established connection for a connection-oriented transport provider. The connection termination might be orderly, depending on the service type supported by the transport provider. For more information, see the t_getinfo(3C) and t_close(3C) man pages.

  • 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() 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(), t_getstate(), t_alloc(), t_free(), t_sync(), t_look(), and t_error() are excluded from the state tables because they do not affect the state.

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

  • 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 the t_accept() state

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