Requests that the data link service (DLS) provider bind a subsequent data link service access point (DLSAP) to the stream.
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.
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)).
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 |
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:
|
Item | Description |
---|---|
Valid | The primitive is valid in the DL_IDLE state. |
New | The resulting state is DL_SUBS_BIND_PND. |
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. |
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. |