xref: /illumos-gate/usr/src/man/man3dlpi/dlpi_send.3dlpi (revision eb00b1c8a31c2253a353644606388dff5b0e0275)
te
Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DLPI_SEND 3DLPI "Jul 15, 2008"
NAME
dlpi_send - send a data message using DLPI
SYNOPSIS

cc [ flag... ] file... -ldlpi [ library... ]
#include <libdlpi.h>

int dlpi_send(dlpi_handle_t dh, const void *daddrp,
 size_t daddrlen, const void *msgbuf, size_t msglen,
 const dlpi_sendinfo_t *sendp);
DESCRIPTION

The dlpi_send() function attempts to send the contents of msgbuf over the DLPI link instance associated with the DLPI handle dh to the destination address specified by daddrp. The size of msgbuf and daddrp are provided by the msglen and daddrlen arguments, respectively. The attempt will fail if dh is not in the DL_IDLE DLPI state, the address named by daddrp is invalid, daddrlen is larger than DLPI_PHYSADDR_MAX, or msglen is outside the range reported by dlpi_info(3DLPI).

If the sendp argument is NULL, data is sent using the bound SAP associated with dh (see dlpi_bind(3DLPI)) and with default priority. Otherwise, sendp must point to a dlpi_sendinfo_t structure defined in <libdlpi.h> as follows:

typedef struct {
 uint_t dsi_sap;
 dl_priority_t dsi_prio;
} dlpi_sendinfo_t;

The dsi_sap value indicates the SAP to use for the message and the dsi_prio argument indicates the priority. The priority range spans from 0 to 100, with 0 being the highest priority. If one wishes to only alter the SAP or priority (but not both), the current SAP can be retrieved using dlpi_info(3DLPI), and the default priority can be specified by using the DL_QOS_DONT_CARE constant.

If the handle is in raw mode (see DLPI_RAW in dlpi_open(3DLPI)), msgbuf must start with the link-layer header (see dlpi(7P)). In raw mode, the contents of daddrp and sendp are ignored, as they are already specified by the link-layer header in msgbuf.

If msgbuf is accepted for delivery, no error is returned. However, because only unacknowledged connectionless service (DL_CLDLS) is currently supported, a successful return does not guarantee that the data will be successfully delivered to daddrp.

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

Invalid DLPI handle

DLPI_EINVAL

Invalid argument

ATTRIBUTES

See attributes(5) for description of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Committed
MT-Level Safe
SEE ALSO

dlpi_bind(3DLPI), dlpi_info(3DLPI), dlpi_open(3DLPI), libdlpi(3LIB), attributes(5), dlpi(7P)