Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP DLPI Programmer's Guide: HP-UX 11i v2 > Chapter 2 DLPI Primitives

Connection-mode Service Primitives

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

 » Glossary

 » Index

This section describes the service primitives that support the connection-mode service of the data link layer. These primitives support the establishment of connections, connection-mode data transfer, and connection release services.

In the connection establishment model, the caller initiates a request for a connection, and the callee receives each request and either accepts or rejects it. In the simplest form, the callee is passed a connect indication and the DLS provider holds any subsequent indications until a response for the current outstanding indication is received. At most one connect indication is outstanding at any time.

DLPI also enables a callee to multi-thread connect indications and responses. The DLS provider will pass all connect indications to the callee (up to some pre-established limit as set by DL_BIND_REQ and DL_BIND_ACK). The callee may then respond to the requests in any order.

To support multi-threading, a correlation value is needed to associate responses with the appropriate connect indication. A correlation value is contained in each DL_CONNECT_IND, and the DLS user must use this value in the DL_CONNECT_RES or DL_DISCONNECT_REQ primitive used to accept or reject the connect request.

Once a connection has been accepted or rejected, the correlation value has no meaning to a DLS user. The DLS provider may reuse the correlation value in another DL_CONNECT_IND.

Connection-Oriented DLPI Extensions

These primitives are only valid on connection-oriented DLPI STREAMS. Connection-oriented DLPI streams are those on which a DL_BIND_REQ with dl_service_mode set to DL_CODLS has been done.

DL_HP_INFO_REQ

Requests the DLS provider to provide information on the state of the connection on a DLPI stream.

Format

typedef struct {
 u_long       dl_primitive;
} dl_hp_info_req_t;

Parameters

dl_primitive

  • DL_HP_INFO_REQ

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_HP_INFO_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_INFO_ACK

This message is sent in response to a DL_HP_INFO_REQ; it conveys information on the state of the connection on a DLPI stream.

Format

typedef struct {
u_long dl_primitive;
u_long dl_mem_fails;
u_long dl_queue_fails;
u_long dl_ack_to;
u_long dl_p_to;
u_long dl_rej_to;
u_long dl_busy_to;
u_long dl_send_ack_to;
u_long dl_ack_to_cnt;
u_long dl_p_to_cnt;
u_long dl_rej_to_cnt;
u_long dl_busy_to_cnt;
u_long dl_local_win;
u_long dl_remote_win;
u_long dl_i_pkts_in;
u_long dl_i_pkts_in_oos;
u_long dl_i_pkts_in_drop;
u_long dl_i_pkts_out;
u_long dl_i_pkts_retrans;
u_long dl_s_pkts_in;
u_long dl_s_pkts_out;
u_long dl_u_pkts_in;
u_long dl_u_pkts_out;
u_long dl_bad_pkts;
u_long dl_retry_cnt;
u_long dl_max_retry_cnt;
u_long dl_max_retries;
u_long dl_ack_thresh;
u_long dl_remote_busy_cnt;
u_long dl_hw_req_fails;
} dl_hp_info_ack_t;

Parameters

dl_primitive

  • DL_HP_INFO_ACK

dl_mem_fails

  • number of memory allocations that have failed.

dl_queue_fails

  • number of times that the DLS provider was unable to forward a message because the queue was full.

dl_ack_to

  • length of the ACK timeout in tenths of a second. The ACK timeout determines the length of time that LLC Type 2 will wait for an acknowledgment of any outstanding I PDUs or for a response to a U PDU before attempting to force a response.

dl_p_to

  • length of the P timeout in tenths of a second. The P timeout determines the length of time that LLC Type 2, after sending a command with the P bit set to 1, will wait for a response with the F bit set to 1 before attempting to force a response.

dl_rej_to

  • length of the REJ timeout in tenths of a second. The REJ timeout determines the length of time that LLC Type 2 will wait for a response to a REJ PDU before attempting to force a response.

dl_busy_to

  • length of the BUSY timeout in tenths of a second. The BUSY timeout determines the length of time that LLC Type 2 will wait for an indication that a remote busy condition has been cleared before attempting to force a response.

dl_send_ack_timeout

  • length of the SEND_ACK timeout in tenths of a second. The SEND_ACK timeout determines the maximum length of time that LLC Type 2 will delay acknowledgment of I PDUs if it has not received dl_send_ack_threshold I PDUs.

dl_ack_to_cnt

  • number of times that the ACK timer has expired.

