Previous section.

Transport Provider Interface (TPI), Version 2 Draft 2
Copyright © 1999 The Open Group

Allowable Sequence of TPI Primitives

The following tables describe the possible events that may occur on the interface and the possible states as viewed by the transport user that the interface may enter due to an event. The events map directly to the transport service interface primitives as described in Introduction.

TPI States

The transitional states only exist during the processing of a request and will not normally be visible outside the transport provider.

Persistent TPI Provider States
State    
_ Description Service Type
Name Abbreviation    
TS_UNBND sta_0 unbound T_COTS, T_COTS_ORD,
      T_CLTS
TS_IDLE sta_3 idle - no connection T_COTS, T_COTS_ORD,
      T_CLTS
TS_WCON_CREQ sta_6 awaiting confirmation T_COTS, T_COTS_ORD
    of T_CONN_REQ  
TS_WRES_CIND sta_7 awaiting response T_COTS, T_COTS_ORD
    of T_CONN_IND  
TS_DATA_XFER sta_9 data transfer T_COTS, T_COTS_ORD
TS_WIND_ORDREL sta_10 awaiting T_ORDREL_IND T_COTS_ORD
TS_WREQ_ORDREL sta_11 awaiting T_ORDREL_REQ T_COTS_ORD
Transitional TPI Provider States
State    
_ Description Service Type
Name Abbreviation    
TS_WACK_BREQ sta_1 awaiting acknowledgment T_COTS, T_COTS_ORD,
    of T_BIND_REQ T_CLTS
TS_WACK_UREQ sta_2 awaiting acknowledgment T_COTS, T_COTS_ORD,
    of T_UNBIND_REQ  
TS_WACK_CREQ sta_5 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_CONN_REQ  
TS_WACK_CRES sta_8 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_CONN_RES  
TS_WACK_DREQ6 sta_12 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
    from sta_6  
TS_WACK_DREQ7 sta_13 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
    from sta_7  
TS_WACK_DREQ9 sta_14 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
    from sta_9  
TS_WACK_DREQ10 sta_15 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
    from sta_10  
TS_WACK_DREQ11 sta_16 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
    from sta_11  

sta_0, sta_1, etc. are convenient abbreviations used in the state tables later in this Chapter.

Table: Kernel Level Transport Interface States

Variables

The following table describes the variables used in the state tables.

Variable Description
q queue pair pointer of current stream
rq queue pair pointer of responding stream as described in the T_CONN_RES primitive
outcnt counter for the number of outstanding connection indications not responded to by the transport user, outcnt is zero in all states except TS_WRES_CIND

Table: State Table Variables

Outgoing Events

The following outgoing events are those which are initiated from the transport service user. They either make requests of the transport provider or respond to an event of the transport provider.

EVENT DESCRIPTION SERVICE TYPE
bind_req bind request T_COTS, T_COTS_ORD, T_CLTS
unbind_req unbind request T_COTS, T_COTS_ORD, T_CLTS
optmgmt_req options mgmt request T_COTS, T_COTS_ORD, T_CLTS
conn_req connection request T_COTS, T_COTS_ORD
conn_res1 connection response T_COTS, T_COTS_ORD
  outcnt == 1, q == rq  
conn_res2 connection response T_COTS, T_COTS_ORD
  outcnt == 1, q = rq
conn_res3 connection response T_COTS, T_COTS_ORD
  outcnt > 1, q = rq
discon_req1 disconnect request T_COTS, T_COTS_ORD
  outcnt <= 1  
discon_req2 disconnect request T_COTS, T_COTS_ORD
  outcnt > 1  
data_req data request T_COTS, T_COTS_ORD
exdata_req expedited data request T_COTS, T_COTS_ORD
optdata_req data request with options T_COTS, T_COTS_ORD
ordrel_req orderly release request T_COTS_ORD
unitdata_req unitdata request T_CLTS

Table: Kernel Level Transport Interface Outgoing Events

The bind_req, unbind_req optmgmt_req, conn_req, conn_res1-3 and discon_req1-2 events include the generation of the corresponding acknowlegement message. If the request from the user is incorrect then a T_ERROR_ACK primitive is sent upstream and no state transition takes place.

Incoming Events

The following incoming events are those which are initiated from the transport provider. They are indications to the transport user that an event has occurred.

EVENT DESCRIPTION SERVICE TYPE
conn_ind connection indication T_COTS, T_COTS_ORD
conn_con connection confirmation T_COTS, T_COTS_ORD
data_ind data indication T_COTS, T_COTS_ORD
exdata_ind expedited data indication T_COTS, T_COTS_ORD
optdata_ind data indication with options T_COTS, T_COTS_ORD
ordrel_ind orderly release indication T_COTS_ORD
discon_ind1 disconnect indication T_COTS, T_COTS_ORD
  outcnt == 0  
