This section describes the primitives used for XID and TEST
operations.
DL_TEST_REQ |
 |
Conveys the TEST command DLSDU from the DLS user to the DLS provider
for transmission to a peer DLS provider.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
} dl_test_req_t;
Parameters
dl_primitive
dl_flag
flag values for the
request as follows:
DL_POLL_FINAL indicates if the poll/final bit is set.
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
Response
On an invalid TEST command request, a DL_ERROR_ACK is issued
to the user. If the DLS provider receives a response from the remote
side, a DL_TEST_CON is issued to the DLS user. It is recommended
that the DLS user use a timeout procedure to recover from a situation
when there is no response from the peer DLS user.
Reasons for Failure
DL_OUTSTATE
Primitive was issued
from an invalid state.
DL_BADADDR
DLSAP address information
was invalid or was in an incorrect format.
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_NOTSUPPORTED
Primitive is known
but not supported by the DLS provider.
DL_TESTAUTO
Previous bind request
specified automatic handling of TEST responses.
DL_UNSUPPORTED
Requested service not
supplied by provider.
DL_TEST_IND |
 |
Conveys the TEST indication DLSDU from the DLS provider to
the DLS user.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_src_addr_length;
ulong dl_src_addr_offset;
} dl_test_ind_t;
Parameters
dl_primitive
dl_flag
flag values associated
with the received TEST frame:
DL_POLL_FINAL indicates if the poll/final bit is set.
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
dl_src_addr_length
length of the source
DLSAP address. If the source user is implemented using DLPI, this
address is the full DLSAP address returned on the DL_BIND_ACK.
dl_src_addr_offset
offset from the beginning
of the M_PROTO message block where the source DLSAP address begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
Response
The DLS user must respond with a DL_TEST_RES.
DL_TEST_RES |
 |
Conveys the TEST response DLSDU from the DLS user to the DLS provider
in response to a DL_TEST_IND.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
} dl_test_res_t;
Parameters
dl_primitive
dl_flag
flag values for the
response as follows:
DL_POLL_FINAL indicates if the poll/final bit is set.
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
DL_TEST_CON |
 |
Conveys the TEST response DLSDU from the DLS provider to the
DLS user in response to a DL_TEST_REQ.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_src_addr_length;
ulong dl_src_addr_offset;
} dl_test_con_t;
Parameters
dl_primitive
dl_flag
flag values for the
request as follows:
DL_POLL_FINAL indicates if the poll/final bit is set.
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
dl_src_addr_length
length of the source
DLSAP address. If the source user is implemented using DLPI, this
address is the full DLSAP address returned on the DL_BIND_ACK.
dl_src_addr_offset
offset from the beginning
of the M_PROTO message block where the source DLSAP address begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
DL_XID_REQ |
 |
Conveys one XID DLSDU from the DLS user to the DLS provider
for transmission to a peer DLS user.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
} dl_xid_req_t;
Parameters
dl_primitive
dl_flag
flag values for the
response as follows:
DL_POLL_FINAL indicates status of the poll/final bit in the
xid frame.
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
Response
On an invalid XID request, a DL_ERROR_ACK is issued to the
user. If the remote side responds to the XID request, a DL_XID_CON
will be sent to the user. It is recommended that the DLS user use
a timeout procedure on an XID_REQ. The timeout may be used if the
remote side does not respond to the XID request.
Reasons for Failure
DL_BADDATA
The amount of data
in the current DLSDU exceeded the DLS provider’s DLSDU
limit.
DL_XIDAUTO
Previous bind request
specified provider would handle XID.
DL_OUTSTATE
Primitive was issued
from an invalid state.
DL_BADADDR
The DLSAP address information
was invalid or was in an incorrect format.
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_NOTSUPPORTED
Primitive is known
but not supported by the DLS provider.
DL_XID_IND |
 |
Conveys an XID DLSDU from the DLS provider to the DLS user.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_src_addr_length;
ulong dl_src_addr_offset;
} dl_xid_ind_t;
Parameters
dl_primitive
dl_flag
flag values associated
with the received XID frame:
DL_POLL_FINAL indicates if the received xid frame had the poll/final
bit set.
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
dl_src_addr_length
length of the source
DLSAP address. If the source user is implemented using DLPI, this
address is the full DLSAP address returned on the DL_BIND_ACK.
dl_src_addr_offset
offset from the beginning
of the M_PROTO message block where the source DLSAP address begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
Response
The DLS user must respond with a DL_XID_RES.
DL_XID_RES |
 |
Conveys an XID DLSDU from the DLS user to the DLS provider
in response to a DL_XID_IND.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
} dl_xid_res_t;
Parameters
dl_primitive
dl_flag
flag values associated
with the received XID frame:
DL_POLL_FINAL
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.
DL_XID_CON |
 |
Conveys an XID DLSDU from the DLS provider to the DLS user
in response to a DL_XID_REQ.
Format
The message consists of one M_PROTO message block, followed
by zero or more M_DATA blocks containing zero or more bytes of data.
The message structure is as follows:
typedef struct {
ulong dl_primitive;
ulong dl_flag;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_src_addr_length;
ulong dl_src_addr_offset;
} dl_xid_con_t;
Parameters
dl_primitive
dl_flag
flag values associated
with the received XID frame:
DL_POLL_FINAL
dl_dest_addr_length
length of the DLSAP
address of the destination DLS user. If the destination user is
implemented using DLPI, this address is the full DLSAP address returned
on the DL_BIND_ACK.
dl_dest_addr_offset
offset from the beginning
of the M_PROTO message block where the destination DLSAP address
begins.
dl_src_addr_length
length of the source
DLSAP address. If the source user is implemented using DLPI, this
address is the full DLSAP address returned on the DL_BIND_ACK.
dl_src_addr_offset
offset from the beginning
of the M_PROTO message block where the source DLSAP address begins.
State
The message is valid in states DL_IDLE and DL_DATAXFER.
New State
The resulting state is unchanged.