DLPI_ENABNOTIFY(3DLPI) Data Link Provider Interface Library Functions
NAME
dlpi_enabnotify - enable DLPI notification
SYNOPSIS
cc [
flag... ]
file... -
ldlpi [
library... ]
#include <libdlpi.h>
int dlpi_enabnotify(
dlpi_handle_t dh,
uint_t notes,
dlpi_notifyfunc_t *funcp,
void *arg,
dlpi_notifyid_t *id);
typedef void dlpi_notifyfunc_t(
dlpi_handle_t,
dlpi_notifyinfo_t *,
void *);
DESCRIPTION
The
dlpi_enabnotify() function enables a notification callback for
the set of events specified in
notes, which must be one or more (by a
logical OR operation) of the DLPI notifications documented in
dlpi(4P). The callback function
funcp is registered with the DLPI
handle
dh and is invoked when
dh receives notification for any of the
specified event types. Upon success,
id contains the identifier
associated with the registration.
Multiple event types can be registered for a callback function on the
DLPI handle
dh. Similarly, the same event type can be registered
multiple times on the same handle.
Once a callback has been registered,
libdlpi will check for
notification events on the DLPI handle
dh, when exchanging DLPI
messages with the underlying DLPI link instance. The
dlpi_recv(3DLPI) function will always check for notification events, but other
libdlpi operations may also lead to an event callback being invoked. Although
there may be no expected data messages to be received,
dlpi_recv() can be called, as shown below, with a null buffer to force a check
for pending events on the underlying DLPI link instance.
dlpi_recv(dh, NULL, NULL, NULL, NULL, 0, NULL);
When a notification event of interest occurs, the callback function
is invoked with the arguments
arg, originally passed to
dlpi_disabnotify(3DLPI), and
infop, whose members are described
below.
uint_t dni_note Notification event type.
uint_t dni_speed Current speed, in kilobits per second, of
the DLPI link. Valid only for
DL_NOTE_SPEED.
uint_t dni_size Current maximum message size, in bytes,
that the DLPI link is able to accept for
transmission. Valid only for
DL_NOTE_SDU_SIZE.
uchar_t dni_physaddrlen Link-layer physical address length, in
bytes. Valid only for
DL_NOTE_PHYS_ADDR.
uchar_t dni_physaddr[]
Link-layer physical address of DLPI link.
Valid only for
DL_NOTE_PHYS_ADDR.
The
libdlpi library will allocate and free the
dlpi_notifyinfo_t structure and the caller must not allocate the structure or perform
any operations that require its size to be known.
The callback is not allowed to block. This precludes calling
dlpi_enabnotify() from a callback, but non-blocking
libdlpi functions, including
dlpi_disabnotify(), can be called.
RETURN VALUES
Upon success,
DLPI_SUCCESS is returned. If
DL_SYSERR is returned,
errno contains the specific UNIX system error value. Otherwise, a
DLPI error value defined in
<sys/dlpi.h> or an error value listed in
the following section is returned.
ERRORS
DLPI_EINHANDLE A DLPI handle is invalid.
DLPI_EINVAL An argument is invalid.
DLPI_ENOTEIDINVAL The DLPI notification ID is invalid.
DLPI_ENOTENOTSUP The DLPI notification is not supported by the
link.
DLPI_ETIMEDOUT The DLPI operation timed out.
DLPI_FAILURE The DLPI operation failed.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
dlpi_disabnotify(3DLPI),
dlpi_recv(3DLPI),
libdlpi(3LIB),
dlpi(4P),
attributes(7) March 10, 2009 DLPI_ENABNOTIFY(3DLPI)