dl_p_to_cnt

  • number of times that the P timer has expired.

dl_rej_to_cnt

  • number of times that the REJ timer has expired.

dl_busy_to_cnt

  • number of times that the BUSY timer has expired.

dl_local_win

  • size of the LLC Type 2 local receive window.

dl_remote_win

  • size of the LLC Type 2 remote receive window.

dl_i_pkts_in

  • number of I PDUs correctly received.

dl_i_pkts_in_oos

  • number of I PDUs received out of sequence.

dl_i_pkts_in_drop

  • number of I PDUs correctly received, but which were dropped because of a lack of resources.

dl_i_pkts_out

  • number of I PDUs acknowledged by the remote system.

dl_i_pkts_retrans

  • number of I PDUs re-transmitted.

dl_s_pkts_in

  • number of S PDUs received.

dl_s_pkts_out

  • number of S PDUs transmitted.

dl_u_pkts_in

  • number of U PDUs received.

dl_u_pkts_out

  • number of U PDUs transmitted.

dl_bad_pkts

  • number of PDUs with bad control fields received.

dl_retry_cnt

  • most recent number of times that LLC Type 2 has attempted to force a response from the remote due to a timer expiration. This value is re-set to 0 when a response is received.

dl_max_retry_cnt

  • maximum value that dl_retry_cnt has attained.

dl_max_retries

  • maximum allowed number of retries before re-setting the connection. This is sometimes known as the N2 variable.

dl_ack_thresh

  • maximum number of I PDUs that can be received before an acknowledgment is sent. If this threshold is reached, an acknowledgment is sent and the SEND_ACK timer is restarted.

dl_remote_busy_cnt

  • number of times that the remote system has reported that it was busy.

dl_hw_req_fails

  • number of times that LLC Type 2 has been unable to transmit due to congestion in the interface device driver or interface card.

State

The message is valid in any state in response to a DL_HP_INFO_REQ.

New State

The resulting state is unchanged.

DL_HP_SET_ACK_TO_REQ

Requests the DLS provider to set the ACK timeout to the specified value.

Format

typedef struct {
u_long     dl_primitive;
u_long     dl_ack_to;
} dl_hp_set_ack_to_req_t;

Parameters

dl_primitive

  • DL_HP_SET_ACK_TO_REQ

dl_ack_to

  • new value of the ACK timeout in tenths of a second. The ACK timeout determines the length of time that LLC Type 2 will wait for an acknowledgment of any outstanding I PDUs or for a response to a U PDU before attempting to force a response.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and Dl_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_P_TO_REQ

Requests the DLS provider to set the P timeout to the specified value.

Format

typedef struct {
u_long dl_primitive;
u_long dl_p_to;
} dl_hp_set_p_to_req_t;

dl_primitive

  • DL_HP_SET_P_TO_REQ

dl_p_to

  • new value of the P timeout in tenths of a second. The P timeout determines the length of time that LLC Type 2, after sending a command with the P bit set to 1, will wait for a response with the F bit set to 1 before attempting to force a response.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_REJ_TO_REQ

Requests the DLS provider to set the REJ timeout to the specified value.

Format

typedef struct {
u_long dl_primitive;
u_long dl_rej_to;
} dl_hp_set_rej_to_req_t;

Parameters

dl_primitive

  • DL_HP_SET_REJ_TO_REQ

dl_rej_to

  • new value of the REJ timeout in tenths of a second. The REJ timeout determines the length of time that LLC Type 2 will wait for a response to a REJ PDU before attempting to force a response.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_BUSY_TO_REQ

Requests the DLS provider to set the BUSY timeout to the specified value.

Format

typedef struct {
u_long dl_primitive;
u_long dl_busy_to;
} dl_hp_set_busy_to_req_t;

Parameters

dl_primitive

  • DL_HP_SET_BUSY_TO_REQ

dl_busy_to

  • new value of the BUSY timeout in tenths of a second. The BUSY timeout determines the length of time that LLC Type 2 will wait for an indication that a remote busy condition has been cleared before attempting to force a response.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_SEND_ACK_TO_REQ

Requests the DLS provider to set the SEND_ACK timeout to the specified value.

Format

typedef struct {
u_long dl_primitive;
u_long dl_send_ack_to;
} dl_hp_set_send_ack_to_req_t;

Parameters

dl_primitive

  • DL_HP_SET_SEND_ACK_TO_REQ

