Previous section.

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


T_DATA_REQ - Data Request


This message consists of one M_PROTO message block followed by zero or more M_DATA message blocks where each M_DATA message block contains zero or more bytes of data. The format of the M_PROTO message block is as follows:

struct T_data_req {
    t_scalar_t   PRIM_type;      /* Always T_DATA_REQ */
    t_scalar_t   MORE_flag;


This primitive indicates to the transport provider that this message contains a transport interface data unit. One or more transport interface data units form a transport service data unit (TSDU).

Note that the maximum transport service data unit size allowed by the transport provider is indicated to the transport user via the T_INFO_ACK primitive.

This primitive has a mechanism which indicates the beginning and end of a transport service data unit. However, not all transport providers support the concept of a transport service data unit.


identifies the primitive type.

when greater than zero, indicates that the next T_DATA_REQ primitive is also part of this transport service data unit.


The transport provider must also recognize a message of one or more M_DATA message blocks without the leading M_PROTO message block as a T_DATA_REQ primitive. This message type will be initiated from the write(2) operating system service routine.

For example, on systems that support the tirdwr STREAMS module, if that module is pushed onto a stream corresponding to a transport provider supporting the TPI, then the write(2) operating system service routine may be used to send data on that transport endpoint. In this case there are no implied transport service data unit boundaries. Data is passed down the stream as a series of M_DATA messages.

This primitive does not require any acknowledgments, although it may generate a fatal error. This is indicated via a M_ERROR message type which results in the failure of all operating system service routines on the stream.


The allowable errors are as follows:


This indicates one of the following unrecoverable protocol conditions:

  • The transport service interface was found to be in an incorrect state. If the interface is in the TS_IDLE state when the provider receives the T_DATA_REQ primitive, then the transport provider should just drop the message without generating a fatal error.

  • The amount of transport user data associated with the primitive defines a transport service data unit larger than that allowed by the transport provider.


Only connection-mode.


Transport user.

Contents Next section Index