discon_ind2 disconnect indication T_COTS, T_COTS_ORD
  outcnt == 1  
discon_ind3 disconnect indication T_COTS, T_COTS_ORD
  outcnt > 1  
pass_conn pass connection T_COTS, T_COTS_ORD
unitdata_ind unitdata indication T_CLTS
uderror_ind unitdata error indication T_CLTS

Table: Kernel Level Transport Interface Incoming Events

Transport Service State Tables

The next three tables describe the possible next states the interface may enter, given a current state and event.

The contents of each box represent the next state, given the current state (column) and the current incoming or outgoing event (row). An empty box represents a state/event combination that is invalid. Along with the next state, each box may include an action. The transport provider must take the specific actions in the order specified in the state table.

  STATE
  TS_UNBND TS_IDLE
EVENT sta_0 sta_3
bind_req sta_3 (1)  
unbind_req   sta_0 (3) [1]
optmgmt_req sta_0 (4) sta_3 (4)

[1]
outcnt = 0

(1)
provider may temporarily enter sta_1 (TS_WACK_BREQ)

(3)
provider may temporarily enter sta_2 (TS_WACK_UREQ)

(4)
provider may temporarily enter sta_4 (TS_WACK_OPTREQ)

sta_0, sta_3, are convenient abbreviations for different states - see Kernel Level Transport Interface States.

Table: Initialization State Table

   
  STATE
   
  _
  TS_ TS_ TS_ TS_ TS_ TS_ TS_
  UNBND IDLE WCON_ WRES_ DATA_ WIND_ WREQ_
      CREQ CIND XFER ORDREL ORDREL
               
EVENT sta_0 sta_3 sta_6 sta_7 sta_9 sta_10 sta_11
conn_req   sta_6 (5)          
conn_res1       sta_9 (8) [3]      
conn_res2       sta_3 (8) [3] [4]      
conn_res3       sta_7 (8) [3] [4]      
discon_req1     sta_3 (12) sta_3 (13) sta_3 (14) sta_3 (15) sta_3 (16)
discon_req2       sta_7 (13)      
data_req   sta_3 [5]     sta_9   sta_11
exdata_req   sta_3 [5]     sta_9   sta_11
**ordrel_req   sta_3 [5]     sta_10   sta_3
conn_ind   sta_7 [2]   sta_7 [2]      
conn_con     sta_9        
data_ind         sta_9 sta_10  
exdata_ind         sta_9 sta_10  
**ordrel_ind         sta_11 sta_3  
discon_ind1     sta_3   sta_3 sta_3 sta_3
discon_ind2       sta_3 [3]      
discon_ind3       sta_7 [3]      
optmgmt_req sta_0 (4) sta_3 (4) sta_6 (4) sta_7 (4) sta_9 (4) sta_10 (4) sta_11 (4)
pass_conn sta_9 sta_9          

**
Only supported if service is type T_COTS_ORD

[2]
outcnt = outcnt + 1

[3]
outcnt = outcnt - 1

[4]
Pass connection to queue identified by ACCEPTOR_id field of T_CONN_RES primitive and generate a 'pass_conn' event on that endpoint.

[5]
Silently discard the request

(4)
provider may temporarily enter sta_4 (TS_WACK_OPTREQ)

(5)
provider may temporarily enter sta_5 (TS_WACK_CREQ)

(8)
provider may temporarily enter sta_8 (TS_WACK_CRES)

(12)
provider may temporarily enter sta_12 (TS_WACK_DISCON6)

(13)
provider may temporarily enter sta_13 (TS_WACK_DISCON7)

(14)
provider may temporarily enter sta_14 (TS_WACK_DISCON9)

(15)
provider may temporarily enter sta_15 (TS_WACK_DISCON10)

(16)
provider may temporarily enter sta_16 (TS_WACK_DISCON11)

sta_0, sta_3, etc. are convenient abbreviations for different states - see Kernel Level Transport Interface States.

Table: Data Transfer State Table for Connection Oriented Service

EVENT STATE
unitdata_req TS_IDLE
unitdata_ind TS_IDLE
uderror_ind TS_IDLE
optmgmt_req TS_IDLE

Table: Data Transfer State Table for Connectionless Service


[??] Some characters or strings that appear in the printed document are not easily representable using HTML.

Contents Next section Index