summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys')
-rw-r--r--usr/src/uts/common/sys/dlpi.h18
-rw-r--r--usr/src/uts/common/sys/fs/sdev_impl.h4
-rw-r--r--usr/src/uts/common/sys/hook_event.h4
-rw-r--r--usr/src/uts/common/sys/neti.h6
-rw-r--r--usr/src/uts/common/sys/netstack.h5
-rw-r--r--usr/src/uts/common/sys/sysmacros.h3
6 files changed, 33 insertions, 7 deletions
diff --git a/usr/src/uts/common/sys/dlpi.h b/usr/src/uts/common/sys/dlpi.h
index 355280f920..3af7b7bca7 100644
--- a/usr/src/uts/common/sys/dlpi.h
+++ b/usr/src/uts/common/sys/dlpi.h
@@ -35,11 +35,8 @@
#ifndef _SYS_DLPI_H
#define _SYS_DLPI_H
-#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.2 */
-
#include <sys/types.h>
#include <sys/stream.h>
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -51,10 +48,21 @@ extern "C" {
#define DLIOCRAW (DLIOC|1) /* M_DATA "raw" mode */
#define DLIOCNATIVE (DLIOC|2) /* Native traffic mode */
#define DLIOCMARGININFO (DLIOC|3) /* margin size info */
+#define DLIOCIPNETINFO (DLIOC|4) /* ipnet header */
#define DLIOCHDRINFO (DLIOC|10) /* IP fast-path */
-
#define DL_IOC_HDR_INFO DLIOCHDRINFO
+#define DL_IPNETINFO_VERSION 0x1
+
+typedef struct dl_ipnetinfo {
+ uint8_t dli_version; /* DL_IPNETINFO_* version */
+ uint8_t dli_ipver; /* packet IP header version */
+ uint16_t dli_len; /* length of dl_ipnetinfo_t */
+ uint32_t dli_pad; /* alignment pad */
+ uint64_t dli_srczone; /* packet source zone ID (if any) */
+ uint64_t dli_dstzone; /* packet dest zone ID (if any) */
+} dl_ipnetinfo_t;
+
/*
* DLPI revision definition history
*/
@@ -264,7 +272,7 @@ extern "C" {
#define DL_IPV6 0x80000002ul /* IPv6 Tunnel Link */
#define SUNW_DL_VNI 0x80000003ul /* Virtual network interface */
#define DL_WIFI 0x80000004ul /* IEEE 802.11 */
-
+#define DL_IPNET 0x80000005ul /* ipnet(7D) link */
/*
* DLPI provider service supported.
* These must be allowed to be bitwise-OR for dl_service_mode in
diff --git a/usr/src/uts/common/sys/fs/sdev_impl.h b/usr/src/uts/common/sys/fs/sdev_impl.h
index 7bf24fb96a..10ac3b60b6 100644
--- a/usr/src/uts/common/sys/fs/sdev_impl.h
+++ b/usr/src/uts/common/sys/fs/sdev_impl.h
@@ -271,6 +271,7 @@ typedef enum {
#define SDEV_VTOR_INVALID -1
#define SDEV_VTOR_SKIP 0
#define SDEV_VTOR_VALID 1
+#define SDEV_VTOR_STALE 2
/* convenient macros */
#define SDEV_IS_GLOBAL(dv) \
@@ -626,6 +627,7 @@ extern int prof_lookup();
extern void prof_filldir(struct sdev_node *);
extern int devpts_validate(struct sdev_node *dv);
extern int devnet_validate(struct sdev_node *dv);
+extern int devipnet_validate(struct sdev_node *dv);
extern int devvt_validate(struct sdev_node *dv);
extern void *sdev_get_vtor(struct sdev_node *dv);
@@ -657,11 +659,13 @@ extern kmem_cache_t *sdev_node_cache;
extern struct vnodeops *sdev_vnodeops;
extern struct vnodeops *devpts_vnodeops;
extern struct vnodeops *devnet_vnodeops;
+extern struct vnodeops *devipnet_vnodeops;
extern struct vnodeops *devvt_vnodeops;
extern struct sdev_data *sdev_origins; /* mount info for global /dev instance */
extern const fs_operation_def_t sdev_vnodeops_tbl[];
extern const fs_operation_def_t devpts_vnodeops_tbl[];
extern const fs_operation_def_t devnet_vnodeops_tbl[];
+extern const fs_operation_def_t devipnet_vnodeops_tbl[];
extern const fs_operation_def_t devvt_vnodeops_tbl[];
extern const fs_operation_def_t devsys_vnodeops_tbl[];
extern const fs_operation_def_t devpseudo_vnodeops_tbl[];
diff --git a/usr/src/uts/common/sys/hook_event.h b/usr/src/uts/common/sys/hook_event.h
index df99a67956..f9f29c845b 100644
--- a/usr/src/uts/common/sys/hook_event.h
+++ b/usr/src/uts/common/sys/hook_event.h
@@ -74,7 +74,9 @@ typedef enum nic_event {
NE_UNPLUMB,
NE_UP,
NE_DOWN,
- NE_ADDRESS_CHANGE
+ NE_ADDRESS_CHANGE,
+ NE_LIF_UP,
+ NE_LIF_DOWN
} nic_event_t;
typedef void *nic_event_data_t;
diff --git a/usr/src/uts/common/sys/neti.h b/usr/src/uts/common/sys/neti.h
index db4a74dd3d..33276bf3c0 100644
--- a/usr/src/uts/common/sys/neti.h
+++ b/usr/src/uts/common/sys/neti.h
@@ -127,6 +127,10 @@ struct net_protocol_s {
int (*netp_getpmtuenabled)(net_handle_t);
int (*netp_getlifaddr)(net_handle_t, phy_if_t, lif_if_t,
size_t, net_ifaddr_t [], void *);
+ int (*neti_getlifzone)(net_handle_t, phy_if_t, lif_if_t,
+ zoneid_t *);
+ int (*neti_getlifflags)(net_handle_t, phy_if_t, lif_if_t,
+ uint64_t *);
phy_if_t (*netp_phygetnext)(net_handle_t, phy_if_t);
phy_if_t (*netp_phylookup)(net_handle_t, const char *);
lif_if_t (*netp_lifgetnext)(net_handle_t, phy_if_t, lif_if_t);
@@ -274,6 +278,8 @@ extern int net_getmtu(net_handle_t, phy_if_t, lif_if_t);
extern int net_getpmtuenabled(net_handle_t);
extern int net_getlifaddr(net_handle_t, phy_if_t, lif_if_t,
int, net_ifaddr_t [], void *);
+extern zoneid_t net_getlifzone(net_handle_t, phy_if_t, lif_if_t, zoneid_t *);
+extern int net_getlifflags(net_handle_t, phy_if_t, lif_if_t, uint64_t *);
extern phy_if_t net_phygetnext(net_handle_t, phy_if_t);
extern phy_if_t net_phylookup(net_handle_t, const char *);
extern lif_if_t net_lifgetnext(net_handle_t, phy_if_t, lif_if_t);
diff --git a/usr/src/uts/common/sys/netstack.h b/usr/src/uts/common/sys/netstack.h
index 55acab834c..e44efab458 100644
--- a/usr/src/uts/common/sys/netstack.h
+++ b/usr/src/uts/common/sys/netstack.h
@@ -78,7 +78,8 @@ typedef id_t netstackid_t;
#define NS_IPSECAH 13
#define NS_IPSECESP 14
#define NS_TUN 15
-#define NS_MAX (NS_TUN+1)
+#define NS_IPNET 16
+#define NS_MAX (NS_IPNET+1)
/*
* State maintained for each module which tracks the state of
@@ -151,6 +152,7 @@ struct netstack {
struct ipsecah_stack *nu_ipsecah;
struct ipsecesp_stack *nu_ipsecesp;
struct tun_stack *nu_tun;
+ struct ipnet_stack *nu_ipnet;
} nu_s;
} netstack_u;
#define netstack_modules netstack_u.nu_modules
@@ -170,6 +172,7 @@ struct netstack {
#define netstack_ipsecah netstack_u.nu_s.nu_ipsecah
#define netstack_ipsecesp netstack_u.nu_s.nu_ipsecesp
#define netstack_tun netstack_u.nu_s.nu_tun
+#define netstack_ipnet netstack_u.nu_s.nu_ipnet
nm_state_t netstack_m_state[NS_MAX]; /* module state */
diff --git a/usr/src/uts/common/sys/sysmacros.h b/usr/src/uts/common/sys/sysmacros.h
index 9695982dcc..89a672db2f 100644
--- a/usr/src/uts/common/sys/sysmacros.h
+++ b/usr/src/uts/common/sys/sysmacros.h
@@ -57,6 +57,9 @@ extern "C" {
#ifndef ABS
#define ABS(a) ((a) < 0 ? -(a) : (a))
#endif
+#ifndef SIGNOF
+#define SIGNOF(a) ((a) < 0 ? -1 : (a) > 0)
+#endif
#ifdef _KERNEL