17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5ba2e4443Sseb * Common Development and Distribution License (the "License"). 6ba2e4443Sseb * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 217c478bd9Sstevel@tonic-gate /* 22d62bc4baSyz147064 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 237c478bd9Sstevel@tonic-gate * Use is subject to license terms. 247c478bd9Sstevel@tonic-gate */ 257c478bd9Sstevel@tonic-gate 267c478bd9Sstevel@tonic-gate #ifndef _SYS_DLD_H 277c478bd9Sstevel@tonic-gate #define _SYS_DLD_H 287c478bd9Sstevel@tonic-gate 297c478bd9Sstevel@tonic-gate /* 307c478bd9Sstevel@tonic-gate * Data-Link Driver (public header). 31eae72b5bSSebastien Roy * 32eae72b5bSSebastien Roy * Note that the datastructures defined here define an ioctl interface 33eae72b5bSSebastien Roy * that is shared betwen user and kernel space. The dld driver thus 34eae72b5bSSebastien Roy * assumes that the structures have identical layout and size when 35eae72b5bSSebastien Roy * compiled in either IPL32 or LP64. 367c478bd9Sstevel@tonic-gate */ 377c478bd9Sstevel@tonic-gate 387c478bd9Sstevel@tonic-gate #include <sys/types.h> 397c478bd9Sstevel@tonic-gate #include <sys/stream.h> 40eae72b5bSSebastien Roy #include <sys/dld_ioc.h> 41d62bc4baSyz147064 #include <sys/conf.h> 42d62bc4baSyz147064 #include <sys/sad.h> 437c478bd9Sstevel@tonic-gate #include <net/if.h> 44e7801d59Ssowmini #include <sys/ddi.h> 45e7801d59Ssowmini #include <sys/sunddi.h> 463fd94f8cSam223141 #include <sys/mac.h> 477c478bd9Sstevel@tonic-gate 487c478bd9Sstevel@tonic-gate #ifdef __cplusplus 497c478bd9Sstevel@tonic-gate extern "C" { 507c478bd9Sstevel@tonic-gate #endif 517c478bd9Sstevel@tonic-gate 527c478bd9Sstevel@tonic-gate /* 537c478bd9Sstevel@tonic-gate * Data-Link Driver Information (text emitted by modinfo(1m)) 547c478bd9Sstevel@tonic-gate */ 554045d941Ssowmini #define DLD_INFO "Data-Link Driver" 567c478bd9Sstevel@tonic-gate 577c478bd9Sstevel@tonic-gate /* 587c478bd9Sstevel@tonic-gate * Options: To enable an option set the property name to a non-zero value 597c478bd9Sstevel@tonic-gate * in kernel/drv/dld.conf. 607c478bd9Sstevel@tonic-gate */ 617c478bd9Sstevel@tonic-gate 627c478bd9Sstevel@tonic-gate /* 637c478bd9Sstevel@tonic-gate * Prevent use of the IP fast-path (direct M_DATA transmit). 647c478bd9Sstevel@tonic-gate */ 657c478bd9Sstevel@tonic-gate #define DLD_PROP_NO_FASTPATH "no-fastpath" 667c478bd9Sstevel@tonic-gate 677c478bd9Sstevel@tonic-gate /* 687c478bd9Sstevel@tonic-gate * Prevent advertising of the DL_CAPAB_POLL capability. 697c478bd9Sstevel@tonic-gate */ 707c478bd9Sstevel@tonic-gate #define DLD_PROP_NO_POLL "no-poll" 717c478bd9Sstevel@tonic-gate 727c478bd9Sstevel@tonic-gate /* 737c478bd9Sstevel@tonic-gate * Prevent advertising of the DL_CAPAB_ZEROCOPY capability. 747c478bd9Sstevel@tonic-gate */ 757c478bd9Sstevel@tonic-gate #define DLD_PROP_NO_ZEROCOPY "no-zerocopy" 767c478bd9Sstevel@tonic-gate 777c478bd9Sstevel@tonic-gate /* 789c175129Sja97890 * Prevent advertising of the DL_CAPAB_SOFTRING capability. 799c175129Sja97890 */ 809c175129Sja97890 #define DLD_PROP_NO_SOFTRING "no-softring" 819c175129Sja97890 829c175129Sja97890 /* 837c478bd9Sstevel@tonic-gate * The name of the driver. 847c478bd9Sstevel@tonic-gate */ 857c478bd9Sstevel@tonic-gate #define DLD_DRIVER_NAME "dld" 867c478bd9Sstevel@tonic-gate 877c478bd9Sstevel@tonic-gate /* 887c478bd9Sstevel@tonic-gate * IOCTL codes and data structures. 897c478bd9Sstevel@tonic-gate */ 90eae72b5bSSebastien Roy #define DLDIOC_ATTR DLDIOC(0x03) 917c478bd9Sstevel@tonic-gate 927c478bd9Sstevel@tonic-gate typedef struct dld_ioc_attr { 93d62bc4baSyz147064 datalink_id_t dia_linkid; 94210db224Sericheng uint_t dia_max_sdu; 957c478bd9Sstevel@tonic-gate } dld_ioc_attr_t; 967c478bd9Sstevel@tonic-gate 97eae72b5bSSebastien Roy #define DLDIOC_VLAN_ATTR DLDIOC(0x04) 98d62bc4baSyz147064 typedef struct dld_ioc_vlan_attr { 99d62bc4baSyz147064 datalink_id_t div_vlanid; 100d62bc4baSyz147064 uint16_t div_vid; 101d62bc4baSyz147064 datalink_id_t div_linkid; 102d62bc4baSyz147064 boolean_t div_force; 103d62bc4baSyz147064 boolean_t div_implicit; 104d62bc4baSyz147064 } dld_ioc_vlan_attr_t; 105210db224Sericheng 106eae72b5bSSebastien Roy #define DLDIOC_PHYS_ATTR DLDIOC(0x05) 107e7801d59Ssowmini #define DLPI_LINKNAME_MAX 32 108e7801d59Ssowmini 109d62bc4baSyz147064 typedef struct dld_ioc_phys_attr { 110d62bc4baSyz147064 datalink_id_t dip_linkid; 111d62bc4baSyz147064 /* 112d62bc4baSyz147064 * Whether this physical link supports vanity naming. Note that 113d62bc4baSyz147064 * physical links whose media type is not supported by GLDv3 114d62bc4baSyz147064 * can not support vanity naming. 115d62bc4baSyz147064 */ 116d62bc4baSyz147064 boolean_t dip_novanity; 117d62bc4baSyz147064 char dip_dev[MAXLINKNAMELEN]; 118d62bc4baSyz147064 } dld_ioc_phys_attr_t; 119f4b3ec61Sdh155122 1200ba2cbe9Sxc151355 /* 1210ba2cbe9Sxc151355 * Secure objects ioctls 1220ba2cbe9Sxc151355 */ 1230ba2cbe9Sxc151355 typedef enum { 124a399b765Szf162725 DLD_SECOBJ_CLASS_WEP = 1, 125a399b765Szf162725 DLD_SECOBJ_CLASS_WPA 1260ba2cbe9Sxc151355 } dld_secobj_class_t; 1270ba2cbe9Sxc151355 1280ba2cbe9Sxc151355 #define DLD_SECOBJ_OPT_CREATE 0x00000001 1290ba2cbe9Sxc151355 #define DLD_SECOBJ_NAME_MAX 32 1300ba2cbe9Sxc151355 #define DLD_SECOBJ_VAL_MAX 256 1310ba2cbe9Sxc151355 typedef struct dld_secobj { 1320ba2cbe9Sxc151355 char so_name[DLD_SECOBJ_NAME_MAX]; 1330ba2cbe9Sxc151355 dld_secobj_class_t so_class; 1340ba2cbe9Sxc151355 uint8_t so_val[DLD_SECOBJ_VAL_MAX]; 1350ba2cbe9Sxc151355 uint_t so_len; 1360ba2cbe9Sxc151355 } dld_secobj_t; 1370ba2cbe9Sxc151355 138eae72b5bSSebastien Roy #define DLDIOC_SECOBJ_SET DLDIOC(0x06) 1390ba2cbe9Sxc151355 typedef struct dld_ioc_secobj_set { 1400ba2cbe9Sxc151355 dld_secobj_t ss_obj; 1410ba2cbe9Sxc151355 uint_t ss_flags; 1420ba2cbe9Sxc151355 } dld_ioc_secobj_set_t; 1430ba2cbe9Sxc151355 144eae72b5bSSebastien Roy #define DLDIOC_SECOBJ_GET DLDIOC(0x07) 1450ba2cbe9Sxc151355 typedef struct dld_ioc_secobj_get { 1460ba2cbe9Sxc151355 dld_secobj_t sg_obj; 1470ba2cbe9Sxc151355 uint_t sg_count; 148eae72b5bSSebastien Roy uint_t sg_size; 1490ba2cbe9Sxc151355 } dld_ioc_secobj_get_t; 1500ba2cbe9Sxc151355 151d62bc4baSyz147064 /* 152d62bc4baSyz147064 * The following two slots were used outside of ON, so don't reuse them. 153d62bc4baSyz147064 * 154eae72b5bSSebastien Roy * #define DLDIOCHOLDVLAN DLDIOC(0x08) 155eae72b5bSSebastien Roy * #define DLDIOCRELEVLAN DLDIOC(0x09) 156d62bc4baSyz147064 */ 157d62bc4baSyz147064 158eae72b5bSSebastien Roy #define DLDIOC_SECOBJ_UNSET DLDIOC(0x0a) 1590ba2cbe9Sxc151355 typedef struct dld_ioc_secobj_unset { 1600ba2cbe9Sxc151355 char su_name[DLD_SECOBJ_NAME_MAX]; 1610ba2cbe9Sxc151355 } dld_ioc_secobj_unset_t; 1620ba2cbe9Sxc151355 163eae72b5bSSebastien Roy #define DLDIOC_CREATE_VLAN DLDIOC(0x0b) 164d62bc4baSyz147064 typedef struct dld_ioc_create_vlan { 165d62bc4baSyz147064 datalink_id_t dic_vlanid; 166d62bc4baSyz147064 datalink_id_t dic_linkid; 167d62bc4baSyz147064 uint16_t dic_vid; 168d62bc4baSyz147064 boolean_t dic_force; 169d62bc4baSyz147064 } dld_ioc_create_vlan_t; 170d62bc4baSyz147064 171eae72b5bSSebastien Roy #define DLDIOC_DELETE_VLAN DLDIOC(0x0c) 172d62bc4baSyz147064 typedef struct dld_ioc_delete_vlan { 173d62bc4baSyz147064 datalink_id_t did_linkid; 174d62bc4baSyz147064 } dld_ioc_delete_vlan_t; 175d62bc4baSyz147064 1763bc21d0aSAruna Ramakrishna - Sun Microsystems /* 1773bc21d0aSAruna Ramakrishna - Sun Microsystems * The following constants have been removed, and the slots are open: 1783bc21d0aSAruna Ramakrishna - Sun Microsystems * 179eae72b5bSSebastien Roy * #define DLDIOC_SETAUTOPUSH DLDIOC(0x0d) 180eae72b5bSSebastien Roy * #define DLDIOC_GETAUTOPUSH DLDIOC(0x0e) 181eae72b5bSSebastien Roy * #define DLDIOC_CLRAUTOPUSH DLDIOC(0x0f) 1823bc21d0aSAruna Ramakrishna - Sun Microsystems */ 183d62bc4baSyz147064 184eae72b5bSSebastien Roy #define DLDIOC_DOORSERVER DLDIOC(0x10) 185d62bc4baSyz147064 typedef struct dld_ioc_door { 186d62bc4baSyz147064 boolean_t did_start_door; 187d62bc4baSyz147064 } dld_ioc_door_t; 188d62bc4baSyz147064 189eae72b5bSSebastien Roy #define DLDIOC_RENAME DLDIOC(0x11) 190d62bc4baSyz147064 typedef struct dld_ioc_rename { 191d62bc4baSyz147064 datalink_id_t dir_linkid1; 192d62bc4baSyz147064 datalink_id_t dir_linkid2; 193d62bc4baSyz147064 char dir_link[MAXLINKNAMELEN]; 194d62bc4baSyz147064 } dld_ioc_rename_t; 195d62bc4baSyz147064 196f4b3ec61Sdh155122 /* 1973bc21d0aSAruna Ramakrishna - Sun Microsystems * The following constants have been removed, and the slots are open: 1983bc21d0aSAruna Ramakrishna - Sun Microsystems * 199eae72b5bSSebastien Roy * #define DLDIOC_SETZID DLDIOC(0x12) 200eae72b5bSSebastien Roy * #define DLDIOC_GETZID DLDIOC(0x13) 201f4b3ec61Sdh155122 */ 202f4b3ec61Sdh155122 2033bc21d0aSAruna Ramakrishna - Sun Microsystems typedef struct dld_ioc_zid { 2043bc21d0aSAruna Ramakrishna - Sun Microsystems zoneid_t diz_zid; 2053bc21d0aSAruna Ramakrishna - Sun Microsystems char diz_link[MAXLINKNAMELEN]; 2063bc21d0aSAruna Ramakrishna - Sun Microsystems boolean_t diz_is_ppa_hack; 2073bc21d0aSAruna Ramakrishna - Sun Microsystems } dld_ioc_zid_t; 208f4b3ec61Sdh155122 209eae72b5bSSebastien Roy #define DLDIOC_GETZID DLDIOC(0x13) 210eae72b5bSSebastien Roy typedef struct dld_ioc_getzid { 211eae72b5bSSebastien Roy datalink_id_t dig_linkid; 212eae72b5bSSebastien Roy zoneid_t dig_zid; 213eae72b5bSSebastien Roy } dld_ioc_getzid_t; 214eae72b5bSSebastien Roy 215d62bc4baSyz147064 /* 216d62bc4baSyz147064 * data-link autopush configuration. 217d62bc4baSyz147064 */ 218d62bc4baSyz147064 struct dlautopush { 219d62bc4baSyz147064 uint_t dap_anchor; 220d62bc4baSyz147064 uint_t dap_npush; 221d62bc4baSyz147064 char dap_aplist[MAXAPUSH][FMNAMESZ+1]; 222d62bc4baSyz147064 }; 223f4b3ec61Sdh155122 224eae72b5bSSebastien Roy #define DLDIOC_SETMACPROP DLDIOC(0x14) 225eae72b5bSSebastien Roy #define DLDIOC_GETMACPROP DLDIOC(0x15) 2263fd94f8cSam223141 #define MAC_PROP_VERSION 1 227e7801d59Ssowmini 2283fd94f8cSam223141 typedef struct dld_ioc_macprop_s { 229e7801d59Ssowmini int pr_version; 2304045d941Ssowmini uint_t pr_flags; 2316b9e797cSsowmini datalink_id_t pr_linkid; 2323fd94f8cSam223141 mac_prop_id_t pr_num; 233*afdda45fSVasumathi Sundaram - Sun Microsystems uint_t pr_perm_flags; 2344045d941Ssowmini char pr_name[MAXLINKPROPNAME]; 235e7801d59Ssowmini uint_t pr_valsize; /* sizeof pr_val */ 236e7801d59Ssowmini char pr_val[1]; 2373fd94f8cSam223141 } dld_ioc_macprop_t; 238e7801d59Ssowmini 239210db224Sericheng #ifdef _KERNEL 240210db224Sericheng int dld_getinfo(dev_info_t *, ddi_info_cmd_t, void *, void **); 241210db224Sericheng int dld_open(queue_t *, dev_t *, int, int, cred_t *); 242210db224Sericheng int dld_close(queue_t *); 243210db224Sericheng void dld_wput(queue_t *, mblk_t *); 244210db224Sericheng void dld_wsrv(queue_t *); 245210db224Sericheng void dld_init_ops(struct dev_ops *, const char *); 246210db224Sericheng void dld_fini_ops(struct dev_ops *); 247d62bc4baSyz147064 int dld_autopush(dev_t *, struct dlautopush *); 248210db224Sericheng #endif 249210db224Sericheng 2507c478bd9Sstevel@tonic-gate #ifdef __cplusplus 2517c478bd9Sstevel@tonic-gate } 2527c478bd9Sstevel@tonic-gate #endif 2537c478bd9Sstevel@tonic-gate 2547c478bd9Sstevel@tonic-gate #endif /* _SYS_DLD_H */ 255