summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/dld.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/dld.h')
-rw-r--r--usr/src/uts/common/sys/dld.h127
1 files changed, 93 insertions, 34 deletions
diff --git a/usr/src/uts/common/sys/dld.h b/usr/src/uts/common/sys/dld.h
index 71555d364b..8cc70e52f9 100644
--- a/usr/src/uts/common/sys/dld.h
+++ b/usr/src/uts/common/sys/dld.h
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -36,6 +36,8 @@
#include <sys/stream.h>
#include <sys/mac.h>
#include <sys/dls.h>
+#include <sys/conf.h>
+#include <sys/sad.h>
#include <net/if.h>
#ifdef __cplusplus
@@ -47,9 +49,6 @@ extern "C" {
*/
#define DLD_INFO "Data-Link Driver v%I%"
-#define DLD_MAX_PPA 999
-#define DLD_MAX_MINOR (DLD_MAX_PPA + 1)
-
/*
* Options: To enable an option set the property name to a non-zero value
* in kernel/drv/dld.conf.
@@ -93,31 +92,33 @@ extern "C" {
*/
#define DLDIOC ('D' << 24 | 'L' << 16 | 'D' << 8)
-#define DLDIOCATTR (DLDIOC | 0x03)
+#define DLDIOC_ATTR (DLDIOC | 0x03)
typedef struct dld_ioc_attr {
- char dia_name[IFNAMSIZ];
- char dia_dev[MAXNAMELEN];
+ datalink_id_t dia_linkid;
uint_t dia_max_sdu;
- uint16_t dia_vid;
} dld_ioc_attr_t;
-#define DLDIOCVLAN (DLDIOC | 0x04)
-
-typedef struct dld_ioc_vlan {
- char div_name[IFNAMSIZ];
- uint_t div_count;
-} dld_ioc_vlan_t;
-
-typedef struct dld_vlan_info {
- char dvi_name[IFNAMSIZ];
-} dld_vlan_info_t;
-
-typedef struct dld_hold_vlan {
- char dhv_name[IFNAMSIZ];
- zoneid_t dhv_zid;
- boolean_t dhv_docheck;
-} dld_hold_vlan_t;
+#define DLDIOC_VLAN_ATTR (DLDIOC | 0x04)
+typedef struct dld_ioc_vlan_attr {
+ datalink_id_t div_vlanid;
+ uint16_t div_vid;
+ datalink_id_t div_linkid;
+ boolean_t div_force;
+ boolean_t div_implicit;
+} dld_ioc_vlan_attr_t;
+
+#define DLDIOC_PHYS_ATTR (DLDIOC | 0x05)
+typedef struct dld_ioc_phys_attr {
+ datalink_id_t dip_linkid;
+ /*
+ * Whether this physical link supports vanity naming. Note that
+ * physical links whose media type is not supported by GLDv3
+ * can not support vanity naming.
+ */
+ boolean_t dip_novanity;
+ char dip_dev[MAXLINKNAMELEN];
+} dld_ioc_phys_attr_t;
/*
* Secure objects ioctls
@@ -137,33 +138,90 @@ typedef struct dld_secobj {
uint_t so_len;
} dld_secobj_t;
-#define DLDIOCSECOBJSET (DLDIOC | 0x05)
+#define DLDIOC_SECOBJ_SET (DLDIOC | 0x06)
typedef struct dld_ioc_secobj_set {
dld_secobj_t ss_obj;
uint_t ss_flags;
} dld_ioc_secobj_set_t;
-#define DLDIOCSECOBJGET (DLDIOC | 0x06)
+#define DLDIOC_SECOBJ_GET (DLDIOC | 0x07)
typedef struct dld_ioc_secobj_get {
dld_secobj_t sg_obj;
uint_t sg_count;
} dld_ioc_secobj_get_t;
-#define DLDIOCSECOBJUNSET (DLDIOC | 0x07)
+/*
+ * The following two slots were used outside of ON, so don't reuse them.
+ *
+ * #define DLDIOCHOLDVLAN (DLDIOC | 0x08)
+ * #define DLDIOCRELEVLAN (DLDIOC | 0x09)
+ */
+
+#define DLDIOC_SECOBJ_UNSET (DLDIOC | 0x0a)
typedef struct dld_ioc_secobj_unset {
char su_name[DLD_SECOBJ_NAME_MAX];
} dld_ioc_secobj_unset_t;
+#define DLDIOC_CREATE_VLAN (DLDIOC | 0x0b)
+typedef struct dld_ioc_create_vlan {
+ datalink_id_t dic_vlanid;
+ datalink_id_t dic_linkid;
+ uint16_t dic_vid;
+ boolean_t dic_force;
+} dld_ioc_create_vlan_t;
+
+#define DLDIOC_DELETE_VLAN (DLDIOC | 0x0c)
+typedef struct dld_ioc_delete_vlan {
+ datalink_id_t did_linkid;
+} dld_ioc_delete_vlan_t;
+
+#define DLDIOC_SETAUTOPUSH (DLDIOC | 0x0d)
+#define DLDIOC_GETAUTOPUSH (DLDIOC | 0x0e)
+#define DLDIOC_CLRAUTOPUSH (DLDIOC | 0x0f)
+typedef struct dld_ioc_ap {
+ datalink_id_t dia_linkid;
+ uint_t dia_anchor;
+ uint_t dia_npush;
+ char dia_aplist[MAXAPUSH][FMNAMESZ+1];
+} dld_ioc_ap_t;
+
+#define DLDIOC_DOORSERVER (DLDIOC | 0x10)
+typedef struct dld_ioc_door {
+ boolean_t did_start_door;
+} dld_ioc_door_t;
+
+#define DLDIOC_RENAME (DLDIOC | 0x11)
+typedef struct dld_ioc_rename {
+ datalink_id_t dir_linkid1;
+ datalink_id_t dir_linkid2;
+ char dir_link[MAXLINKNAMELEN];
+} dld_ioc_rename_t;
+
/*
- * DLDIOCHOLDVLAN/DLDIOCRELEVLAN are added to support a "hold/release"
- * operation on a VLAN. A hold will cause a VLAN to be created or the
- * reference count will be increased, release will do the reverse.
+ * DLDIOC_SETZID sets the zoneid of a given link. It could cause a VLAN to be
+ * implicitly created. Note that we will hold a reference for the given link
+ * whenever it has a zoneid other than the global zone.
*/
-#define DLDIOCHOLDVLAN (DLDIOC | 0x08)
+#define DLDIOC_SETZID (DLDIOC | 0x12)
+typedef struct dld_ioc_setzid {
+ char dis_link[MAXLINKNAMELEN];
+ zoneid_t dis_zid;
+} dld_ioc_setzid_t;
+
+#define DLDIOC_GETZID (DLDIOC | 0x13)
+typedef struct dld_ioc_getzid {
+ datalink_id_t dig_linkid;
+ zoneid_t dig_zid;
+} dld_ioc_getzid_t;
-#define DLDIOCRELEVLAN (DLDIOC | 0x09)
-
-#define DLDIOCZIDGET (DLDIOC | 0x0a)
+/*
+ * data-link autopush configuration.
+ */
+struct dlautopush {
+ uint_t dap_anchor;
+ uint_t dap_npush;
+ char dap_aplist[MAXAPUSH][FMNAMESZ+1];
+};
#ifdef _KERNEL
int dld_getinfo(dev_info_t *, ddi_info_cmd_t, void *, void **);
@@ -173,6 +231,7 @@ void dld_wput(queue_t *, mblk_t *);
void dld_wsrv(queue_t *);
void dld_init_ops(struct dev_ops *, const char *);
void dld_fini_ops(struct dev_ops *);
+int dld_autopush(dev_t *, struct dlautopush *);
#endif
#ifdef __cplusplus