net_inject(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

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_in‐
       ject() 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)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3