DL_SUBS_BIND_REQ Primitive

Purpose

Requests that the data link service (DLS) provider bind a subsequent data link service access point (DLSAP) to the stream.

Structure

The message consists of one M_PROTO message block, which contains the following structure:

typedef struct
{
   ulong  dl_primitive;
   ulong  dl_subs_sap_offset;
   ulong  dl_subs_sap_length;
   ulong  dl_subs_bind_class;
} dl_subs_bind_req_t;

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

Description

The DL_SUBS_BIND_REQ primitive requests that the DLS provider bind a subsequent DLSAP to the stream. The DLS user must identify the address of the subsequent DLSAP to be bound to the stream.

The 802.2 networks accept either DL_HIERARCHICAL_BIND or DL_PEER_BIND. The dl_subs_sap_length parameter must be 5 (sizeof snap) for hierarchical binds, and dl_subs_sap_offset must point to a complete SNAP. For peer binds, dl_subs_sap_length may be either 1 or 5, and dl_subs_sap_offset must point to either a single byte SAP or a complete SNAP (as in hierarchical binds).

In the case of SNAP binds, DL_PEER_BIND and DL_HIERARCHICAL_BIND are synonymous, and fully interchangeable.

Several distinct SAPs/SNAPs may be bound on any single stream. Since a DSAP address field is limited to 8 bits, a maximum of 256 SAPS/SNAPS can be bound to a single stream. Closing the stream or issuing DL_UNBIND_REQ causes all SAPs and SNAPs to be unbound automatically, or each subs sap can be individually unbound.

DL_ETHER supports only DL_PEER_BIND, and dl_subs_sap_offset must point to an ethertype (dl_subs_sap_length == sizeof(ushort)).

Examples:

Preferred Request Sap
DL_BIND_REQ 0xaa
DL_SUBS_BIND_REQ/DL_HIERARCHICAL_BIND 08.00.07.80.9b
DL_SUBS_BIND_REQ/DL_HIERARCHICAL_BIND 08.00.07.80.f3

or

Equivalent Effect Sap
DL_BIND_REQ 0xaa
DL_SUBS_BIND_REQ/DL_PEER_BIND 08.00.07.80.9b
DL_SUBS_BIND_REQ/DL_PEER_BIND 08.00.07.80.f3

or

Equivalent Effect Sap
DL_BIND_REQ 0xaa
DL_SUBS_BIND_REQ/DL_HIERARCHICAL_BIND 08.00.07.80.9b
DL_SUBS_BIND_REQ/DL_PEER_BIND 08.00.07.80.f3

Parameters

Item Description
dl_primitive Specifies the DL_SUBS_BIND_REQ primitive.
dl_subs_sap_length Specifies the length of the specified DLSAP.
dl_subs_sap_offset Indicates where the DLSAP begins. The value of this parameter is the offset from the beginning of the M_PROTO message block.
dl_subs_bind_class Specifies either peer or hierarchical addressing. Possible values include:
DL_PEER_BIND
Specifies peer addressing. The DLSAP specified is used instead of the DLSAP bound in the bind request.
DL_HIERARCHICAL_BIND
Specifies hierarchical addressing. The DLSAP specified is used in addition to the DLSAP specified using the bind request.

States

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

Acknowledgments

Item Description
Successful The DL_SUBS_BIND_ACK primitive is sent to the DLS user, and the resulting state is DL_IDLE.
Unsuccessful The DL_ERROR_ACK primitive is returned, and the resulting state is unchanged.

Error Codes

Item Description
DL_ACCESS Indicates the DLS user does not have proper permission to use the requested DLSAP address.
DL_BADADDR Indicates the DLSAP address information is invalid or is in an incorrect format.
DL_OUTSTATE Indicates the primitive was issued from an invalid state.
DL_SYSERR Indicates a system error occurred. The system error is indicated in the DL_ERROR_ACK primitive.
DL_TOOMANY Indicates the limit has been exceeded for the maximum number of DLSAPs per stream.
DL_UNSUPPORTED Indicates the DLS provider does not support the requested addressing class.