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

Connectionless-mode Service Primitives

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

 » Glossary

 » Index

This section describes the connectionless-mode service primitives.

DL_UNITDATA_REQ

Conveys one DLSDU from the DLS user to the DLS provider for transmission to a peer DLS user. DLPI requires applications using this primitive to run as root.

Because connectionless data transfer is an unacknowledged service, the DLS provider makes no guarantees of delivery of connectionless DLSDUs. It is the responsibility of the DLS user to do any necessary sequencing or retransmission of DLSDUs in the event of a presumed loss.

Format

The message consists of one M_PROTO message block containing the structure shown below, followed by one or more M_DATA blocks containing at least one byte of data. The amount of user data that may be transferred in a single DLSDU is limited. This limit is conveyed by the parameter dl_max_sdu in the DL_INFO_ACK primitive.

typedef struct {
ulong dl_primitive;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
dl_priority_t  dl_priority;
} dl_unitdata_req_t;

Parameters

dl_primitive

  • DL_UNITDATA_REQ

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_priority

  • priority value within the supported range for this particular DLSDU. This value must be set to 0 (zero).

State

The message is valid in state DL_IDLE.

New State

The resulting state is unchanged.

Response

If the DLS provider accepts the data for transmission, there is no response. This does not, however, guarantee that the data will be delivered to the destination DLS user, since the connectionless data transfer is not a confirmed service.

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

If for some reason the request cannot be processed, the DLS provider may generate a DL_UDERROR_IND to report the problem. There is, however, no guarantee that such an error report will be generated for all undeliverable data units, since connectionless data transfer is not a confirmed service.

Reasons for Failure

DL_BADADDR

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

DL_BADDATA

  • The amount of data in the current DLSDU exceeded the DLS provider's DLSDU limit.

DL_OUTSTATE

  • Primitive was issued from an invalid state.

DL_UNSUPPORTED

  • Requested priority not supplied by provider.

Security Containment

With the Security Containment product version B.11.23.01 or later, HP DLPI will allow transmision of IP/ARP frame only for users with PRIV_NETADMIN privilege.

See “Fine-grained Privileges with Security Containment Release” for more details.

DL_UNITDATA_IND

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

Format

The message consists of one M_PROTO message block containing the structure shown below, followed by one or more M_DATA blocks containing at least one byte of data. The amount of user data that may be transferred in a single DLSDU is limited. This limit is conveyed by the parameter dl_max_sdu in the DL_INFO_ACK primitive.

typedef struct {
ulong dl_primitive;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_src_addr_length;
ulong dl_src_addr_offset;
ulong dl_group_address;
} dl_unitdata_ind_t;

Parameters

dl_primitive

  • DL_UNITDATA_IND

dl_dest_addr_length

  • length of the address of the DLSAP where this DL_UNITDATA_IND is intended to be delivered.

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 DLSAP address of the sending DLS user.

dl_src_addr_offset

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

dl_group_address

  • is set by the DLS provider upon receiving and passing upstream a data message when the destination address of the data message is a multicast or broadcast address.

State

The message is valid in any attached state.

New State

The resulting state is unchanged.

DL_UDERROR_IND

Informs the DLS user that a previously sent DL_UNITDATA_REQ produced an error or could not be delivered. The primitive indicates the destination DLSAP address associated with the failed request, and conveys an error value that specifies the reason for failure.

Format

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

typedef struct {
ulong dl_primitive;
ulong dl_dest_addr_length;
ulong dl_dest_addr_offset;
ulong dl_unix_errno;
ulong dl_errno;
} dl_uderror_ind_t;

Parameters

dl_primitive

  • DL_UDERROR_IND

dl_dest_addr_length

  • length of the DLSAP address of the destination DLS user.

dl_dest_addr_offset

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

dl_unix_errno

  • UNIX system error code associated with the failure. This value should be non-zero only when dl_errno is set to DL_SYSERR. It is used to report UNIX system failures that prevent the processing of a given request.

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

dl_errno

  • DLPI error code associated with the failure. See Reasons for Failure in the description of DL_UNITDATA_REQ for the error codes that apply to an erroneous DL_UNITDATA_REQ. In addition, the error value DL_UNDELIVERABLE may be returned if the request was valid but for some reason the DLS provider could not deliver the data unit (for example, due to lack of sufficient local buffering to store the data unit). There is, however, no guarantee that such an error report will be generated for all undeliverable data units, since connectionless data transfer is not a confirmed service.

State

The message is valid in state DL_IDLE.

New State

The resulting state is unchanged.

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