These message primitives are related to local management services:
Table 11-1 Local Management Service Message Primitives
name |
summary |
---|---|
requests information |
|
acknowledges a request for information |
|
identifies the physical link to attach to |
|
acknowledges a bind request |
|
identifies the physical link to detach from |
|
specifies whether connectionless or connection oriented mode is to be use, and supplies the LSAP to bind to |
|
requests an unbind |
|
positively acknowledges a previous primitive |
|
negatively acknowledges a previous primitive |
These message primitives are related to connection mode services:
Table 11-2 Connection Mode Service Message Primitives
name |
summary |
---|---|
establishes a connection |
|
indicates that a remote user wants to establish a connection |
|
accepts a connect request from a remote user |
|
acknowledges a connect request |
|
determines the token associated with a stream (LLC2 only) |
|
acknowledges a token (LLC2 only) |
These message primitives are related to connection release:
Table 11-3 Connection Release Message Primitives
name |
summary |
disconnects a connection |
|
informs that a connection has been disconnected or not established |
The following non-DLPI message primitive is related to data transfer:
Table 11-4 Data Transfer Message Primitive
name |
summary |
---|---|
M_DATA |
carries data within a stream, and between a stream and a user process |
These message primitives are related to connection resynchronization.
Table 11-5 Data Resynchronization Message Primitives
resynchronizes a connection |
|
indicates that the remote end is resynchronizing the connection |
|
completes reset processing |
|
confirms that reset processing is complete |
DLPI uses data link service access point (DLSAP) addresses. These are used when connecting to a given address by the DL_CONNECT_REQ, DL_CONNECT_CON and DL_CONNECT_IND primitives. Addressing is handled differently for LLC2 and LAPB.
The LLC2 DLSAP is contained in the following structure:
struct llc_dladdr { u_char dl_mac[6]; /* MAC address */ u_char dl_sap; /* LLC SAP */ };
The file /usr/include/netdlc/llc2.h contains the structure definition.
The members of the llc_dladdr structure are:
Table 11-6 Members of llc_dladdr structure
Members |
Description |
---|---|
dl_mac |
The MAC address |
dl_sap |
The LLC SAP (service access point). |
The address field is only required when LAPB is being used over a Public Switched Telephone Network (PSTN). In this case, the dl_address fields contain the PSTN address, in the format defined by the pstnformat structure:
struct pstnformat { uint8 pstn_len; /* Address length in octets */ uint8 pstn_add[20]; /* LAPB Address in hexadecimal */ };
The members of the pstnformat structure are:
Table 11-7 Members of pstnformat structure
Members |
Description |
---|---|
pstn_len |
The length of the address as bytes. |
pstn_add |
The LSAP in hexadecimal format. This can be up to 20 digits long. |
The file /usr/include/netx25/sdlpi.h contains the structure definition.
The diagram below summarizes the order that the DLPI message primitives are used to establish a connection and transfer data in connection oriented mode when LLC2 is used:
The file /opt/SUNWconn/x25/samples.dlpi/llc2.c contains an example.
The diagram below summarizes the order that the DLPI message primitives are used to establish a connection and transfer data in connection oriented mode when LAPB is used:
When using LAPB, the connect phase is handled automatically by the network. The LAPB protocol automatically establishes the connection as soon as the cable has been plugged in. The connect indicator CONNECT_IND will automatically notify the user when the connection has been established.
The file /opt/SUNWconn/x25/samples.dlpi/lapb.c contains an example.
This primitive is sent in an M_PROTO message block. It identifies the physical link to be used. In most cases this is a card or a port plus a card. The physical link is identified by a Physical Point of Attachment (PPA).
typedef struct { t_uscalar_t dl_primitive; /* set to DL_ATTACH_REQ */ t_uscalar_t dl_ppa; /* id of the PPA */ } dl_attach_req_t;
The members of the dl_attach_req_t structure are:
Table 11-8 Members of the dl_attach_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_ppa |
Contains the PPA (or hardware device) the stream should be bound to. The PPA values are defined at system configuration time with the L_SETPPA ioctl. This applies to LAPB only. For LLC2 the PPA is associated with the hardware at system boot time. |
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
DL_BADPPA |
The specified PPA was invalid (was not configured with the L_SETPPA ioctl). |
DL_SYSERR |
Could not allocate memory to handle the connection. |
If a bind request is successful, a DL_BIND_ACK message will be sent upstream to acknowledge the request. This message is sent in an M_PCPROTO message block.
typedef struct { t_uscalar_t dl_primitive; /* DL_BIND_ACK */ t_uscalar_t dl_sap; /* DLSAP addr info */ t_uscalar_t dl_addr_length; /* length of complete DLSAP addr */ t_uscalar_t dl_addr_offset; /* offset from start of M_PCPROTO */ t_uscalar_t dl_max_conind; /* allowed max. # of con-ind */ t_uscalar_t dl_xidtest_flg; /* responses supported by provider */ } dl_bind_ack_t;
The members of the dl_bind_ack_t structure are:
Table 11-10 Members of the dl_bind_ack_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_sap |
Contains the SSAP. |
dl_addr_length |
The length of the DLSAP. When interfacing to LLC2, this is 7. For LAPB it is 0. |
dl_addr_offset |
Offset of DLSAP address, in bytes, from the beginning of the M_PCPROTO message block. The DLSAP address is stored as an struct llc_dladdr structure when working with LLC2 and as a pstnformat structure when working with LAPB. See "11.1.1 Address Structures" for more information. |
dl_max_conind |
Equals the value of max_conind passed down in the DL_BIND_REQ message. |
dl_xidtest_flg |
Valid for LLC2 only. Contains the value (DL_AUTO_XID | DL_AUTO_TEST), because the LLC2 driver has the capability of responding automatically to TEST and XID commands. |
This primitive is sent in an M_PROTO message block. It specifies whether the connectionless or connection oriented service should be used and provides the LSAP if required.
This message primitive must be set to connection oriented mode when used with either LAPB or LLC2. Connectionless mode is not supported.
The LSAP is one octet long and can be any value.
typedef struct { t_uscalar_t dl_primitive; /* set to DL_BIND_REQ */ t_uscalar_t dl_sap; /* info to identify dlsap addr */ t_uscalar_t dl_max_conind; /* max # of outstanding con_ind */ uint16_t dl_service_mode; /* CO, CL or ACL */ uint16_t dl_conn_mgmt; /* if non-zero, is con-mgmt stream */ t_uscalar_t dl_xidtest_flg; /* auto init. of test and xid */ } dl_bind_req_t;
The members of the dl_bin_req_t structure:
Table 11-11 Members of the dl_bin_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_sap |
One byte SSAP. For LLC2, this parameter must be set to an even value other than 0. For LAPB, this parameter must be set to 0. The full DLSAP is returned in the DL_BIND_ACK response. |
dl_max_conind |
The maximum number of outstanding DL_CONNECT_IND messages allowed on the stream. A value of zero prevents the stream from accepting any DL_CONNECT_IND messages. When using LAPB, set this parameter to 1. When using with LLC2, set the calling side to 0 and the called side to >0. |
dl_service_mode |
Set to DL_CODLS to indicate that connection-oriented service (LLC2 or LAPB) is desired. |
dl_conn_mgmt |
Set to non-zero to use this stream as the "connection management" stream for the PPA. When set to a non-zero value, this handles incoming DL_CONNECT_IND messages that do not match any other stream, or where the maximum number of outstanding connection messages specified in dl_max_conind has been exceeded. |
dl_xidtest_flg |
Valid for LLC2 only. Specifies whether or not the LLC2 driver is to automatically reply to XID/TEST commands. It is a bit-mask of the following two flags: DL_AUTO_XID--Respond to XID commands. DL_AUTO_TEST--Respond to TEST commands.If this field is zero, the LLC2 client will receive all incoming TEST and XID commands, and will be expected to respond to them. |
Multiple LLC2 streams may be bound to the same SAP, but only one listen stream is allowed per SAP.
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
DL_UNSUPPORTED |
The requested service mode is not supported (only DL_CODLS and DL_CLDLS are supported). |
DL_BOUND |
Attempt to bind a second listen stream, or a second "connection management" stream. |
DL_BADADDR |
Attempt to bind to a zero or odd SAP. |
DL_SYSERR |
Could not allocate STREAMS resources. |
Positively acknowledges a previous DL_CONNECT_REQ primitive. Is sent upstream when a UA frame arrives to ack a previously sent SABME or SABM frame. This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_CONNECT_CON */ t_uscalar_t dl_resp_addr_length; /* responder's address len */ t_uscalar_t dl_resp_addr_offset; /* offset from start of block */ t_uscalar_t dl_qos_length; /* length of qos structure */ t_uscalar_t dl_qos_offset; /* offset from start of block */ t_uscalar_t dl_growth; /* set to zero */ } dl_connect_con_t;
The members of the dl_connect_con_t structure are:
Table 11-13 Members of the dl_connect_con_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_resp_addr_length |
The length of the DLSAP. This is 7 when working with LLC2 and 0 or 21 when working with LAPB. |
dl_resp_addr_offset |
Offset to the responder (destination) address, stored in struct llc_dladdr or struct pstnformat format. |
dl_qos_length |
Always set to 0. |
dl_qos_offset |
Always set to 0. |
Indicates that a remote user wants to establish a connection. This primitive is sent upstream when a SABME or SABM is received from the network.
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_CONNECT_IND */ t_uscalar_t dl_correlation; /* provider's correl. token */ t_uscalar_t dl_called_addr_length; /* length of called address */ t_uscalar_t dl_called_addr_offset; /* offset from start of block */ t_uscalar_t dl_calling_addr_length; /* length of calling address */ t_uscalar_t dl_calling_addr_offset; /* offset from start of block */ t_uscalar_t dl_qos_length; /* length of qos structure */ t_uscalar_t dl_qos_offset; /* offset from start of block */ t_uscalar_t dl_growth; /* set to zero */ } dl_connect_ind_t;
The members of the dl_connect_ind_t structure are:
Table 11-14 Members of the dl_connect_ind_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_correlation |
Unique identifier for the connection, to be passed back downstream in a DL_CONNECT_RES or DL_DISCONNECT_RES message later on. Can also be passed upstream in a subsequent DL_DISCONNECT_IND message. |
dl_called_addr_length |
Set to 7 when interfacing with LLC2 and 21 when interfacing with LAPB. |
dl_called_addr_offset |
Offset to the called (destination) address, which is stored in struct llc_dladdr or struct lapbformat format. |
dl_calling_addr_length |
Set to 7 when working with LLC2 and 0 when working with LAPB. |
dl_calling_addr_offset |
Offset to the calling (source) address, which is stored in struct llc_dladdr or struct pstnformat format. |
dl_qos_length |
Always set to 0. |
dl_qos_offset |
Always set to 0. |
Used to establish a connection. When the user issues this primitive, a SABME or SABM frame is sent across the network to the destination.
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_CONNECT_REQ */ t_uscalar_t dl_dest_addr_length; /* len. of dlsap addr */ t_uscalar_t dl_dest_addr_offset; /* offset */ t_uscalar_t dl_qos_length; /* len. of QOS parm val */ t_uscalar_t dl_qos_offset; /* offset */ t_uscalar_t dl_growth; /* set to zero */ } dl_connect_req_t;
The members of the dl_connect_req_t structure are:
Table 11-15 Members of the dl_connect_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_dest_addr_length |
Set to 7 when working with LLC2 and 21 when working with LAPB. |
dl_dest_addr_offset |
Offset, in bytes, from beginning of M_PROTO message block. The destination DLSAP address should be encoded as a struct llc_dladdr. This field and dl_dest_addr_length combined give the remote address if you are working with LLC2 and the PSTN address if you are working with dial-up LAPB. They are not used if you are working with non dial-up LAPB. |
dl_qos_length |
Will be ignored. |
dl_qos_offset |
Will be ignored. |
This primitive is positively acknowledged with a DL_CONNECT_CON primitive. If there is a local error, this primitive is nack'ed with a DL_ERROR_ACK, with the possible error codes listed below. If the destination cannot be reached, this primitive is nack'ed with a DL_DISCONNECT_IND primitive.
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
DL_BADADDR |
The destination DLSAP address was invalid, for one of the following reasons: dl_dest_addr_length is incorrect, zero or, odd SAP (when using LLC2) loopback connection to the same SAP |
DL_ACCESS |
Attempt to connect a second LLC2 stream, bound to the same SAP, to the same destination DLSAP (really need to return an "address already in use" error in this case, but no such error exists in DLPI). |
DL_SYSERR |
Could not allocate memory. |
Accept a connect request from a remote user. Causes a UA frame to be sent over the network (to ack the SABME or SABM that was received earlier). This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_CONNECT_RES */ t_uscalar_t dl_correlation; /* provider's correlation token */ t_uscalar_t dl_resp_token; /* token of responding stream */ t_uscalar_t dl_qos_length; /* length of qos structure */ t_uscalar_t dl_qos_offset; /* offset from start of block */ t_uscalar_t dl_growth; /* set to zero */ } dl_connect_res_t;
The members of the dl_connect_res_t structure are:
Table 11-17 Members of the dl_connect_res_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_correlation |
Contains the correlation number passed upstream in the DL_CONNECT_IND message. |
dl_resp_token |
Contains the token of the stream that will accept the connection, if the accepting stream is not the listen stream (applies to LLC2 only). |
dl_qos_length |
Will be ignored. |
dl_qos_offset |
Will be ignored. |
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state, or the accepting stream is not in state DL_IDLE (attached and bound) or is not attached to the same PPA. |
DL_BADCORR |
The dl_correlation parameter does not correspond to the ID of a pending connection. |
DL_BADTOKEN |
The dl_resp_token parameter does not correspond to a currently open stream. |
DL_ACCESS |
Accepting stream is not bound to the same SAP as the listen stream. |
DL_PENDING |
Attempt to accept a connection on the listen stream when there are other outstanding connect indications on the listen stream, or an attempt to accept a connection on the "connection management" stream. |
DL_SYSERR |
Could not allocate STREAMS resources. |
Undoes a previous DL_ATTACH_REQ. This primitive is sent in an M_PROTO message block.
typedef struct { t_uscalar_t dl_primitive; /* set to DL_DETACH_REQ */ } dl_detach_req_t;
The members of the dl_detach_req_t structure are:
Table 11-19 Members of the dl_detach_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
Informs the user that the connection has been disconnected, or that a pending connection has been aborted. This message is passed upstream when a DISC frame is received from the network, or if the ack timer expires (because either the remote end didn't respond to a SABME/ DL_CONNECT_REQ, or to a SABM, or because during data transfer the connection went down).
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_DISCONNECT_IND */ t_uscalar_t dl_originator; /* USER or PROVIDER */ t_uscalar_t dl_reason; /* permanent or transient */ t_uscalar_t dl_correlation; /* association with connect_ind */ } dl_disconnect_ind_t;
The dl_disconnect_ind_t structure has the following members:
Table 11-21 Members of dl_disconnect_ind structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_originator |
Set to either: DL_USER--a DISC frame was received from the network. DL_PROVIDER--the ack timer expired. |
dl_reason |
Set to: DL_CONREJ_DEST_UNREACH_TRANSIENT--a pending connection was aborted. DL_DISC_TRANSIENT_CONDITION--an active connection was disconnected. DL_DISC_PERMANENT_CONDITION-- the physical level is not connected. |
dl_correlation |
If a pending incoming call is being aborted, this contains the correlation value that was passed in the DL_CONNECT_IND primitive. |
Used to disconnect a connection. Can be used to disconnect an active connection (in state DL_DATAXFER), to refuse an incoming connection (which was indicated by the reception of a DL_CONNECT_IND primitive), or to cancel a previous DL_CONNECT_REQ primitive before the DL_CONNECT_CON acknowledgment is received back from the other end.
When the user issues this primitive, one of two things will happen, depending on the state that the stream is in:
In state DL_DATAXFER or if cancelling a previous DL_CONNECT_REQ, a DISC command frame is sent across the network to the destination.
If refusing an incoming connection, a DM response frame is sent (in response to the SABME that was received earlier).
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_DISCONNECT_REQ */ t_uscalar_t dl_reason; /* norm., abnorm., perm. or trans. */ t_uscalar_t dl_correlation; /* association with connect_ind */ } dl_disconnect_req_t;
The fields associated with the dl_disconnect_req_t structure are:
Table 11-22 Members of the dl_disconnect_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_reason |
Any value passed here will be ignored, as LLC2 and LAPB have no means of carrying a "disconnect reason" across the network. |
dl_correlation |
If the user is rejecting an incoming call, this needs to be set to the correlation value supplied in the received DL_CONNECT_IND primitive. Otherwise, this parameter should be set to 0. |
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
DL_BADCORR |
Non-zero correlation value supplied when not rejecting an incoming call, or invalid correlation value supplied when rejecting an incoming call. |
This primitive is sent upstream to negatively acknowledge a previous primitive.
It is sent in an M_PCPROTO message block, with the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_ERROR_ACK */ t_uscalar_t dl_error_primitive; /* primitive in error */ t_uscalar_t dl_errno; /* DLPI error code */ t_uscalar_t dl_unix_errno; /* UNIX system error code */ } dl_error_ack_t;
The members of the dl_error_ack_t structure are:
Table 11-24 Members of the dl_error_ack_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_error_primitive |
Set to the name of the primitive in error. |
dl_unix_errno |
Unix error code, if dl_errno is equal to DL_SYSERR |
dl_errno |
Contains the DLPI error code. |
The LLC2 and LAPB drivers respond to the DL_INFO_REQ with a DL_INFO_ACK message.
This message consists of one M_PCPROTO message block, with the following structure:
typedef struct { t_uscalar_t dl_primitive; /* set to DL_INFO_ACK */ t_uscalar_t dl_max_sdu; /* Max bytes in a DLSDU */ t_uscalar_t dl_min_sdu; /* Min bytes in a DLSDU */ t_uscalar_t dl_addr_length; /* length of DLSAP address */ t_uscalar_t dl_mac_type; /* type of medium supported */ t_uscalar_t dl_reserved; /* value set to zero */ t_uscalar_t dl_current_state; /* state of DLPI interface */ t_scalar_t dl_sap_length; /* length of dlsap SAP part */ t_uscalar_t dl_service_mode; /* CO, CL or ACL */ t_uscalar_t dl_qos_length; /* length of qos values */ t_uscalar_t dl_qos_offset; /* offset from start of block */ t_uscalar_t dl_qos_range_length; /* available range of qos */ t_uscalar_t dl_qos_range_offset; /* offset from start of block */ t_uscalar_t dl_provider_style; /* style1 or style2 */ t_uscalar_t dl_addr_offset; /* offset of the dlsap addr */ t_uscalar_t dl_version; /* version number */ t_uscalar_t dl_brdcst_addr_length; /* length of broadcast addr */ t_uscalar_t dl_brdcst_addr_offset; /* offset from start of block */ t_uscalar_t dl_growth; /* set to zero */ } dl_info_ack_t;
The members of the dl_info_ack_t structure are:
Table 11-25 members of the dl_info_ack_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_mac_type |
Valid for LLC2 only. Set to the value returned by the hardware driver underneath LLC2. |
dl_mdlc_type |
Valid for LAPB only. Set to the value returned by the hardware driver underneath LAPB. |
dl_current_state |
Indicates the current DLPI state of the interface. |
dl_sap_length |
For LLC2, set to 1, which indicates that the SAP is one byte long, and follows the physical address in the DLSAP address. For LAPB, set to 0. |
dl_addr_offset |
Offset to the DLSAP address of this stream. |
dl_brdcst_addr_off |
Offset to the hardware broadcast address. |
The QOS fields are always set to 0 when used over Ethernet/802.3. (dl_qos_length, dl_qos_offset, dl_qos_range_length, dl_qos_range_offset). Their settings above other media (FDDI, Token Ring, etc.) is to be defined. For descriptions of the other parameters, refer to the DLPI specifications.
This primitive requests information about the stream.
This primitive is sent in an M_PROTO message block, with the following structure:
typedef struct { t_uscalar_t dl_primitive; /* set to DL_INFO_REQ */ } dl_info_req_t;
The members of the dl_info_req_t structure are:
Table 11-26 Members of the dl_info_req_t structure
Member |
Description |
---|---|
dl_primitive |
The name of this primitive. |
This primitive is sent upstream to positively acknowledge a previous primitive. It is sent in an M_PCPROTO message block
typedef struct { t_uscalar_t dl_primitive; /* DL_OK_ACK */ t_uscalar_t dl_correct_primitive; /* primitive acknowledged */ } dl_ok_ack_t;
The members of the dl_ok_ack_t structure are:
Table 11-27 Members of the dl_ok_ack_t structure
Members |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_correct_primitive |
Set to the name of the primitive being acknowledged. |
Positively acknowledges a previous DL_RESET_REQ primitive. This primitive is sent upstream when a UA frame arrives to ack a previously sent SABME frame.
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_RESET_CON */ } dl_reset_con_t;
The members of the dl_reset_con_t structure are:
Table 11-28 Members of the dl_reset_con_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
Indicates that the remote user is resynchronizing the connection. This primitive is sent upstream when a SABME or SABM is received from the network, while in state DL_DATAXFER.
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_RESET_IND */ t_uscalar_t dl_originator; /* Provider or User */ t_uscalar_t dl_reason; /* flow control, link error, resync */ } dl_reset_ind_t;
The members of the dl_reset_ind_structure are:
Table 11-29 Members of the dl_reset_ind_structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_originator |
Always set to DL_USER. |
dl_reason |
Always set to DL_RESET_RESYNCH (there is no means of carrying a "reset reason" across the network). |
Used to resynchronize a connection. When the user issues this primitive while the stream is in state DL_DATAXFER, a SABME or SABM frame is sent across the network to the destination.
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_RESET_REQ */ } dl_reset_req_t;
This primitive is positively acknowledged with a DL_RESET_CON primitive. If there is a local error, this primitive is negatively acknowledged with a DL_ERROR_ACK, with the possible error codes listed below.
The members of the dl_reset_req_t structure are:
Table 11-30 Members of the dl_reset_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
Respond to a reset request (an incoming DL_RESET_IND). Causes a UA frame to be sent over the network (to ack the SABME or SABM that was received earlier).
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_RESET_RES */ } dl_reset_res_t;
The members of the dl_reset_res_t structure are:
Table 11-32 Members of the dl_reset_res_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
Error |
Description |
---|---|
DL_OUTSTATE |
Primitive issued from an invalid state. |
DL_SYSERR |
Could not allocate STREAMS resources. |
The DL_TOKEN_REQ primitive is positively acknowledged with a DL_TOKEN_ACK primitive, which is encoded in an M_PCPROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_TOKEN_ACK */ t_uscalar_t dl_token; /* Connection response token */ }dl_token_ack_t;
The members of the dl_token_ack_t structure are:
Table 11-34 Members of the dl_token_ack_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
dl_token |
Contains the connection response token. |
Used to determine the token associated with a LLC2 stream (LAPB does not support). This token can then be supplied in the DL_CONNECT_RES primitive to indicate that the connection should be accepted on a different stream from the listen stream. The accepting stream must be attached and bound to the same PPA and SAP as the listen stream.
This primitive is not supported by LAPB.
This message consists of one M_PROTO message block containing the following structure:
typedef struct { t_uscalar_t dl_primitive; /* DL_TOKEN_REQ */ } dl_token_req_t;
The members of the dl_token_req_t structure are:
Table 11-35 Members of the dl_token_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |
This primitive unbinds the STREAM that was bound by a previous DL_BIND_REQ. It is sent in an M_PROTO message block.
typedef struct { t_uscalar_t dl_primitive; /* DL_UNBIND_REQ */ } dl_unbind_req_t;
The members of the dl_unbind_req_t structure are:
Table 11-36 Members of the dl_unbind_req_t structure
Member |
Description |
---|---|
dl_primitive |
Should be set to the name of this primitive. |