dl_send_ack_to

  • new value of the SEND_ACK timeout in tenths of a second. The SEND_ACK timeout determines the maximum length of time that LLC Type 2 will delay acknowledgment of I PDUs if it has not received dl_send_ack_threshold I PDUs.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_MAX_RETRIES_REQ

Requests the DLS provider to set the maximum allowed number of retries to the specified value.

Format

typedef struct {
u_long     dl_primitive;
u_long      dl_max_retries;
} dl_hp_set_max_retries_req_t;

Parameters

dl_primitive

  • DL_HP_SET_MAX_RETRIES_REQ

dl_max_retries

  • maximum allowed number of retries before re-setting the connection. This is sometimes known as the N2 variable.

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_ACK_THRESH_REQ

Requests the DLS provider to set the acknowledgment threshold to the specified value.

NOTE: Setting the ack thresh will not affect the local window size.

Format

typedef struct {
u_long     dl_primitive;
u_long     dl_ack_thresh;
} dl_hp_set_ack_thresh_req_t;

Parameters

dl_primitive

  • DL_HP_SET_ACK_THRESH_REQ

dl_ack_thresh

  • maximum number of I PDUs that can be received before an acknowledgment is sent. If this threshold is reached, an acknowledgment is sent and the SEND_ACK timer is restarted. This value cannot be greater than the remote receive window size.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the specified dl_ack_thresh is valid and the primitive was issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_SYSERR

  • If the specified dl_ack_thresh is greater than the remote receive window size, then a DL_ERROR_ACK with dl_errno set to DL_SYSERR and dl_unix_errno set to EINVAL is returned.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_HP_SET_LOCAL_WIN_REQ

Requests the DLS provider to set the local window size to the specified value.

NOTE: Setting the local window size also causes the DLPI read side streams queue hi water mark to be set to (local_window_size * MTU). The (local_window_size * MTU) cannot exceed (1 << 16) - (2 * MTU).

Format

typedef struct {
u_long     dl_primitive;
u_long     dl_local_win;
} dl_hp_set_local_win_req_t;

Parameters

dl_primitive

  • DL_HP_SET_LOCAL_WIN_REQ

dl_local_win

  • size of the local receive window. This value must be greater than 0 and less than 128.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the specified dl_local_win is valid and the primitive was issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_SYSERR

  • If the specified dl_local_win is invalid, then a DL_ERROR_ACK with dl_errno set to DL_SYSERR and dl_unix_errno set to EINVAL is returned.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_HP_SET_REMOTE_WIN_REQ

Requests the DLS provider to set the remote window size to the specified value.

NOTE: Setting the remote window size causes the ack thresh to be set to ((remote_window_size + 1) / 2).

Format

typedef struct {
u_long     dl_primitive;
u_long     dl_remote_win;
} dl_hp_set_remote_win_req_t;

Parameters

dl_primitive

  • DL_HP_SET_REMOTE_WIN_REQ

dl_remote_win

  • size of the remote receive window. This value must be greater than 0 and less than 128.

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the specified dl_remote_win is valid and the primitive was issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_SYSERR

  • If the specified dl_remote_win is invalid, then a DL_ERROR_ACK with dl_errno set to DL_SYSERR and dl_unix_errno set to EINVAL is returned.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_HP_CLEAR_STATS_REQ

Requests the DLS provider to zero the mem_fails, queue_fails, ack_to_cnt, p_to_cnt, rej_to_cnt, busy_to_cnt, i_pkts_in, i_pkts_in_oos, i_pkts_in_drop, i_pkts_out, i_pkts_retrans, s_pkts_in, s_pkts_out, u_pkts_in, u_pkts_out, bad_pkts, max_retry_cnt, remote_busy_cnt, and hw_req_fails statistics which are reported in the DL_HP_INFO_ACK primitive.

Format

typedef struct {
u_long     dl_primitive;
} dl_hp_clear_stats_req_t;

Parameters

dl_primitive

  • DL_HP_CLEAR_STATS_REQ

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_SET_LOCAL_BUSY_REQ

Requests that the DLS provider inform the remote system that the local system is busy and cannot accept new data packets.

Format

typedef struct {
u_long      dl_primitive;
} dl_hp_set_local_busy_req_t;

Parameters

dl_primitive

  • DL_HP_SET_LOCAL_BUSY_REQ

State

The message is valid in state IDLE.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_HP_CLEAR_LOCAL_BUSY_REQ

