DL_UNITDATA_REQ Primitive

Purpose

Conveys one data link service data unit (DLSDU) from the data link service (DLS) user to the DLS provider for transmission to a peer DLS user.

Structure

The message consists of one M_PROTO message block, which contains the following structure, followed by one or more M_DATA blocks containing at least one byte of data:

typedef struct
{
   ulong  dl_primitive;
   ulong  dl_dest_addr_length;
   ulong  dl_dest_addr_offset;
   dl_priority_t  dl_priority;
} dl_unitdata_req_t;

This structure is defined in /usr/include/sys/dlpi.h.

Description

The DL_UNITDATA_REQ primitive conveys one DLSDU from the DLS user to the DLS provider for transmission to a peer DLS user.

The amount of user data that may be transferred in a single DLSDU is limited. This limit is conveyed by the dl_max_sdu parameter of the DL_INFO_ACK primitive.

Because connectionless-mode data transfer is an unacknowledged service, the DLS provider makes no guarantees of delivery of connectionless DLSDUs. It is the responsibility of the DLS user to do any necessary sequencing or retransmissions of DLSDUs in the event of a presumed loss.

Parameters

Item Description
dl_primitive Specifies the DL_UNITDATA_REQ primitive.
dl_dest_addr_length Specifies the length of the data link service access point (DLSAP) address of the destination DLS user. If the destination user is implemented using the Data Link Provider Interface (DLPI), the full DLSAP address is returned on the DL_BIND_ACK primitive.
dl_dest_addr_offset Indicates where the destination DLSAP address begins. The value of this parameter is the offset from the beginning of the M_PROTO message block.
dl_priority Indicates the priority value within the supported range for this particular DLSDU.

States

Item Description
Valid The primitive is valid in the DL_IDLE state.
New The resulting state is unchanged.

Acknowledgments

If the DLS provider accepts the data for transmission, there is no response. This does not, however, guarantee that the data will be delivered to the destination DLS user, because the connectionless-mode data transfer is not a confirmed service.

If the request is erroneous, the DL_UDERROR_IND primitive is returned, and the resulting state is unchanged.

If for some reason the request cannot be processed, the DLS provider may generate a DL_UDERROR_IND primitive to report the problem. There is, however, no guarantee that such an error report will be generated for all undeliverable data units, because connectionless-mode data transfer is not a confirmed service.

Error Codes

Item Description
DL_BADADDR Indicates the DLSAP address information is invalid or is in an incorrect format.
DL_BADDATA Indicates the amount of data in the current DLSDU exceeds the DLS provider's DLSDU limit.
DL_OUTSTATE Indicates the primitive was issued from an invalid state.
DL_UNSUPPORTED Indicates the DLS provider does not support the requested priority.