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)).
request | sap |
(preferred) | |
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) | |
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) | |
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 |
Valid | The primitive is valid in the DL_IDLE state. |
New | The resulting state is DL_SUBS_BIND_PND. |
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. |
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. |
This primitive is part of Base Operating System (BOS) Runtime.
The DL_ERROR_ACK primitive, DL_SUBS_BIND_ACK primitive.