Previous section.

Transport Provider Interface (TPI)

Transport Provider Interface (TPI)
Copyright © 1997 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 .

State Table

Possible States
State    
_ Description Service Type  
Name Abbreviation    
TS_UNBND sta_0 unbound T_COTS, T_COTS_ORD,
      T_CLTS
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_IDLE sta_3 idle - no connection T_COTS, T_COTS_ORD,
      T_CLTS
TS_WACK_CREQ sta_5 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_CONN_REQ  
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_WACK_CRES sta_8 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_CONN_RES  
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
TS_WACK_DREQ6 sta_12 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
TS_WACK_DREQ7 sta_13 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
TS_WACK_DREQ9 sta_14 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
TS_WACK_DREQ10 sta_15 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  
TS_WACK_DREQ11 sta_16 awaiting acknowledgment T_COTS, T_COTS_ORD
    of T_DISCON_REQ  

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

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_res connection response T_COTS, T_COTS_ORD
discon_req disconnect request T_COTS, T_COTS_ORD
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

Incoming Events

The following incoming events are those which are initiated from the transport provider. They are either confirmations of a request or are indications to the transport user that an event has occurred.

EVENT DESCRIPTION SERVICE TYPE
bind_ack bind acknowledgment T_COTS, T_COTS_ORD, T_CLTS
optmgmt_ack options mgmt acknowledgment T_COTS, T_COTS_ORD, T_CLTS
error_ack error acknowledgment T_COTS, T_COTS_ORD, T_CLTS
ok_ack1 ok acknowledgment T_COTS, T_COTS_ORD, T_CLTS
  outcnt == 0  
ok_ack2 ok acknowledgment T_COTS, T_COTS_ORD,
  outcnt == 1, q == rq  
ok_ack3 ok acknowledgment T_COTS, T_COTS_ORD,
  outcnt == 1, q = rq
ok_ack4 ok acknowledgment T_COTS, T_COTS_ORD,
  outcnt > 1  
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_WACK_BREQ TS_WACK_UREQ TS_IDLE
EVENT sta_0 sta_1 sta_2 sta_3
bind_req sta_1      
unbind_req       sta_2
bind_ack   sta_3    
      [1]  
error_ack   sta_0 sta_3  
ok_ack1     sta_0  

[1] outcnt = 0

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

Table: Initialization State Table

   
  STATE
   
  _
  TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_ TS_
  UNBND IDLE WACK_ WCON_ WRES_ WACK_ DATA_ WIND_ WREQ_ WACK_ WACK_ WACK_ WACK_ WACK_
      CREQ CREQ CIND CRES XFER ORDREL ORDREL DREQ6 DREQ7 DREQ9 DREQ10 DREQ11
                             
EVENT sta_0 sta_3 sta_5 sta_6 sta_7 sta_8 sta_9 sta_10 sta_11 sta_12 sta_13 sta_14 sta_15 sta_16
                ** **          
conn_req   sta_5                        
conn_res         sta_8                  
discon_req       sta_12 sta_13   sta_14 sta_15 sta_16          
data_req             sta_9   sta_11          
exdata_req             sta_9   sta_11          
** ordrel_req             sta_10   sta_3          
conn_ind   sta_7     sta_7                  
    [2]     [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_3                  
            [3]                
error_ack     sta_3     sta_7       sta_6 sta_7 sta_9 sta_10 sta_11
ok_ack1     sta_6             sta_3   sta_3 sta_3 sta_3
ok_ack2           sta_9         sta_3      
            [3]         [3]      
ok_ack3           sta_3         sta_3      
            [3] [4]         [3]      
ok_ack4           sta_7         sta_7      
            [3] [4]         [3]      
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 as indicated in the T_CON_RES primitive

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

Table: Data Transfer State Table for Connectionless Service


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


Why not acquire a nicely bound hard copy?
Click here to return to the publication details or order a copy of this publication.

Contents Next section Index