Kernel Functions for Drivers net_inject(9F)
NAME
net_inject - determine if a network interface name exists
for a network protocolSYNOPSIS
#include
int net_inject(const net_data_t net, inject_t style,
net_inject_t *packet);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
net value returned from a successful call tonet_protocol_lookup(9F).
style method that determines how this packet is to be injected into the network or kernel. packet details about the packet to be injected.DESCRIPTION
The net_inject() function provides an interface to allow
delivery of network layer (layer 3) packets either into thekernel or onto the network. The method of delivery is deter-
mined by style.If NI_QUEUE_IN is specified, the packet is scheduled for
delivery up into the kernel, imitating its reception by anetwork interface. In this mode, packet->ni_addr is ignored
and packet->ni_physical specifies the interface for which
the packet is made to appear as if it arrived on.If NI_QUEUE_OUT is specified, the packet is scheduled for
delivery out of the kernel, as if it were being sent by araw socket. In this mode, packet->ni_addr and packet-
>ni_physical are both ignored.
Neither NI_QUEUE_IN or NI_QUEUE_OUT cause the packet to be
immediately processed by the kernel. Instead, the packet is added to a list and a timeout is scheduled (if there are none already pending) to deliver the packet. The call tonet_inject() returns once the setup has been completed, and
not after the packet has been processed. The packetSunOS 5.11 Last change: 1 May 2008 1
Kernel Functions for Drivers net_inject(9F)
processing is completed on a different thread and in a dif-
ferent context to that of the original packet. Thus, apacket queued up using net_inject() for either NI_QUEUE_IN
or NI_QUEUE_OUT is presented to the packet event again. A
packet received by a hook from NH_PHYSICAL_IN and then
queued up with NI_QUEUE_IN is seen by the hook as another
NH_PHYSICAL_IN packet. This also applies to both
NH_PHYSICAL_OUT and NI_QUEUE_OUT packets.
If NI_DIRECT_OUT is specified, an attempt is made to send
the packet out to a network interface immediately. No pro-
cessing on the packet, aside from prepending any requiredlayer 2 information, is made. In this instance, packet-
>ni_addr may be used to specify the next hop (for the pur-
pose of link layer address resolution) and packet-
>ni_physical determines which interface the packet should be
sent out.For all three packets, packet->ni_packet must point to an
mblk structure with the packet to be delivered.See net_inject_t(9S) for more details on the structure
net_inject_t.
RETURN VALUES
The net_inject() function returns:
-1 The network protocol does not support this function.
0 The packet is successfully queued or sent.1 The packet could not be queued up or sent out immedi-
ately.CONTEXT
The net_inject() function may be called from user, kernel,
or interrupt context.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 1 May 2008 2
Kernel Functions for Drivers net_inject(9F)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWcs ||_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
SEE ALSO
net_protocol_lookup(9F), netinfo(9F), net_inject_t(9S)
SunOS 5.11 Last change: 1 May 2008 3