Requests that the DLS provider inform the remote system that the local system is no longer busy and is again able to accept new data packets.

Format

typedef struct {
u_long      dl_primitive;
} dl_hp_clear_local_busy_req_t;

Parameters

dl_primitive

  • DL_HP_CLEAR_LOCAL_BUSY_REQ

State

The message is valid in the states DL_IDLE, DL_DATAXFER, DL_OUTCON_PENDING, DL_INCON_PENDING, DL_USER_RESET_PENDING, and DL_PROV_RESET_PENDING after a DL_HP_SET_LOCAL_BUSY_REQ message.

New State

The resulting state is unchanged.

Response

If the primitive is issued from a valid state, the DLS provider responds with a DL_OK_ACK. Otherwise a DL_ERROR_ACK is returned.

Reasons for Failure

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_CONNECT_REQ

Requests the DLS provider to establish a data link connection with a remote DLS user.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_qos_length;
ulong dl_qos_offset;
ulong dl_growth;
} dl_connect_req_t;

Parameters

dl_primitive

  • DL_CONNECT_REQ

dl_dest_addr_length

  • length of the DLSAP address that identifies the DLS user with whom a connection is to be established.

dl_dest_addr_offset

  • offset from the beginning of the M_PROTO message block where the destination DLSAP address begins.

dl_qos_length

  • length of the quality of service (QOS) parameter values desired by the DLS user initiating a connection.

dl_qos_offset

  • offset from the beginning of the M_PROTO message block where the quality of service parameters begin.

dl_growth

  • defines a growth field for future enhancements to this primitive. Its value must be set to zero.

State

The primitive is valid in state DL_IDLE.

New State

The resulting state is DL_OUTCON_PENDING.

Response

There is no immediate response to the connect request. However, if the connect request is accepted by the callee, DL_CONNECT_CON is sent to the caller, resulting in state DL_DATAXFER.

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

Reasons for Failure

DL_BADADDR

  • The destination DLSAP address was in an incorrect format or contained invalid information.

DL_BADQOSPARAM

  • The quality of service parameters contained invalid values.

DL_BADQOSTYPE

  • The quality of service structure type was not supported by the DLS provider.

DL_ACCESS

  • The DLS user did not have proper permission to use the responding stream.

DL_SYSERR

  • A system error has occurred and the UNIX system error is indicated in the DL_ERROR_ACK.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_CONNECT_IND

Conveys to the local DLS user that a remote (calling) DLS user wishes to establish a data link connection.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_correlation;
ulong dl_called_addr_length;
ulong dl_called_addr_offset;
ulong dl_calling_addr_length;
ulong dl_calling_addr_offset;
ulong dl_qos_length;
ulong dl_qos_offset;
ulong dl_growth;
} dl_connect_ind_t;

Parameters

dl_primitive

  • DL_CONNECT_IND

dl_correlation

  • correlation number to be used by the DLS user to associate this message with the DL_CONNECT_RES, DL_DISCONNECT_REQ, or DL_DISCONNECT_IND that is to follow.

dl_called_addr_length

  • length of the address of the DLSAP for which this DL_CONNECT_IND primitive is intended.

dl_called_addr_offset

  • offset from the beginning of the M_PROTO message block where the called DLSAP address begins.

dl_calling_addr_length

  • length of the address of the DLSAP from which the DL_CONNECT_REQ primitive was sent.

dl_calling_addr_offset

  • offset from the beginning of the M_PROTO message block where the calling DLSAP address begins.

dl_qos_length

  • length of quality of service parameter values desired by the caller.

dl_qos_offset

  • offset from the beginning of the M_PROTO message block where the quality of service parameters begin.

dl_growth

  • growth field for future enhancements to this primitive. Its value will be set to zero.

State

The message is valid in state DL_IDLE, or state DL_INCON_PENDING when the maximum number of outstanding DL_CONNECT_IND primitives has not been reached on this stream.

New State

The resulting state is DL_INCON_PENDING, regardless of the current state.

Response

The DLS user must eventually send either DL_CONNECT_RES to accept the connect request or DL_DISCONNECT_REQ to reject the connect request. In either case, the responding message must convey the correlation number received in the DL_CONNECT_IND. The DLS provider will use the correlation number to identify the connect request to which the DLS user is responding.

DL_CONNECT_RES

