svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
net_inject(9f)
net_inject(9F) Kernel Functions net_inject(9F)
NAME
net_inject - determine if a network interface name exists for a network
protocol
SYNOPSIS
#include <sys/neti.h>
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 to net_proto‐
col_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 the kernel or onto the net‐
work. The method of delivery is determined by style.
If NI_QUEUE_IN is specified, the packet is scheduled for delivery up
into the kernel, imitating its reception by a network 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 a raw socket. In this mode,
packet->ni_addr is ignored.
If NI_QUEUE_PBR_OUT is specified, the packet is scheduled for delivery
out of the kernel just like in case of NI_QUEUE_OUT. In this mode,
packet->ni_addr and packet->ni_physical are used to set policy based
routing (PBR) information. packet->ni_addr is set to next hop address
and packet->ni_physical is set to outgoing interface index.
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 to net_inject() returns once the setup has been com‐
pleted, and not after the packet has been processed. The packet pro‐
cessing is completed on a different thread and in a different context
to that of the original packet. Thus, a packet 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_PHYS‐
ICAL_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 processing on the packet,
aside from prepending any required layer 2 information, is made. In
this instance, packet->ni_addr may be used to specify the next hop (for
the purpose 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 struc‐
ture 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 immediately.
CONTEXT
The net_inject() function may be called from user, kernel, or interrupt
context.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Availabilitysystem/core-os _ Interface StabilityCommit‐
ted
SEE ALSO
net_protocol_lookup(9F), netinfo(9F), net_inject_t(9S)
Oracle Solaris 11.4 5 Aug 2015 net_inject(9F)