The tables in the following sections describe all state transitions associated with XTI/TLI.
The following table defines the states used in XTI/TLI state transitions, along with the service types.
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:
ocnt – Count of outstanding connect requests
fd – File descriptor of the current transport endpoint
resfd – File descriptor of the transport endpoint where a connection is accepted
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.
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 will be either orderly or abortive, depending on the service type supported by the transport provider. For more information, see the t_getinfo(3NSL) and t_close(3NSL) 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.
The following table shows data transfer in connection mode.
The following table shows connection establishment/connection release/data transfer in connection mode.
The following table shows connectionless mode states.