Directs the DLS provider to accept a connect request from a remote (calling) DLS user on a designated stream. The DLS user may accept the connection on the same stream where the connect indication arrived, or on a different stream that has been previously bound.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_correlation;
ulong dl_resp_token;
ulong dl_qos_length;
ulong dl_qos_offset;
ulong dl_growth;
} dl_connect_res_t;

Parameters

dl_primitive

  • DL_CONNECT_RES

dl_correlation

  • correlation number that was received with the DL_CONNECT_IND associated with the connection request. The DLS provider will use the correlation number to identify the connect indication to which the DLS user is responding.

dl_resp_token

  • if non-zero, the token associated with the responding stream on which the DLS provider is to establish the connection; this stream must be attached to a PPA and bound to a DLSAP.

dl_qos_length

  • length of the quality of service parameter. This should be the same parameter specified in the DL_CONNECT_IND.

dl_qos_offset

  • offset from the beginning of the M_PROTO message block where the quality of service parameters begin.

dl_growth

  • growth field for future enhancements to this primitive. Its value will be set to zero.

State

The primitive is valid in state DL_INCON_PENDING.

New State

The resulting state is DL_CONN_RES_PENDING.

Response

If the connect response is successful, DL_OK_ACK is sent to the DLS user. If no outstanding connect indications remain, the resulting state for the current stream is DL_IDLE; otherwise, it remains DL_INCON_PENDING. For the responding stream (designated by the parameter dl_res_token), the resulting state is DL_DATAXFER. If the current stream and responding stream are the same, the resulting state of that stream is DL_DATAXFER. These streams may only be the same when the response corresponds to the only outstanding connect indication.

If the request fails, DL_ERROR_ACK is returned on the stream where the DL_CONNECT_RES primitive was received, and the resulting state of that stream and the responding stream is unchanged.

Reasons for Failure

DL_BADTOKEN

  • The token for the responding stream was not associated with a currently open stream.

DL_BADQOSPARAM

  • The quality of service parameters contained invalid values.

DL_BADQOSTYPE

  • The quality of service structure type was not supported by the DLS provider.

DL_BADCORR

  • The correlation number specified in this primitive did not correspond to a pending connect indication.

DL_ACCESS

  • The DLS user did not have proper permission to use the responding stream.

DL_OUTSTATE

  • The primitive was issued from an invalid state, or the responding stream was not in a valid state for establishing a connection.

DL_SYSERR

  • A system error has occurred and the UNIX system error is indicated in the DL_ERROR_ACK.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_PENDING

  • Current stream and responding stream is the same and there is more than one outstanding connect indication.

DL_CONNECT_CON

Informs the local DLS user that the requested data link connection has been established.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_resp_addr_length
ulong dl_resp_addr_offset
ulong dl_qos_lenth;
ulong dl_qos_offset;
ulong dl_growth;
} dl_connect_con_t;

Parameters

dl_primitive

  • DL_CONNECT_CON

dl_resp_addr_length

  • length of the address of the responding DLSAP associated with the newly established data link connection.

dl_resp_addr_offset

  • offset from the beginning of the M_PROTO message block where the responding DLSAP address begins.

dl_qos_length

  • length of the quality of service parameter the DLS user selected when issued the DL_CONNECT_REQ.

dl_qos_offset

  • offset from the beginning of the M_PROTO message block where the quality of service parameter begin.

dl_growth

  • growth field for future enhancements to this primitive. Its value will be set to zero.

State

The message is valid in state DL_OUTCON_PENDING.

New State

The resulting state is DL_DATAXFER.

DL_TOKEN_REQ

Requests that a connection response token be assigned to the stream and returned to the DLS user. This token can be supplied in the DL_CONNECT_RES primitive to indicate the stream on which a connection will be established.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
} dl_token_req_t;

Parameters

dl_primitive

  • DL_TOKEN_REQ

State

The message is valid in any state in which a local acknowledgement is not pending, as described in Appendix B, Allowable Sequence of DLPI Primitives, of the DLPI 2.0 specification.

New State

The resulting state is unchanged.

Response

The DLS provider responds to the information request with a DL_TOKEN_ACK.

DL_TOKEN_ACK

This message is sent in response to DL_TOKEN_REQ; it conveys the connection response token assigned to the stream.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_token;
} dl_token_ack_t;

Parameters

dl_primitive

  • DL_TOKEN_ACK

dl_token

  • connection response token associated with the stream. This value must be a non-zero value. The DLS provider will generate a token value for each stream upon receipt of the first DL_TOKEN_REQ primitive issued on that stream. The same token value will be returned in response to all subsequent DL_TOKEN_REQ primitives issued on a stream.

