DL_ENABMULTI_REQ Primitive

Purpose

Requests that the data link service (DLS) provider enable specific multicast addresses on a per stream basis.

Structure

The primitive consists of one M_PROTO message block, which contains the following structure:

typedef struct
{
   ulong  dl_primitive;
   ulong  dl_addr_length;
   ulong  dl_addr_offset;
} dl_enabmulti_req_t;

This structure is defined in /usr/include/sys/dlpi.h.

Description

The DL_ENABMULTI primitive requests that the DLS provider enable specific multicast addresses on a per stream basis. It is invalid for a DLS provider to pass upstream messages that are destined for any address other than those explicitly enabled on that stream by the DLS user.

If a duplicate address is requested, the system returns a DL_OK_ACK primitive, with no operation performed. If the stream is closed, all multicast addresses associated with the stream will be unregistered.

The DLS provider must not run in the interrupt environment. If the DLS provider runs in the interrupt environment, the system returns a DL_ERROR_ACK primitive with a DL_SYSERR error code and an operating system error code of 0.

Parameters

Item Description
dl_primitive Specifies the DL_ENABMULTI primitive.
dl_addr_length Specifies the length of the multicast address.
dl_addr_offset Indicates where the multicast address begins. The value of this parameter is the offset from the beginning of the M_PROTO message block.

States

Item Description
Valid The primitive is valid in any state in which a local acknowledgement is not pending, with the exception of the DL_UNATTACH state.
New The resulting state is unchanged.

Acknowledgments

Item Description
Successful The DL_OK_ACK primitive is sent to the DLS user.
Unsuccessful The DL_ERROR_ACK primitive is returned, and the resulting state is unchanged.

Error Codes

Item Description
DL_BADADDR Indicates the data link service access point (DLSAP) address information is invalid or is in an incorrect format.
DL_NOTSUPPORTED Indicates the primitive is known but not supported by the DLS provider.
DL_OUTSTATE Indicates the primitive was issued from an invalid state, or the responding stream was not in a valid state for establishing a connection.
DL_TOOMANY Indicates the limit has been exceeded for the maximum number of DLSAPs per stream.
DL_SYSERR Indicates a system error. The DL_ERROR_ACK primitive indicates the error.