Go to main content

man pages section 4: Device and Network Interfaces

Exit Print View

Updated: Thursday, June 13, 2019
 
 

ipnet(4D)

Name

ipnet, lo0 - ipnet device driver

Synopsis

/dev/ipnet/*, /dev/lo0

Description

The ipnet device driver creates, removes and manages nodes in the /dev/ipnet/ namespace.

A node is created in /dev/ipnet for every IP interface on the system, including interfaces that exist only in software and for which there is no hardware device. The ipnet device also provides access to all IP traffic to and from the system. To provide access to packets that are internally looped-back in IP, the ipnet driver creates a /dev/lo0 DLPI device.

APPLICATION PROGRAMMING INTERFACE

ipnet and DLPI

Device nodes created in /dev/ipnet are DLPI style-1 devices. All M_PROTO and M_PCPROTO–type messages are interpreted as DLPI primitives. Because the device is read-only and packets can only be observed by opening them, the following subset of DLPI primitives is supported:


DL_INFO_REQ
DL_BIND_REQ
DL_UNBIND_REQ
DL_PROMISCON_REQ
DL_PROMISCOFF_REQ
DLIOCRAW

The values returned by the driver in the DL_INFO_ACK primitive in response to the DL_INFO_REQ are:

  • Maximum SDU is INT_MAX

  • Minimum SDU is 0.

  • DLSAP address length is 2.

  • MAC type is DL_IPNET.

  • SAP length value is 2.

  • Service mode is DL_CLDLS.

  • No optional quality of service (QOS) support is provided. Accordingly, the QOS fields are 0.

  • Provider style is DL_STYLE1.

  • Version is DL_VERSION_2.

The /dev/ipnet/* and /dev/lo0 devices only accept DL_BIND_REQ requests for SAPs 4 (IPv4 packets), 6 (IPv6 packets), or 0 (all IP packets). DL_BIND_REQ requests for other SAP values result in a DL_ERROR_ACK of DL_BADSAP.

ipnet Primitives

For /dev/ipnet/* devices, the DL_PROMISCON_REQ and DL_PROMISCOFF_REQ primitives with the DL_PROMISC_PHYS flag set in the dl_level field enables/disables the reception of all packets. When disabled, only packets with addresses matching any of the configured addresses on the IP interface are received. When used with the DL_PROMISC_MULTI flag set, reception of all multicast group addresses can be enabled/disabled. DL_PROMISC_PHYS and DL_PROMISC_MULTI have no effect for /dev/lo0. When the DL_PROMISC_SAP flag is set, reception of all IPv4 and IPv6 can be enabled/disabled.

The DLIOCRAW ioctl is supported but has no effect on the data returned from the device.

The DL_IOC_IPNET_INFO ioctl enables/disables the inclusion of a dl_ipnetinfo_t structure that is prepended to the IP header when receiving packet data. When enabled, a non-zero integer is returned reflecting the current DL_IOC_IPNET_INFO version. The dl_ipnetinfo_t data structure is defined in <sys/dlpi.h> and includes the following fields:


uint8_t         dli_version;    /* DL_IPNETINFO_* version */
uint8_t         dli_family;     /* packet IP header version */
uint16_t        dli_htype;
uint32_t        dli_pktlen;     /* length of dl_ipnetinfo_t */
uint32_t        dli_ifindex;
uint32_t        dli_grifindex;
uint32_t        dli_zsrc;       /* packet source zone ID (if any) */
uint32_t        dli_zdst;       /* packet dest zone ID (if any) */

The current dli_version is 1. To robustly support future dl_ipnetinfo_t versions, consumers should check that dli_version is a value they recognize, and must use the dli_len field to advance past the dl_ipnetinfo_t header.

Files

/dev/ipnet/*, /dev/lo0

Special character devices

/kernel/drv/ipnet.conf

Configuration file

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
system/kernel
Architecture
SPARC, x86
Interface Stability
Committed

See Also

dlpi(4P), attributes(7)