State

The message is valid in any state in response to a DL_TOKEN_REQ.

New State

The resulting state is unchanged.

DL_DATA_REQ

Conveys a complete DLS Data Unit (DLSDU) from the DLS user to the DLS provider for transmission over the data link connection.

Format

The message consists of one or more M_DATA message blocks containing at least one byte of data.

State

The message is valid in state DL_DATAXFER. If it is received in state DL_IDLE or DL_PROV_RESET_PENDING, it should be discarded without generating an error.

New State

The resulting state is unchanged.

Response

If the request is valid, no response is generated. If the request is erroneous, a STREAMS M_ERROR message should be issued to the DLS user specifying an errno value of EPROTO. This action should be interpreted as a fatal, unrecoverable, protocol error. A request is considered erroneous under the following conditions.

  • The primitive was issued from an invalid state. If the request is issued in state DL_IDLE or DL_PROV_RESET_PENDING, however, it is silently discarded with no fatal error generated.

  • The amount of data in the current DLSDU is not within the DLS provider’s acceptable bounds as specified by dl_min_sdu and dl_max_sdu in the DL_INFO_ACK.

DL_DATA_IND

Conveys a DLSDU from the DLS provider to the DLS user.

Format

The message consists of one or more M_DATA message blocks containing at least one byte of data.

State

The message is valid in state DL_DATAXFER.

New State

The resulting state is unchanged.

DL_DISCONNECT_REQ

Requests the DLS provider to disconnect an active data link connection or one that was in the process of activation, either outgoing or incoming, as a result of an earlier DL_CONNECT_IND or DL_CONNECT_REQ. If an incoming DL_CONNECT_IND is being refused, the correlation number associated with that connect indication must be supplied. The message indicates the reason for the disconnection.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_reason;
ulong dl_correlation;
} dl_disconnect_req_t;

Parameters

dl_primitive

  • DL_DISCONNECT_REQ

dl_reason

  • reason for the disconnection.

    DL_DISC_NORMAL_CONDITION: normal release of a data link connection.

    DL_DISC_ABNORMAL_CONDITION: abnormal release of a data link connection.

    DL_CONREJ_PERMANENT_COND: a permanent condition caused the rejection of a connect request.

    DL_CONREJ_TRANSIENT_COND: a transient condition caused the rejection of a connect request.

    DL_UNSPECIFIED: reason unspecified

dl_correlation

  • if non-zero, conveys the correlation number that was contained in the DL_CONNECT_IND being rejected. This value permits the DLS provider to associate the primitive with the proper DL_CONNECT_IND when rejecting an incoming connection. If disconnect request is releasing a connection that is already established, or is aborting a previously sent DL_CONNECT_REQ, the value of dl_correlation should be zero.

State

The message is valid in any of the states: DL_DATAXFER, DL_INCON_PENDING, DL_OUTCON_PENDING, DL_PROV_RESET_PENDING, DL_USER_RESET_PENDING.

New State

The resulting state is one of the disconnect pending states, as defined in Appendix B, Allowable Sequence of DLPI Primitives, of the DLPI 2.0 specification.

Response

If the disconnect is successful, DL_OK_ACK is sent to the DLS user resulting in state DL_IDLE.

If the request fails, DL_ERROR_ACK is returned, and the resulting state is unchanged.

Reasons for Failure

DL_BADCORR

  • The correlation number specified in this primitive did not correspond to a pending connect indication.

DL_OUTSTATE

  • The primitive was issued from an invalid state.

DL_SYSERR

  • A system error has occurred and the UNIX system error is indicated in the DL_ERROR_ACK.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_DISCONNECT_IND

Informs the DLS user that the data link connection on this stream has been disconnected, or that a pending connection (either DL_CONNECT_REQ or DL_CONNECT_IND) has been aborted. This primitive indicates the origin and the cause of the disconnect.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
ulong dl_originator;
ulong dl_reason;
ulong dl_correlation;
} dl_disconnect_ind_t;

Parameters

dl_primitive

  • DL_DISCONNECT_IND

dl_originator

  • whether the disconnect was DLS user or DLS provider originated (DL_USER or DL_PROVIDER, respectively).

dl_reason

  • the reason for the disconnection:

    DL_DISC_PERMANENT_CONDITION: connection release due to permanent connection.

    DL_DISC_TRANSIENT_CONDITION: connection released due to transient connection.

    DL_CONREJ_DEST_UNKOWN: unknown destination for connect request.

    DL_CONREJ_DEST_UNREACH_PERMANENT: could not reach destination for connect request - permanent condition.

    DL_CONREJ_DEST_UNREACH_TRANSIENT: could not reach destination for connect request - transient condition.

    DL_CONREJ_QOS_UNAVAIL_PERMANENT: requested quality of service parameters permanently unavailable during connection establishment.

    DL_CONREJ_QOS_UNAVAIL_TRANSIENT: requested quality of service parameters temporarily unavailable during connection establishment.

    DL_UNSPECIFIED: reason unspecified

dl_correlation

  • if non-zero, the correlation number that was contained in the DL_CONNECT_IND that is being aborted. This value permits the DLS user to associate the message with the proper DL_CONNECT_IND. If the disconnect indication is indicating the release of a connection that is already established, or is indicating the rejection of a previously sent DL_CONNECT_REQ, the value of dl_correlation should be zero.

State

The message is valid in any of the states: DL_DATAXFER, DL_INCON_PENDING, DL_OUTCON_PENDING, DL_PROV_RESET_PENDING, DL_USER_RESET_PENDING.

New State

The resulting state is DL_IDLE.

DL_RESET_REQ

Requests that the DLS provider initiate the re-synchronization of a data link connection. This service is abortive, so no guarantee of delivery can be assumed about data that is in transit when the reset request is initiated.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
} dl_reset_req_t;

Parameters

dl_primitive

  • DL_RESET_REQ

State

The message is valid in state DL_DATAXFER.

New State

The resulting state is DL_USER_RESET_PENDING.

Response

If the disconnect is successful, DL_OK_ACK is sent to the DLS user resulting in state DL_IDLE.

If the request fails, DL_ERROR_ACK is returned, and the resulting state is unchanged.

Reasons for Failure

DL_OUTSTATE

  • The primitive was issued from an invalid state.

DL_SYSERR

  • A system error has occurred and the UNIX system error is indicated in the DL_ERROR_ACK.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_RESET_IND

Informs the DLS user that either the remote DLS user is re-synchronizing the data link connection, or the DLS provider is reporting loss of data for which it can not recover. The indication conveys the reason for the reset.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
      ulong       dl_primitive;
      ulong       dl_originator;
      ulong       dl_reason;
} dl_reset_ind_t;

Parameters

dl_primitive

  • DL_RESET_REQ

dl_originator

  • whether the reset was originated by the DLS user or DLS provider (DL_USER or DL_ PROVIDER, respectively).

dl_reason

  • reason for the reset:

    DL_RESET_FLOW_CONTROL: indicates flow control congestion

    DL_RESET_LINK_ERROR: indicates a data link error situation

    DL_RESET_RESYNCH: indicates a request for re-synchronization of a data link connection.

State

The message is valid in state DL_DATAXFER.

New State

The resulting state is DL_PROV_RESET_PENDING.

Response

The DLS user should issue a DL_RESET_RES primitive to continue the resynchronization procedure.

DL_RESET_RES

Directs the DLS provider to complete re-synchronizing the data link connection.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
} dl_reset_res_t;

Parameters

dl_primitive

  • DL_RESET_RES

State

The primitive is valid in state DL_PROV_RESET_PENDING.

New State

The resulting state is DL_RESET_RES_PENDING.

Response

If the reset response is successful, DL_OK_ACK is sent to the DLS user resulting in state DL_DATAXFER.

If the reset response is erroneous, DL_ERROR_ACK is returned, and the resulting state is unchanged.

Reasons for Failure

DL_OUTSTATE

  • The primitive was issued from an invalid state.

DL_SYSERR

  • A system error has occurred and the UNIX system error is indicated in the DL_ERROR_ACK.

    The UNIX error returned may be set to (not limited to) errors listed in Table 2-2 “Error Return Values”.

DL_RESET_CON

Informs the reset-initiating DLS user that the reset has completed.

Format

The message consists of one M_PROTO message block containing the structure shown below.

typedef struct {
ulong dl_primitive;
} dl_reset_con_t;

Parameters

dl_primitive

  • DL_RESET_CON

State

The message is valid in state DL_USER_RESET_PENDING.

New State

The resulting state is DL_DATAXFER.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 2007 Hewlett-Packard Development Company, L.P.