1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 28*7c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate 31*7c478bd9Sstevel@tonic-gate /* 32*7c478bd9Sstevel@tonic-gate * Data Link Provider Interface, Version 2.0 33*7c478bd9Sstevel@tonic-gate * Refer to document: "STREAMS DLPI Spec", 800-6915-01. 34*7c478bd9Sstevel@tonic-gate */ 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate #ifndef _SYS_DLPI_H 37*7c478bd9Sstevel@tonic-gate #define _SYS_DLPI_H 38*7c478bd9Sstevel@tonic-gate 39*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.2 */ 40*7c478bd9Sstevel@tonic-gate 41*7c478bd9Sstevel@tonic-gate #include <sys/types.h> 42*7c478bd9Sstevel@tonic-gate #include <sys/stream.h> 43*7c478bd9Sstevel@tonic-gate 44*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 45*7c478bd9Sstevel@tonic-gate extern "C" { 46*7c478bd9Sstevel@tonic-gate #endif 47*7c478bd9Sstevel@tonic-gate 48*7c478bd9Sstevel@tonic-gate /* 49*7c478bd9Sstevel@tonic-gate * Sun additions. 50*7c478bd9Sstevel@tonic-gate */ 51*7c478bd9Sstevel@tonic-gate #define DLIOC ('D' << 8) 52*7c478bd9Sstevel@tonic-gate #define DLIOCRAW (DLIOC|1) /* M_DATA "raw" mode */ 53*7c478bd9Sstevel@tonic-gate #define DLIOCHDRINFO (DLIOC|10) /* IP fast-path */ 54*7c478bd9Sstevel@tonic-gate 55*7c478bd9Sstevel@tonic-gate #define DL_IOC_HDR_INFO DLIOCHDRINFO 56*7c478bd9Sstevel@tonic-gate 57*7c478bd9Sstevel@tonic-gate /* 58*7c478bd9Sstevel@tonic-gate * DLPI revision definition history 59*7c478bd9Sstevel@tonic-gate */ 60*7c478bd9Sstevel@tonic-gate #define DL_CURRENT_VERSION 0x02 /* current version of dlpi */ 61*7c478bd9Sstevel@tonic-gate #define DL_VERSION_2 0x02 /* version of dlpi March 12, 1991 */ 62*7c478bd9Sstevel@tonic-gate 63*7c478bd9Sstevel@tonic-gate /* 64*7c478bd9Sstevel@tonic-gate * Primitives for Local Management Services 65*7c478bd9Sstevel@tonic-gate */ 66*7c478bd9Sstevel@tonic-gate #define DL_INFO_REQ 0x00 /* Information Req */ 67*7c478bd9Sstevel@tonic-gate #define DL_INFO_ACK 0x03 /* Information Ack */ 68*7c478bd9Sstevel@tonic-gate #define DL_ATTACH_REQ 0x0b /* Attach a PPA */ 69*7c478bd9Sstevel@tonic-gate #define DL_DETACH_REQ 0x0c /* Detach a PPA */ 70*7c478bd9Sstevel@tonic-gate #define DL_BIND_REQ 0x01 /* Bind dlsap address */ 71*7c478bd9Sstevel@tonic-gate #define DL_BIND_ACK 0x04 /* Dlsap address bound */ 72*7c478bd9Sstevel@tonic-gate #define DL_UNBIND_REQ 0x02 /* Unbind dlsap address */ 73*7c478bd9Sstevel@tonic-gate #define DL_OK_ACK 0x06 /* Success acknowledgment */ 74*7c478bd9Sstevel@tonic-gate #define DL_ERROR_ACK 0x05 /* Error acknowledgment */ 75*7c478bd9Sstevel@tonic-gate #define DL_SUBS_BIND_REQ 0x1b /* Bind Subsequent DLSAP address */ 76*7c478bd9Sstevel@tonic-gate #define DL_SUBS_BIND_ACK 0x1c /* Subsequent DLSAP address bound */ 77*7c478bd9Sstevel@tonic-gate #define DL_SUBS_UNBIND_REQ 0x15 /* Subsequent unbind */ 78*7c478bd9Sstevel@tonic-gate #define DL_ENABMULTI_REQ 0x1d /* Enable multicast addresses */ 79*7c478bd9Sstevel@tonic-gate #define DL_DISABMULTI_REQ 0x1e /* Disable multicast addresses */ 80*7c478bd9Sstevel@tonic-gate #define DL_PROMISCON_REQ 0x1f /* Turn on promiscuous mode */ 81*7c478bd9Sstevel@tonic-gate #define DL_PROMISCOFF_REQ 0x20 /* Turn off promiscuous mode */ 82*7c478bd9Sstevel@tonic-gate 83*7c478bd9Sstevel@tonic-gate /* 84*7c478bd9Sstevel@tonic-gate * Solaris specific local management 85*7c478bd9Sstevel@tonic-gate */ 86*7c478bd9Sstevel@tonic-gate #define DL_NOTIFY_REQ 0x100 /* Enable notifications */ 87*7c478bd9Sstevel@tonic-gate #define DL_NOTIFY_ACK 0x101 /* Supported notifications */ 88*7c478bd9Sstevel@tonic-gate #define DL_NOTIFY_IND 0x102 /* Notification from provider */ 89*7c478bd9Sstevel@tonic-gate #define DL_AGGR_REQ 0x103 /* Enable link aggregation */ 90*7c478bd9Sstevel@tonic-gate #define DL_AGGR_IND 0x104 /* Result from link aggregation */ 91*7c478bd9Sstevel@tonic-gate #define DL_UNAGGR_REQ 0x105 /* Disable link aggregation */ 92*7c478bd9Sstevel@tonic-gate #define DL_CAPABILITY_REQ 0x110 /* Capability request */ 93*7c478bd9Sstevel@tonic-gate #define DL_CAPABILITY_ACK 0x111 /* Capability ack */ 94*7c478bd9Sstevel@tonic-gate #define DL_CONTROL_REQ 0x112 /* Device specific control request */ 95*7c478bd9Sstevel@tonic-gate #define DL_CONTROL_ACK 0x113 /* Device specific control ack */ 96*7c478bd9Sstevel@tonic-gate #define DL_PASSIVE_REQ 0x114 /* Allow access to aggregated link */ 97*7c478bd9Sstevel@tonic-gate 98*7c478bd9Sstevel@tonic-gate 99*7c478bd9Sstevel@tonic-gate /* 100*7c478bd9Sstevel@tonic-gate * Primitives used for Connectionless Service 101*7c478bd9Sstevel@tonic-gate */ 102*7c478bd9Sstevel@tonic-gate #define DL_UNITDATA_REQ 0x07 /* datagram send request */ 103*7c478bd9Sstevel@tonic-gate #define DL_UNITDATA_IND 0x08 /* datagram receive indication */ 104*7c478bd9Sstevel@tonic-gate #define DL_UDERROR_IND 0x09 /* datagram error indication */ 105*7c478bd9Sstevel@tonic-gate #define DL_UDQOS_REQ 0x0a /* set QOS for subsequent datagrams */ 106*7c478bd9Sstevel@tonic-gate 107*7c478bd9Sstevel@tonic-gate /* 108*7c478bd9Sstevel@tonic-gate * Primitives used for Connection-Oriented Service 109*7c478bd9Sstevel@tonic-gate */ 110*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_REQ 0x0d /* Connect request */ 111*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_IND 0x0e /* Incoming connect indication */ 112*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_RES 0x0f /* Accept previous connect indication */ 113*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_CON 0x10 /* Connection established */ 114*7c478bd9Sstevel@tonic-gate 115*7c478bd9Sstevel@tonic-gate #define DL_TOKEN_REQ 0x11 /* Passoff token request */ 116*7c478bd9Sstevel@tonic-gate #define DL_TOKEN_ACK 0x12 /* Passoff token ack */ 117*7c478bd9Sstevel@tonic-gate 118*7c478bd9Sstevel@tonic-gate #define DL_DISCONNECT_REQ 0x13 /* Disconnect request */ 119*7c478bd9Sstevel@tonic-gate #define DL_DISCONNECT_IND 0x14 /* Disconnect indication */ 120*7c478bd9Sstevel@tonic-gate 121*7c478bd9Sstevel@tonic-gate #define DL_RESET_REQ 0x17 /* Reset service request */ 122*7c478bd9Sstevel@tonic-gate #define DL_RESET_IND 0x18 /* Incoming reset indication */ 123*7c478bd9Sstevel@tonic-gate #define DL_RESET_RES 0x19 /* Complete reset processing */ 124*7c478bd9Sstevel@tonic-gate #define DL_RESET_CON 0x1a /* Reset processing complete */ 125*7c478bd9Sstevel@tonic-gate 126*7c478bd9Sstevel@tonic-gate /* 127*7c478bd9Sstevel@tonic-gate * Primitives used for Acknowledged Connectionless Service 128*7c478bd9Sstevel@tonic-gate */ 129*7c478bd9Sstevel@tonic-gate 130*7c478bd9Sstevel@tonic-gate #define DL_DATA_ACK_REQ 0x21 /* data unit transmission request */ 131*7c478bd9Sstevel@tonic-gate #define DL_DATA_ACK_IND 0x22 /* Arrival of a command PDU */ 132*7c478bd9Sstevel@tonic-gate #define DL_DATA_ACK_STATUS_IND 0x23 /* Status indication of DATA_ACK_REQ */ 133*7c478bd9Sstevel@tonic-gate #define DL_REPLY_REQ 0x24 /* Request a DLSDU from the remote */ 134*7c478bd9Sstevel@tonic-gate #define DL_REPLY_IND 0x25 /* Arrival of a command PDU */ 135*7c478bd9Sstevel@tonic-gate #define DL_REPLY_STATUS_IND 0x26 /* Status indication of REPLY_REQ */ 136*7c478bd9Sstevel@tonic-gate #define DL_REPLY_UPDATE_REQ 0x27 /* Hold a DLSDU for transmission */ 137*7c478bd9Sstevel@tonic-gate #define DL_REPLY_UPDATE_STATUS_IND 0x28 /* Status of REPLY_UPDATE req */ 138*7c478bd9Sstevel@tonic-gate 139*7c478bd9Sstevel@tonic-gate /* 140*7c478bd9Sstevel@tonic-gate * Primitives used for XID and TEST operations 141*7c478bd9Sstevel@tonic-gate */ 142*7c478bd9Sstevel@tonic-gate 143*7c478bd9Sstevel@tonic-gate #define DL_XID_REQ 0x29 /* Request to send an XID PDU */ 144*7c478bd9Sstevel@tonic-gate #define DL_XID_IND 0x2a /* Arrival of an XID PDU */ 145*7c478bd9Sstevel@tonic-gate #define DL_XID_RES 0x2b /* request to send a response XID PDU */ 146*7c478bd9Sstevel@tonic-gate #define DL_XID_CON 0x2c /* Arrival of a response XID PDU */ 147*7c478bd9Sstevel@tonic-gate #define DL_TEST_REQ 0x2d /* TEST command request */ 148*7c478bd9Sstevel@tonic-gate #define DL_TEST_IND 0x2e /* TEST response indication */ 149*7c478bd9Sstevel@tonic-gate #define DL_TEST_RES 0x2f /* TEST response */ 150*7c478bd9Sstevel@tonic-gate #define DL_TEST_CON 0x30 /* TEST Confirmation */ 151*7c478bd9Sstevel@tonic-gate 152*7c478bd9Sstevel@tonic-gate /* 153*7c478bd9Sstevel@tonic-gate * Primitives to get and set the physical address, and to get 154*7c478bd9Sstevel@tonic-gate * Statistics 155*7c478bd9Sstevel@tonic-gate */ 156*7c478bd9Sstevel@tonic-gate 157*7c478bd9Sstevel@tonic-gate #define DL_PHYS_ADDR_REQ 0x31 /* Request to get physical addr */ 158*7c478bd9Sstevel@tonic-gate #define DL_PHYS_ADDR_ACK 0x32 /* Return physical addr */ 159*7c478bd9Sstevel@tonic-gate #define DL_SET_PHYS_ADDR_REQ 0x33 /* set physical addr */ 160*7c478bd9Sstevel@tonic-gate #define DL_GET_STATISTICS_REQ 0x34 /* Request to get statistics */ 161*7c478bd9Sstevel@tonic-gate #define DL_GET_STATISTICS_ACK 0x35 /* Return statistics */ 162*7c478bd9Sstevel@tonic-gate 163*7c478bd9Sstevel@tonic-gate /* 164*7c478bd9Sstevel@tonic-gate * Invalid primitive 165*7c478bd9Sstevel@tonic-gate */ 166*7c478bd9Sstevel@tonic-gate 167*7c478bd9Sstevel@tonic-gate #define DL_PRIM_INVAL 0xffff /* Invalid DL primitive value */ 168*7c478bd9Sstevel@tonic-gate 169*7c478bd9Sstevel@tonic-gate /* 170*7c478bd9Sstevel@tonic-gate * DLPI interface states 171*7c478bd9Sstevel@tonic-gate */ 172*7c478bd9Sstevel@tonic-gate #define DL_UNATTACHED 0x04 /* PPA not attached */ 173*7c478bd9Sstevel@tonic-gate #define DL_ATTACH_PENDING 0x05 /* Waiting ack of DL_ATTACH_REQ */ 174*7c478bd9Sstevel@tonic-gate #define DL_DETACH_PENDING 0x06 /* Waiting ack of DL_DETACH_REQ */ 175*7c478bd9Sstevel@tonic-gate #define DL_UNBOUND 0x00 /* PPA attached */ 176*7c478bd9Sstevel@tonic-gate #define DL_BIND_PENDING 0x01 /* Waiting ack of DL_BIND_REQ */ 177*7c478bd9Sstevel@tonic-gate #define DL_UNBIND_PENDING 0x02 /* Waiting ack of DL_UNBIND_REQ */ 178*7c478bd9Sstevel@tonic-gate #define DL_IDLE 0x03 /* dlsap bound, awaiting use */ 179*7c478bd9Sstevel@tonic-gate #define DL_UDQOS_PENDING 0x07 /* Waiting ack of DL_UDQOS_REQ */ 180*7c478bd9Sstevel@tonic-gate #define DL_OUTCON_PENDING 0x08 /* awaiting DL_CONN_CON */ 181*7c478bd9Sstevel@tonic-gate #define DL_INCON_PENDING 0x09 /* awaiting DL_CONN_RES */ 182*7c478bd9Sstevel@tonic-gate #define DL_CONN_RES_PENDING 0x0a /* Waiting ack of DL_CONNECT_RES */ 183*7c478bd9Sstevel@tonic-gate #define DL_DATAXFER 0x0b /* connection-oriented data transfer */ 184*7c478bd9Sstevel@tonic-gate #define DL_USER_RESET_PENDING 0x0c /* awaiting DL_RESET_CON */ 185*7c478bd9Sstevel@tonic-gate #define DL_PROV_RESET_PENDING 0x0d /* awaiting DL_RESET_RES */ 186*7c478bd9Sstevel@tonic-gate #define DL_RESET_RES_PENDING 0x0e /* Waiting ack of DL_RESET_RES */ 187*7c478bd9Sstevel@tonic-gate #define DL_DISCON8_PENDING 0x0f /* Waiting ack of DL_DISC_REQ */ 188*7c478bd9Sstevel@tonic-gate #define DL_DISCON9_PENDING 0x10 /* Waiting ack of DL_DISC_REQ */ 189*7c478bd9Sstevel@tonic-gate #define DL_DISCON11_PENDING 0x11 /* Waiting ack of DL_DISC_REQ */ 190*7c478bd9Sstevel@tonic-gate #define DL_DISCON12_PENDING 0x12 /* Waiting ack of DL_DISC_REQ */ 191*7c478bd9Sstevel@tonic-gate #define DL_DISCON13_PENDING 0x13 /* Waiting ack of DL_DISC_REQ */ 192*7c478bd9Sstevel@tonic-gate #define DL_SUBS_BIND_PND 0x14 /* Waiting ack of DL_SUBS_BIND_REQ */ 193*7c478bd9Sstevel@tonic-gate #define DL_SUBS_UNBIND_PND 0x15 /* Waiting ack of DL_SUBS_UNBIND_REQ */ 194*7c478bd9Sstevel@tonic-gate 195*7c478bd9Sstevel@tonic-gate 196*7c478bd9Sstevel@tonic-gate /* 197*7c478bd9Sstevel@tonic-gate * DL_ERROR_ACK error return values 198*7c478bd9Sstevel@tonic-gate */ 199*7c478bd9Sstevel@tonic-gate #define DL_ACCESS 0x02 /* Improper permissions for request */ 200*7c478bd9Sstevel@tonic-gate #define DL_BADADDR 0x01 /* DLSAP addr in improper format or invalid */ 201*7c478bd9Sstevel@tonic-gate #define DL_BADCORR 0x05 /* Seq number not from outstand DL_CONN_IND */ 202*7c478bd9Sstevel@tonic-gate #define DL_BADDATA 0x06 /* User data exceeded provider limit */ 203*7c478bd9Sstevel@tonic-gate #define DL_BADPPA 0x08 /* Specified PPA was invalid */ 204*7c478bd9Sstevel@tonic-gate #define DL_BADPRIM 0x09 /* Primitive received not known by provider */ 205*7c478bd9Sstevel@tonic-gate #define DL_BADQOSPARAM 0x0a /* QOS parameters contained invalid values */ 206*7c478bd9Sstevel@tonic-gate #define DL_BADQOSTYPE 0x0b /* QOS structure type is unknown/unsupported */ 207*7c478bd9Sstevel@tonic-gate #define DL_BADSAP 0x00 /* Bad LSAP selector */ 208*7c478bd9Sstevel@tonic-gate #define DL_BADTOKEN 0x0c /* Token used not an active stream */ 209*7c478bd9Sstevel@tonic-gate #define DL_BOUND 0x0d /* Attempted second bind with dl_max_conind */ 210*7c478bd9Sstevel@tonic-gate #define DL_INITFAILED 0x0e /* Physical Link initialization failed */ 211*7c478bd9Sstevel@tonic-gate #define DL_NOADDR 0x0f /* Provider couldn't allocate alt. address */ 212*7c478bd9Sstevel@tonic-gate #define DL_NOTINIT 0x10 /* Physical Link not initialized */ 213*7c478bd9Sstevel@tonic-gate #define DL_OUTSTATE 0x03 /* Primitive issued in improper state */ 214*7c478bd9Sstevel@tonic-gate #define DL_SYSERR 0x04 /* UNIX system error occurred */ 215*7c478bd9Sstevel@tonic-gate #define DL_UNSUPPORTED 0x07 /* Requested serv. not supplied by provider */ 216*7c478bd9Sstevel@tonic-gate #define DL_UNDELIVERABLE 0x11 /* Previous data unit could not be delivered */ 217*7c478bd9Sstevel@tonic-gate #define DL_NOTSUPPORTED 0x12 /* Primitive is known but not supported */ 218*7c478bd9Sstevel@tonic-gate #define DL_TOOMANY 0x13 /* limit exceeded */ 219*7c478bd9Sstevel@tonic-gate #define DL_NOTENAB 0x14 /* Promiscuous mode not enabled */ 220*7c478bd9Sstevel@tonic-gate #define DL_BUSY 0x15 /* Other streams for PPA in post-attached */ 221*7c478bd9Sstevel@tonic-gate 222*7c478bd9Sstevel@tonic-gate #define DL_NOAUTO 0x16 /* Automatic handling XID&TEST not supported */ 223*7c478bd9Sstevel@tonic-gate #define DL_NOXIDAUTO 0x17 /* Automatic handling of XID not supported */ 224*7c478bd9Sstevel@tonic-gate #define DL_NOTESTAUTO 0x18 /* Automatic handling of TEST not supported */ 225*7c478bd9Sstevel@tonic-gate #define DL_XIDAUTO 0x19 /* Automatic handling of XID response */ 226*7c478bd9Sstevel@tonic-gate #define DL_TESTAUTO 0x1a /* AUtomatic handling of TEST response */ 227*7c478bd9Sstevel@tonic-gate #define DL_PENDING 0x1b /* pending outstanding connect indications */ 228*7c478bd9Sstevel@tonic-gate 229*7c478bd9Sstevel@tonic-gate /* 230*7c478bd9Sstevel@tonic-gate * DLPI media types supported 231*7c478bd9Sstevel@tonic-gate */ 232*7c478bd9Sstevel@tonic-gate #define DL_CSMACD 0x0 /* IEEE 802.3 CSMA/CD network */ 233*7c478bd9Sstevel@tonic-gate #define DL_TPB 0x1 /* IEEE 802.4 Token Passing Bus */ 234*7c478bd9Sstevel@tonic-gate #define DL_TPR 0x2 /* IEEE 802.5 Token Passing Ring */ 235*7c478bd9Sstevel@tonic-gate #define DL_METRO 0x3 /* IEEE 802.6 Metro Net */ 236*7c478bd9Sstevel@tonic-gate #define DL_ETHER 0x4 /* Ethernet Bus */ 237*7c478bd9Sstevel@tonic-gate #define DL_HDLC 0x05 /* ISO HDLC protocol support */ 238*7c478bd9Sstevel@tonic-gate #define DL_CHAR 0x06 /* Character Synchronous protocol support */ 239*7c478bd9Sstevel@tonic-gate #define DL_CTCA 0x07 /* IBM Channel-to-Channel Adapter */ 240*7c478bd9Sstevel@tonic-gate #define DL_FDDI 0x08 /* Fiber Distributed data interface */ 241*7c478bd9Sstevel@tonic-gate #define DL_FC 0x10 /* Fibre Channel interface */ 242*7c478bd9Sstevel@tonic-gate #define DL_ATM 0x11 /* ATM */ 243*7c478bd9Sstevel@tonic-gate #define DL_IPATM 0x12 /* ATM Classical IP interface */ 244*7c478bd9Sstevel@tonic-gate #define DL_X25 0x13 /* X.25 LAPB interface */ 245*7c478bd9Sstevel@tonic-gate #define DL_ISDN 0x14 /* ISDN interface */ 246*7c478bd9Sstevel@tonic-gate #define DL_HIPPI 0x15 /* HIPPI interface */ 247*7c478bd9Sstevel@tonic-gate #define DL_100VG 0x16 /* 100 Based VG Ethernet */ 248*7c478bd9Sstevel@tonic-gate #define DL_100VGTPR 0x17 /* 100 Based VG Token Ring */ 249*7c478bd9Sstevel@tonic-gate #define DL_ETH_CSMA 0x18 /* ISO 8802/3 and Ethernet */ 250*7c478bd9Sstevel@tonic-gate #define DL_100BT 0x19 /* 100 Base T */ 251*7c478bd9Sstevel@tonic-gate #define DL_IB 0x1a /* Infiniband */ 252*7c478bd9Sstevel@tonic-gate #define DL_FRAME 0x0a /* Frame Relay LAPF */ 253*7c478bd9Sstevel@tonic-gate #define DL_MPFRAME 0x0b /* Multi-protocol over Frame Relay */ 254*7c478bd9Sstevel@tonic-gate #define DL_ASYNC 0x0c /* Character Asynchronous Protocol */ 255*7c478bd9Sstevel@tonic-gate #define DL_IPX25 0x0d /* X.25 Classical IP interface */ 256*7c478bd9Sstevel@tonic-gate #define DL_LOOP 0x0e /* software loopback */ 257*7c478bd9Sstevel@tonic-gate #define DL_OTHER 0x09 /* Any other medium not listed above */ 258*7c478bd9Sstevel@tonic-gate /* 259*7c478bd9Sstevel@tonic-gate * Private media types. These must be above the value 0x80000000 as 260*7c478bd9Sstevel@tonic-gate * stated in the DLPI specification. 261*7c478bd9Sstevel@tonic-gate */ 262*7c478bd9Sstevel@tonic-gate #define DL_IPV4 0x80000001ul /* IPv4 Tunnel Link */ 263*7c478bd9Sstevel@tonic-gate #define DL_IPV6 0x80000002ul /* IPv6 Tunnel Link */ 264*7c478bd9Sstevel@tonic-gate #define SUNW_DL_VNI 0x80000003ul /* Virtual network interface */ 265*7c478bd9Sstevel@tonic-gate 266*7c478bd9Sstevel@tonic-gate /* 267*7c478bd9Sstevel@tonic-gate * DLPI provider service supported. 268*7c478bd9Sstevel@tonic-gate * These must be allowed to be bitwise-OR for dl_service_mode in 269*7c478bd9Sstevel@tonic-gate * DL_INFO_ACK. 270*7c478bd9Sstevel@tonic-gate */ 271*7c478bd9Sstevel@tonic-gate #define DL_CODLS 0x01 /* support connection-oriented service */ 272*7c478bd9Sstevel@tonic-gate #define DL_CLDLS 0x02 /* support connectionless data link service */ 273*7c478bd9Sstevel@tonic-gate #define DL_ACLDLS 0x04 /* support acknowledged connectionless serv. */ 274*7c478bd9Sstevel@tonic-gate 275*7c478bd9Sstevel@tonic-gate 276*7c478bd9Sstevel@tonic-gate /* 277*7c478bd9Sstevel@tonic-gate * DLPI provider style. 278*7c478bd9Sstevel@tonic-gate * The DLPI provider style which determines whether a provider 279*7c478bd9Sstevel@tonic-gate * requires a DL_ATTACH_REQ to inform the provider which PPA 280*7c478bd9Sstevel@tonic-gate * user messages should be sent/received on. 281*7c478bd9Sstevel@tonic-gate */ 282*7c478bd9Sstevel@tonic-gate #define DL_STYLE1 0x0500 /* PPA is implicitly bound by open(2) */ 283*7c478bd9Sstevel@tonic-gate #define DL_STYLE2 0x0501 /* PPA must be expl. bound via DL_ATTACH_REQ */ 284*7c478bd9Sstevel@tonic-gate 285*7c478bd9Sstevel@tonic-gate 286*7c478bd9Sstevel@tonic-gate /* 287*7c478bd9Sstevel@tonic-gate * DLPI Originator for Disconnect and Resets 288*7c478bd9Sstevel@tonic-gate */ 289*7c478bd9Sstevel@tonic-gate #define DL_PROVIDER 0x0700 290*7c478bd9Sstevel@tonic-gate #define DL_USER 0x0701 291*7c478bd9Sstevel@tonic-gate 292*7c478bd9Sstevel@tonic-gate /* 293*7c478bd9Sstevel@tonic-gate * DLPI Disconnect Reasons 294*7c478bd9Sstevel@tonic-gate */ 295*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_DEST_UNKNOWN 0x0800 296*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_DEST_UNREACH_PERMANENT 0x0801 297*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_DEST_UNREACH_TRANSIENT 0x0802 298*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_QOS_UNAVAIL_PERMANENT 0x0803 299*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_QOS_UNAVAIL_TRANSIENT 0x0804 300*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_PERMANENT_COND 0x0805 301*7c478bd9Sstevel@tonic-gate #define DL_CONREJ_TRANSIENT_COND 0x0806 302*7c478bd9Sstevel@tonic-gate #define DL_DISC_ABNORMAL_CONDITION 0x0807 303*7c478bd9Sstevel@tonic-gate #define DL_DISC_NORMAL_CONDITION 0x0808 304*7c478bd9Sstevel@tonic-gate #define DL_DISC_PERMANENT_CONDITION 0x0809 305*7c478bd9Sstevel@tonic-gate #define DL_DISC_TRANSIENT_CONDITION 0x080a 306*7c478bd9Sstevel@tonic-gate #define DL_DISC_UNSPECIFIED 0x080b 307*7c478bd9Sstevel@tonic-gate 308*7c478bd9Sstevel@tonic-gate /* 309*7c478bd9Sstevel@tonic-gate * DLPI Reset Reasons 310*7c478bd9Sstevel@tonic-gate */ 311*7c478bd9Sstevel@tonic-gate #define DL_RESET_FLOW_CONTROL 0x0900 312*7c478bd9Sstevel@tonic-gate #define DL_RESET_LINK_ERROR 0x0901 313*7c478bd9Sstevel@tonic-gate #define DL_RESET_RESYNCH 0x0902 314*7c478bd9Sstevel@tonic-gate 315*7c478bd9Sstevel@tonic-gate /* 316*7c478bd9Sstevel@tonic-gate * DLPI status values for acknowledged connectionless data transfer 317*7c478bd9Sstevel@tonic-gate */ 318*7c478bd9Sstevel@tonic-gate #define DL_CMD_MASK 0x0f /* mask for command portion of status */ 319*7c478bd9Sstevel@tonic-gate #define DL_CMD_OK 0x00 /* Command Accepted */ 320*7c478bd9Sstevel@tonic-gate #define DL_CMD_RS 0x01 /* Unimplemented or inactivated service */ 321*7c478bd9Sstevel@tonic-gate #define DL_CMD_UE 0x05 /* Data Link User interface error */ 322*7c478bd9Sstevel@tonic-gate #define DL_CMD_PE 0x06 /* Protocol error */ 323*7c478bd9Sstevel@tonic-gate #define DL_CMD_IP 0x07 /* Permanent implementation dependent error */ 324*7c478bd9Sstevel@tonic-gate #define DL_CMD_UN 0x09 /* Resources temporarily unavailable */ 325*7c478bd9Sstevel@tonic-gate #define DL_CMD_IT 0x0f /* Temporary implementation dependent error */ 326*7c478bd9Sstevel@tonic-gate #define DL_RSP_MASK 0xf0 /* mask for response portion of status */ 327*7c478bd9Sstevel@tonic-gate #define DL_RSP_OK 0x00 /* Response DLSDU present */ 328*7c478bd9Sstevel@tonic-gate #define DL_RSP_RS 0x10 /* Unimplemented or inactivated service */ 329*7c478bd9Sstevel@tonic-gate #define DL_RSP_NE 0x30 /* Response DLSDU never submitted */ 330*7c478bd9Sstevel@tonic-gate #define DL_RSP_NR 0x40 /* Response DLSDU not requested */ 331*7c478bd9Sstevel@tonic-gate #define DL_RSP_UE 0x50 /* Data Link User interface error */ 332*7c478bd9Sstevel@tonic-gate #define DL_RSP_IP 0x70 /* Permanent implementation dependent error */ 333*7c478bd9Sstevel@tonic-gate #define DL_RSP_UN 0x90 /* Resources temporarily unavailable */ 334*7c478bd9Sstevel@tonic-gate #define DL_RSP_IT 0xf0 /* Temporary implementation dependent error */ 335*7c478bd9Sstevel@tonic-gate 336*7c478bd9Sstevel@tonic-gate /* 337*7c478bd9Sstevel@tonic-gate * Service Class values for acknowledged connectionless data transfer 338*7c478bd9Sstevel@tonic-gate */ 339*7c478bd9Sstevel@tonic-gate #define DL_RQST_RSP 0x01 /* Use acknowledge capability in MAC sublayer */ 340*7c478bd9Sstevel@tonic-gate #define DL_RQST_NORSP 0x02 /* No acknowledgement service requested */ 341*7c478bd9Sstevel@tonic-gate 342*7c478bd9Sstevel@tonic-gate /* 343*7c478bd9Sstevel@tonic-gate * DLPI address type definition 344*7c478bd9Sstevel@tonic-gate */ 345*7c478bd9Sstevel@tonic-gate #define DL_FACT_PHYS_ADDR 0x01 /* factory physical address */ 346*7c478bd9Sstevel@tonic-gate #define DL_CURR_PHYS_ADDR 0x02 /* current physical address */ 347*7c478bd9Sstevel@tonic-gate #define DL_IPV6_TOKEN 0x03 /* IPv6 interface token */ 348*7c478bd9Sstevel@tonic-gate #define DL_IPV6_LINK_LAYER_ADDR 0x04 /* Neighbor Discovery format */ 349*7c478bd9Sstevel@tonic-gate 350*7c478bd9Sstevel@tonic-gate /* 351*7c478bd9Sstevel@tonic-gate * DLPI flag definitions 352*7c478bd9Sstevel@tonic-gate */ 353*7c478bd9Sstevel@tonic-gate #define DL_POLL_FINAL 0x01 /* indicates poll/final bit set */ 354*7c478bd9Sstevel@tonic-gate 355*7c478bd9Sstevel@tonic-gate /* 356*7c478bd9Sstevel@tonic-gate * XID and TEST responses supported by the provider 357*7c478bd9Sstevel@tonic-gate */ 358*7c478bd9Sstevel@tonic-gate #define DL_AUTO_XID 0x01 /* provider will respond to XID */ 359*7c478bd9Sstevel@tonic-gate #define DL_AUTO_TEST 0x02 /* provider will respond to TEST */ 360*7c478bd9Sstevel@tonic-gate 361*7c478bd9Sstevel@tonic-gate /* 362*7c478bd9Sstevel@tonic-gate * Subsequent bind type 363*7c478bd9Sstevel@tonic-gate */ 364*7c478bd9Sstevel@tonic-gate #define DL_PEER_BIND 0x01 /* subsequent bind on a peer addr */ 365*7c478bd9Sstevel@tonic-gate #define DL_HIERARCHICAL_BIND 0x02 /* subs_bind on a hierarchical addr */ 366*7c478bd9Sstevel@tonic-gate 367*7c478bd9Sstevel@tonic-gate /* 368*7c478bd9Sstevel@tonic-gate * DLPI promiscuous mode definitions 369*7c478bd9Sstevel@tonic-gate */ 370*7c478bd9Sstevel@tonic-gate #define DL_PROMISC_PHYS 0x01 /* promiscuous mode at phys level */ 371*7c478bd9Sstevel@tonic-gate #define DL_PROMISC_SAP 0x02 /* promiscous mode at sap level */ 372*7c478bd9Sstevel@tonic-gate #define DL_PROMISC_MULTI 0x03 /* promiscuous mode for multicast */ 373*7c478bd9Sstevel@tonic-gate 374*7c478bd9Sstevel@tonic-gate /* 375*7c478bd9Sstevel@tonic-gate * DLPI notification codes for DL_NOTIFY primitives. 376*7c478bd9Sstevel@tonic-gate * Bit-wise distinct since DL_NOTIFY_REQ and DL_NOTIFY_ACK carry multiple 377*7c478bd9Sstevel@tonic-gate * notification codes. 378*7c478bd9Sstevel@tonic-gate */ 379*7c478bd9Sstevel@tonic-gate #define DL_NOTE_PHYS_ADDR 0x0001 /* Physical address change */ 380*7c478bd9Sstevel@tonic-gate #define DL_NOTE_PROMISC_ON_PHYS 0x0002 /* DL_PROMISC_PHYS set on ppa */ 381*7c478bd9Sstevel@tonic-gate #define DL_NOTE_PROMISC_OFF_PHYS 0x0004 /* DL_PROMISC_PHYS cleared on ppa */ 382*7c478bd9Sstevel@tonic-gate #define DL_NOTE_LINK_DOWN 0x0008 /* Link down */ 383*7c478bd9Sstevel@tonic-gate #define DL_NOTE_LINK_UP 0x0010 /* Link up */ 384*7c478bd9Sstevel@tonic-gate #define DL_NOTE_AGGR_AVAIL 0x0020 /* Link aggregation is available */ 385*7c478bd9Sstevel@tonic-gate #define DL_NOTE_AGGR_UNAVAIL 0x0040 /* Link aggregation is not available */ 386*7c478bd9Sstevel@tonic-gate #define DL_NOTE_SDU_SIZE 0x0080 /* New SDU size, global or per addr */ 387*7c478bd9Sstevel@tonic-gate #define DL_NOTE_SPEED 0x0100 /* Approximate link speed */ 388*7c478bd9Sstevel@tonic-gate #define DL_NOTE_FASTPATH_FLUSH 0x0200 /* Fast Path info changes */ 389*7c478bd9Sstevel@tonic-gate #define DL_NOTE_CAPAB_RENEG 0x0400 /* Initiate capability renegotiation */ 390*7c478bd9Sstevel@tonic-gate 391*7c478bd9Sstevel@tonic-gate /* 392*7c478bd9Sstevel@tonic-gate * DLPI Quality Of Service definition for use in QOS structure definitions. 393*7c478bd9Sstevel@tonic-gate * The QOS structures are used in connection establishment, DL_INFO_ACK, 394*7c478bd9Sstevel@tonic-gate * and setting connectionless QOS values. 395*7c478bd9Sstevel@tonic-gate */ 396*7c478bd9Sstevel@tonic-gate 397*7c478bd9Sstevel@tonic-gate /* 398*7c478bd9Sstevel@tonic-gate * Throughput 399*7c478bd9Sstevel@tonic-gate * 400*7c478bd9Sstevel@tonic-gate * This parameter is specified for both directions. 401*7c478bd9Sstevel@tonic-gate */ 402*7c478bd9Sstevel@tonic-gate typedef struct { 403*7c478bd9Sstevel@tonic-gate t_scalar_t dl_target_value; /* bits/second desired */ 404*7c478bd9Sstevel@tonic-gate t_scalar_t dl_accept_value; /* min. ok bits/second */ 405*7c478bd9Sstevel@tonic-gate } dl_through_t; 406*7c478bd9Sstevel@tonic-gate 407*7c478bd9Sstevel@tonic-gate /* 408*7c478bd9Sstevel@tonic-gate * transit delay specification 409*7c478bd9Sstevel@tonic-gate * 410*7c478bd9Sstevel@tonic-gate * This parameter is specified for both directions. 411*7c478bd9Sstevel@tonic-gate * expressed in milliseconds assuming a DLSDU size of 128 octets. 412*7c478bd9Sstevel@tonic-gate * The scaling of the value to the current DLSDU size is provider dependent. 413*7c478bd9Sstevel@tonic-gate */ 414*7c478bd9Sstevel@tonic-gate typedef struct { 415*7c478bd9Sstevel@tonic-gate t_scalar_t dl_target_value; /* desired value of service */ 416*7c478bd9Sstevel@tonic-gate t_scalar_t dl_accept_value; /* min. ok value of service */ 417*7c478bd9Sstevel@tonic-gate } dl_transdelay_t; 418*7c478bd9Sstevel@tonic-gate 419*7c478bd9Sstevel@tonic-gate /* 420*7c478bd9Sstevel@tonic-gate * priority specification 421*7c478bd9Sstevel@tonic-gate * priority range is 0-100, with 0 being highest value. 422*7c478bd9Sstevel@tonic-gate */ 423*7c478bd9Sstevel@tonic-gate typedef struct { 424*7c478bd9Sstevel@tonic-gate t_scalar_t dl_min; 425*7c478bd9Sstevel@tonic-gate t_scalar_t dl_max; 426*7c478bd9Sstevel@tonic-gate } dl_priority_t; 427*7c478bd9Sstevel@tonic-gate 428*7c478bd9Sstevel@tonic-gate 429*7c478bd9Sstevel@tonic-gate /* 430*7c478bd9Sstevel@tonic-gate * protection specification 431*7c478bd9Sstevel@tonic-gate * 432*7c478bd9Sstevel@tonic-gate */ 433*7c478bd9Sstevel@tonic-gate #define DL_NONE 0x0B01 /* no protection supplied */ 434*7c478bd9Sstevel@tonic-gate #define DL_MONITOR 0x0B02 /* prot. from passive monit. */ 435*7c478bd9Sstevel@tonic-gate #define DL_MAXIMUM 0x0B03 /* prot. from modification, replay, */ 436*7c478bd9Sstevel@tonic-gate /* addition, or deletion */ 437*7c478bd9Sstevel@tonic-gate 438*7c478bd9Sstevel@tonic-gate typedef struct { 439*7c478bd9Sstevel@tonic-gate t_scalar_t dl_min; 440*7c478bd9Sstevel@tonic-gate t_scalar_t dl_max; 441*7c478bd9Sstevel@tonic-gate } dl_protect_t; 442*7c478bd9Sstevel@tonic-gate 443*7c478bd9Sstevel@tonic-gate 444*7c478bd9Sstevel@tonic-gate /* 445*7c478bd9Sstevel@tonic-gate * Resilience specification 446*7c478bd9Sstevel@tonic-gate * probabilities are scaled by a factor of 10,000 with a time interval 447*7c478bd9Sstevel@tonic-gate * of 10,000 seconds. 448*7c478bd9Sstevel@tonic-gate */ 449*7c478bd9Sstevel@tonic-gate typedef struct { 450*7c478bd9Sstevel@tonic-gate t_scalar_t dl_disc_prob; /* prob. of provider init DISC */ 451*7c478bd9Sstevel@tonic-gate t_scalar_t dl_reset_prob; /* prob. of provider init RESET */ 452*7c478bd9Sstevel@tonic-gate } dl_resilience_t; 453*7c478bd9Sstevel@tonic-gate 454*7c478bd9Sstevel@tonic-gate 455*7c478bd9Sstevel@tonic-gate /* 456*7c478bd9Sstevel@tonic-gate * QOS type definition to be used for negotiation with the 457*7c478bd9Sstevel@tonic-gate * remote end of a connection, or a connectionless unitdata request. 458*7c478bd9Sstevel@tonic-gate * There are two type definitions to handle the negotiation 459*7c478bd9Sstevel@tonic-gate * process at connection establishment. The typedef dl_qos_range_t 460*7c478bd9Sstevel@tonic-gate * is used to present a range for parameters. This is used 461*7c478bd9Sstevel@tonic-gate * in the DL_CONNECT_REQ and DL_CONNECT_IND messages. The typedef 462*7c478bd9Sstevel@tonic-gate * dl_qos_sel_t is used to select a specific value for the QOS 463*7c478bd9Sstevel@tonic-gate * parameters. This is used in the DL_CONNECT_RES, DL_CONNECT_CON, 464*7c478bd9Sstevel@tonic-gate * and DL_INFO_ACK messages to define the selected QOS parameters 465*7c478bd9Sstevel@tonic-gate * for a connection. 466*7c478bd9Sstevel@tonic-gate * 467*7c478bd9Sstevel@tonic-gate * NOTE 468*7c478bd9Sstevel@tonic-gate * A DataLink provider which has unknown values for any of the fields 469*7c478bd9Sstevel@tonic-gate * will use a value of DL_UNKNOWN for all values in the fields. 470*7c478bd9Sstevel@tonic-gate * 471*7c478bd9Sstevel@tonic-gate * NOTE 472*7c478bd9Sstevel@tonic-gate * A QOS parameter value of DL_QOS_DONT_CARE informs the DLS 473*7c478bd9Sstevel@tonic-gate * provider the user requesting this value doesn't care 474*7c478bd9Sstevel@tonic-gate * what the QOS parameter is set to. This value becomes the 475*7c478bd9Sstevel@tonic-gate * least possible value in the range of QOS parameters. 476*7c478bd9Sstevel@tonic-gate * The order of the QOS parameter range is then: 477*7c478bd9Sstevel@tonic-gate * 478*7c478bd9Sstevel@tonic-gate * DL_QOS_DONT_CARE < 0 < MAXIMUM QOS VALUE 479*7c478bd9Sstevel@tonic-gate */ 480*7c478bd9Sstevel@tonic-gate #define DL_UNKNOWN -1 481*7c478bd9Sstevel@tonic-gate #define DL_QOS_DONT_CARE -2 482*7c478bd9Sstevel@tonic-gate 483*7c478bd9Sstevel@tonic-gate /* 484*7c478bd9Sstevel@tonic-gate * Every QOS structure has the first 4 bytes containing a type 485*7c478bd9Sstevel@tonic-gate * field, denoting the definition of the rest of the structure. 486*7c478bd9Sstevel@tonic-gate * This is used in the same manner has the dl_primitive variable 487*7c478bd9Sstevel@tonic-gate * is in messages. 488*7c478bd9Sstevel@tonic-gate * 489*7c478bd9Sstevel@tonic-gate * The following list is the defined QOS structure type values and structures. 490*7c478bd9Sstevel@tonic-gate */ 491*7c478bd9Sstevel@tonic-gate #define DL_QOS_CO_RANGE1 0x0101 /* CO QOS range struct. */ 492*7c478bd9Sstevel@tonic-gate #define DL_QOS_CO_SEL1 0x0102 /* CO QOS selection structure */ 493*7c478bd9Sstevel@tonic-gate #define DL_QOS_CL_RANGE1 0x0103 /* CL QOS range struct. */ 494*7c478bd9Sstevel@tonic-gate #define DL_QOS_CL_SEL1 0x0104 /* CL QOS selection */ 495*7c478bd9Sstevel@tonic-gate 496*7c478bd9Sstevel@tonic-gate typedef struct { 497*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_type; 498*7c478bd9Sstevel@tonic-gate dl_through_t dl_rcv_throughput; /* desired and accep. */ 499*7c478bd9Sstevel@tonic-gate dl_transdelay_t dl_rcv_trans_delay; /* desired and accep. */ 500*7c478bd9Sstevel@tonic-gate dl_through_t dl_xmt_throughput; 501*7c478bd9Sstevel@tonic-gate dl_transdelay_t dl_xmt_trans_delay; 502*7c478bd9Sstevel@tonic-gate dl_priority_t dl_priority; /* min and max values */ 503*7c478bd9Sstevel@tonic-gate dl_protect_t dl_protection; /* min and max values */ 504*7c478bd9Sstevel@tonic-gate t_scalar_t dl_residual_error; 505*7c478bd9Sstevel@tonic-gate dl_resilience_t dl_resilience; 506*7c478bd9Sstevel@tonic-gate } dl_qos_co_range1_t; 507*7c478bd9Sstevel@tonic-gate 508*7c478bd9Sstevel@tonic-gate typedef struct { 509*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_type; 510*7c478bd9Sstevel@tonic-gate t_scalar_t dl_rcv_throughput; 511*7c478bd9Sstevel@tonic-gate t_scalar_t dl_rcv_trans_delay; 512*7c478bd9Sstevel@tonic-gate t_scalar_t dl_xmt_throughput; 513*7c478bd9Sstevel@tonic-gate t_scalar_t dl_xmt_trans_delay; 514*7c478bd9Sstevel@tonic-gate t_scalar_t dl_priority; 515*7c478bd9Sstevel@tonic-gate t_scalar_t dl_protection; 516*7c478bd9Sstevel@tonic-gate t_scalar_t dl_residual_error; 517*7c478bd9Sstevel@tonic-gate dl_resilience_t dl_resilience; 518*7c478bd9Sstevel@tonic-gate } dl_qos_co_sel1_t; 519*7c478bd9Sstevel@tonic-gate 520*7c478bd9Sstevel@tonic-gate typedef struct { 521*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_type; 522*7c478bd9Sstevel@tonic-gate dl_transdelay_t dl_trans_delay; 523*7c478bd9Sstevel@tonic-gate dl_priority_t dl_priority; 524*7c478bd9Sstevel@tonic-gate dl_protect_t dl_protection; 525*7c478bd9Sstevel@tonic-gate t_scalar_t dl_residual_error; 526*7c478bd9Sstevel@tonic-gate } dl_qos_cl_range1_t; 527*7c478bd9Sstevel@tonic-gate 528*7c478bd9Sstevel@tonic-gate typedef struct { 529*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_type; 530*7c478bd9Sstevel@tonic-gate t_scalar_t dl_trans_delay; 531*7c478bd9Sstevel@tonic-gate t_scalar_t dl_priority; 532*7c478bd9Sstevel@tonic-gate t_scalar_t dl_protection; 533*7c478bd9Sstevel@tonic-gate t_scalar_t dl_residual_error; 534*7c478bd9Sstevel@tonic-gate } dl_qos_cl_sel1_t; 535*7c478bd9Sstevel@tonic-gate 536*7c478bd9Sstevel@tonic-gate union DL_qos_types { 537*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_type; 538*7c478bd9Sstevel@tonic-gate dl_qos_co_range1_t qos_co_range1; 539*7c478bd9Sstevel@tonic-gate dl_qos_co_sel1_t qos_co_sel1; 540*7c478bd9Sstevel@tonic-gate dl_qos_cl_range1_t qos_cl_range1; 541*7c478bd9Sstevel@tonic-gate dl_qos_cl_sel1_t qos_cl_sel1; 542*7c478bd9Sstevel@tonic-gate }; 543*7c478bd9Sstevel@tonic-gate 544*7c478bd9Sstevel@tonic-gate /* 545*7c478bd9Sstevel@tonic-gate * Solaris specific structures and definitions. 546*7c478bd9Sstevel@tonic-gate */ 547*7c478bd9Sstevel@tonic-gate 548*7c478bd9Sstevel@tonic-gate /* 549*7c478bd9Sstevel@tonic-gate * The following are the capability types and structures used by the 550*7c478bd9Sstevel@tonic-gate * the DL_CAPABILITY_REQ and DL_CAPABILITY_ACK primitives. 551*7c478bd9Sstevel@tonic-gate * 552*7c478bd9Sstevel@tonic-gate * These primitives are used both to determine the set of capabilities in 553*7c478bd9Sstevel@tonic-gate * the DLS provider and also to turn on and off specific capabilities. 554*7c478bd9Sstevel@tonic-gate * The response is a DL_CAPABILITY_ACK or DL_ERROR_ACK. 555*7c478bd9Sstevel@tonic-gate * 556*7c478bd9Sstevel@tonic-gate * DL_CAPABILITY_REQ can either be empty (i.e. dl_sub_length is zero) which 557*7c478bd9Sstevel@tonic-gate * is a request for the driver to return all capabilities. Otherwise, the 558*7c478bd9Sstevel@tonic-gate * DL_CAPABILITY_REQ contains the capabilities the DLS user wants to use and 559*7c478bd9Sstevel@tonic-gate * their settings. 560*7c478bd9Sstevel@tonic-gate * 561*7c478bd9Sstevel@tonic-gate * DL_CAPABILITY_ACK contains the capabilities that the DLS provider can 562*7c478bd9Sstevel@tonic-gate * support modified based on what was listed in the request. If a 563*7c478bd9Sstevel@tonic-gate * capability was included in the request then the information returned 564*7c478bd9Sstevel@tonic-gate * in the ack might be modified based on the information in the request. 565*7c478bd9Sstevel@tonic-gate */ 566*7c478bd9Sstevel@tonic-gate 567*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_ID_WRAPPER 0x00 /* Module ID wrapper structure */ 568*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_id_t */ 569*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_HCKSUM 0x01 /* Checksum offload */ 570*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_hcksum_t */ 571*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_IPSEC_AH 0x02 /* IPsec AH acceleration */ 572*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_ipsec_t */ 573*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_IPSEC_ESP 0x03 /* IPsec ESP acceleration */ 574*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_ipsec_t */ 575*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_MDT 0x04 /* Multidata Transmit capability */ 576*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_mdt_t */ 577*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_ZEROCOPY 0x05 /* Zero-copy capability */ 578*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_zerocopy_t */ 579*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_POLL 0x06 /* Polling capability */ 580*7c478bd9Sstevel@tonic-gate /* dl_data is dl_capab_poll_t */ 581*7c478bd9Sstevel@tonic-gate 582*7c478bd9Sstevel@tonic-gate typedef struct { 583*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_cap; /* capability type */ 584*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_length; /* length of data following */ 585*7c478bd9Sstevel@tonic-gate /* Followed by zero or more bytes of dl_data */ 586*7c478bd9Sstevel@tonic-gate } dl_capability_sub_t; 587*7c478bd9Sstevel@tonic-gate 588*7c478bd9Sstevel@tonic-gate /* 589*7c478bd9Sstevel@tonic-gate * Definitions and structures needed for DL_CONTROL_REQ and DL_CONTROL_ACK 590*7c478bd9Sstevel@tonic-gate * primitives. 591*7c478bd9Sstevel@tonic-gate * Extensible message to send down control information to the DLS provider. 592*7c478bd9Sstevel@tonic-gate * The response is a DL_CONTROL_ACK or DL_ERROR_ACK. 593*7c478bd9Sstevel@tonic-gate * 594*7c478bd9Sstevel@tonic-gate * Different types of control operations will define different format for the 595*7c478bd9Sstevel@tonic-gate * key and data fields. ADD requires key and data fields; if the <type, key> 596*7c478bd9Sstevel@tonic-gate * matches an already existing entry a DL_ERROR_ACK will be returned. DELETE 597*7c478bd9Sstevel@tonic-gate * requires a key field; if the <type, key> does not exist, a DL_ERROR_ACK 598*7c478bd9Sstevel@tonic-gate * will be returned. FLUSH requires neither a key nor data; it 599*7c478bd9Sstevel@tonic-gate * unconditionally removes all entries for the specified type. GET requires a 600*7c478bd9Sstevel@tonic-gate * key field; the get operation returns the data for the <type, key>. If 601*7c478bd9Sstevel@tonic-gate * <type, key> doesn't exist a DL_ERROR_ACK is returned. UPDATE requires key 602*7c478bd9Sstevel@tonic-gate * and data fields; if <type, key> doesn't exist a DL_ERROR_ACK is returned. 603*7c478bd9Sstevel@tonic-gate */ 604*7c478bd9Sstevel@tonic-gate 605*7c478bd9Sstevel@tonic-gate /* 606*7c478bd9Sstevel@tonic-gate * Control operations 607*7c478bd9Sstevel@tonic-gate */ 608*7c478bd9Sstevel@tonic-gate #define DL_CO_ADD 0x01 /* Add new entry matching for <type,key> */ 609*7c478bd9Sstevel@tonic-gate #define DL_CO_DELETE 0x02 /* Delete the entry matching <type,key> */ 610*7c478bd9Sstevel@tonic-gate #define DL_CO_FLUSH 0x03 /* Purge all entries of <type> */ 611*7c478bd9Sstevel@tonic-gate #define DL_CO_GET 0x04 /* Get the data for the <type,key> */ 612*7c478bd9Sstevel@tonic-gate #define DL_CO_UPDATE 0x05 /* Update the data for <type,key> */ 613*7c478bd9Sstevel@tonic-gate #define DL_CO_SET 0x06 /* Add or update as appropriate */ 614*7c478bd9Sstevel@tonic-gate 615*7c478bd9Sstevel@tonic-gate /* 616*7c478bd9Sstevel@tonic-gate * Control types (dl_type field of dl_control_req_t and dl_control_ack_t) 617*7c478bd9Sstevel@tonic-gate */ 618*7c478bd9Sstevel@tonic-gate #define DL_CT_IPSEC_AH 0x01 /* AH; key=spi,dest_addr; */ 619*7c478bd9Sstevel@tonic-gate /* data=keying material */ 620*7c478bd9Sstevel@tonic-gate #define DL_CT_IPSEC_ESP 0x02 /* ESP; key=spi,des_taddr; */ 621*7c478bd9Sstevel@tonic-gate /* data=keying material */ 622*7c478bd9Sstevel@tonic-gate 623*7c478bd9Sstevel@tonic-gate /* 624*7c478bd9Sstevel@tonic-gate * Module ID token to be included in new sub-capability structures. 625*7c478bd9Sstevel@tonic-gate * Existing sub-capabilities lacking an identification token, e.g. IPSEC 626*7c478bd9Sstevel@tonic-gate * hardware acceleration, need to be encapsulated within the ID sub- 627*7c478bd9Sstevel@tonic-gate * capability. Access to this structure must be done through 628*7c478bd9Sstevel@tonic-gate * dlcapab{set,check}qid(). 629*7c478bd9Sstevel@tonic-gate */ 630*7c478bd9Sstevel@tonic-gate typedef struct { 631*7c478bd9Sstevel@tonic-gate t_uscalar_t mid[4]; /* private fields */ 632*7c478bd9Sstevel@tonic-gate } dl_mid_t; 633*7c478bd9Sstevel@tonic-gate 634*7c478bd9Sstevel@tonic-gate /* 635*7c478bd9Sstevel@tonic-gate * Module ID wrapper (follows dl_capability_sub_t) 636*7c478bd9Sstevel@tonic-gate */ 637*7c478bd9Sstevel@tonic-gate typedef struct { 638*7c478bd9Sstevel@tonic-gate dl_mid_t id_mid; /* module ID token */ 639*7c478bd9Sstevel@tonic-gate dl_capability_sub_t id_subcap; /* sub-capability */ 640*7c478bd9Sstevel@tonic-gate } dl_capab_id_t; 641*7c478bd9Sstevel@tonic-gate 642*7c478bd9Sstevel@tonic-gate /* 643*7c478bd9Sstevel@tonic-gate * Multidata Transmit sub-capability (follows dl_capability_sub_t) 644*7c478bd9Sstevel@tonic-gate */ 645*7c478bd9Sstevel@tonic-gate typedef struct { 646*7c478bd9Sstevel@tonic-gate t_uscalar_t mdt_version; /* interface version */ 647*7c478bd9Sstevel@tonic-gate t_uscalar_t mdt_flags; /* flags */ 648*7c478bd9Sstevel@tonic-gate t_uscalar_t mdt_hdr_head; /* minimum leading header space */ 649*7c478bd9Sstevel@tonic-gate t_uscalar_t mdt_hdr_tail; /* minimum trailing header space */ 650*7c478bd9Sstevel@tonic-gate t_uscalar_t mdt_max_pld; /* maximum doable payload buffers */ 651*7c478bd9Sstevel@tonic-gate t_uscalar_t mdt_span_limit; /* scatter-gather descriptor limit */ 652*7c478bd9Sstevel@tonic-gate dl_mid_t mdt_mid; /* module ID token */ 653*7c478bd9Sstevel@tonic-gate } dl_capab_mdt_t; 654*7c478bd9Sstevel@tonic-gate 655*7c478bd9Sstevel@tonic-gate /* 656*7c478bd9Sstevel@tonic-gate * Multidata Transmit revision definition history 657*7c478bd9Sstevel@tonic-gate */ 658*7c478bd9Sstevel@tonic-gate #define MDT_CURRENT_VERSION 0x02 659*7c478bd9Sstevel@tonic-gate #define MDT_VERSION_2 0x02 660*7c478bd9Sstevel@tonic-gate 661*7c478bd9Sstevel@tonic-gate /* 662*7c478bd9Sstevel@tonic-gate * mdt_flags values 663*7c478bd9Sstevel@tonic-gate */ 664*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_MDT_ENABLE 0x01 /* enable Multidata Transmit */ 665*7c478bd9Sstevel@tonic-gate 666*7c478bd9Sstevel@tonic-gate /* 667*7c478bd9Sstevel@tonic-gate * DL_CAPAB_HCKSUM 668*7c478bd9Sstevel@tonic-gate * Used for negotiating different flavors of checksum offload 669*7c478bd9Sstevel@tonic-gate * capabilities. 670*7c478bd9Sstevel@tonic-gate */ 671*7c478bd9Sstevel@tonic-gate typedef struct { 672*7c478bd9Sstevel@tonic-gate t_uscalar_t hcksum_version; /* version of data following */ 673*7c478bd9Sstevel@tonic-gate t_uscalar_t hcksum_txflags; /* capabilities on transmit */ 674*7c478bd9Sstevel@tonic-gate dl_mid_t hcksum_mid; /* module ID */ 675*7c478bd9Sstevel@tonic-gate } dl_capab_hcksum_t; 676*7c478bd9Sstevel@tonic-gate 677*7c478bd9Sstevel@tonic-gate /* 678*7c478bd9Sstevel@tonic-gate * DL_CAPAB_HCKSUM revision definition history 679*7c478bd9Sstevel@tonic-gate */ 680*7c478bd9Sstevel@tonic-gate #define HCKSUM_CURRENT_VERSION 0x01 681*7c478bd9Sstevel@tonic-gate #define HCKSUM_VERSION_1 0x01 682*7c478bd9Sstevel@tonic-gate 683*7c478bd9Sstevel@tonic-gate /* 684*7c478bd9Sstevel@tonic-gate * Values for dl_txflags 685*7c478bd9Sstevel@tonic-gate */ 686*7c478bd9Sstevel@tonic-gate #define HCKSUM_ENABLE 0x01 /* Set to enable hardware checksum */ 687*7c478bd9Sstevel@tonic-gate /* capability */ 688*7c478bd9Sstevel@tonic-gate #define HCKSUM_INET_PARTIAL 0x02 /* Partial 1's complement checksum */ 689*7c478bd9Sstevel@tonic-gate /* ability */ 690*7c478bd9Sstevel@tonic-gate #define HCKSUM_INET_FULL_V4 0x04 /* Full 1's complement checksum */ 691*7c478bd9Sstevel@tonic-gate /* ability for IPv4 packets. */ 692*7c478bd9Sstevel@tonic-gate #define HCKSUM_IPHDRCKSUM 0x10 /* IPv4 Header checksum offload */ 693*7c478bd9Sstevel@tonic-gate /* capability */ 694*7c478bd9Sstevel@tonic-gate #ifdef _KERNEL 695*7c478bd9Sstevel@tonic-gate 696*7c478bd9Sstevel@tonic-gate typedef struct dl_capab_poll_s { 697*7c478bd9Sstevel@tonic-gate t_uscalar_t poll_version; 698*7c478bd9Sstevel@tonic-gate t_uscalar_t poll_flags; 699*7c478bd9Sstevel@tonic-gate 700*7c478bd9Sstevel@tonic-gate /* NIC provided information */ 701*7c478bd9Sstevel@tonic-gate uintptr_t poll_tx_handle; 702*7c478bd9Sstevel@tonic-gate uintptr_t poll_tx; 703*7c478bd9Sstevel@tonic-gate 704*7c478bd9Sstevel@tonic-gate /* IP provided information */ 705*7c478bd9Sstevel@tonic-gate uintptr_t poll_rx_handle; 706*7c478bd9Sstevel@tonic-gate uintptr_t poll_rx; 707*7c478bd9Sstevel@tonic-gate uintptr_t poll_ring_add; 708*7c478bd9Sstevel@tonic-gate 709*7c478bd9Sstevel@tonic-gate dl_mid_t poll_mid; /* module ID */ 710*7c478bd9Sstevel@tonic-gate } dl_capab_poll_t; 711*7c478bd9Sstevel@tonic-gate 712*7c478bd9Sstevel@tonic-gate #define POLL_CURRENT_VERSION 0x01 713*7c478bd9Sstevel@tonic-gate #define POLL_VERSION_1 0x01 714*7c478bd9Sstevel@tonic-gate 715*7c478bd9Sstevel@tonic-gate /* 716*7c478bd9Sstevel@tonic-gate * Values for poll_flags 717*7c478bd9Sstevel@tonic-gate */ 718*7c478bd9Sstevel@tonic-gate #define POLL_ENABLE 0x01 /* Set to enable polling */ 719*7c478bd9Sstevel@tonic-gate /* capability */ 720*7c478bd9Sstevel@tonic-gate #define POLL_CAPABLE 0x02 /* Polling ability exists */ 721*7c478bd9Sstevel@tonic-gate #define POLL_DISABLE 0x04 /* Disable Polling */ 722*7c478bd9Sstevel@tonic-gate 723*7c478bd9Sstevel@tonic-gate #endif /* _KERNEL */ 724*7c478bd9Sstevel@tonic-gate 725*7c478bd9Sstevel@tonic-gate /* 726*7c478bd9Sstevel@tonic-gate * Zero-copy sub-capability (follows dl_capability_sub_t) 727*7c478bd9Sstevel@tonic-gate */ 728*7c478bd9Sstevel@tonic-gate typedef struct { 729*7c478bd9Sstevel@tonic-gate t_uscalar_t zerocopy_version; /* interface version */ 730*7c478bd9Sstevel@tonic-gate t_uscalar_t zerocopy_flags; /* capability flags */ 731*7c478bd9Sstevel@tonic-gate t_uscalar_t reserved[9]; /* reserved fields */ 732*7c478bd9Sstevel@tonic-gate dl_mid_t zerocopy_mid; /* module ID */ 733*7c478bd9Sstevel@tonic-gate } dl_capab_zerocopy_t; 734*7c478bd9Sstevel@tonic-gate 735*7c478bd9Sstevel@tonic-gate /* 736*7c478bd9Sstevel@tonic-gate * Zero-copy revision definition history 737*7c478bd9Sstevel@tonic-gate */ 738*7c478bd9Sstevel@tonic-gate #define ZEROCOPY_CURRENT_VERSION 0x01 739*7c478bd9Sstevel@tonic-gate #define ZEROCOPY_VERSION_1 0x01 740*7c478bd9Sstevel@tonic-gate 741*7c478bd9Sstevel@tonic-gate /* 742*7c478bd9Sstevel@tonic-gate * Currently supported values of zerocopy_flags 743*7c478bd9Sstevel@tonic-gate */ 744*7c478bd9Sstevel@tonic-gate #define DL_CAPAB_VMSAFE_MEM 0x01 /* Driver is zero-copy safe */ 745*7c478bd9Sstevel@tonic-gate /* wrt VM named buffers on */ 746*7c478bd9Sstevel@tonic-gate /* transmit */ 747*7c478bd9Sstevel@tonic-gate /* 748*7c478bd9Sstevel@tonic-gate * DLPI interface primitive definitions. 749*7c478bd9Sstevel@tonic-gate * 750*7c478bd9Sstevel@tonic-gate * Each primitive is sent as a stream message. It is possible that 751*7c478bd9Sstevel@tonic-gate * the messages may be viewed as a sequence of bytes that have the 752*7c478bd9Sstevel@tonic-gate * following form without any padding. The structure definition 753*7c478bd9Sstevel@tonic-gate * of the following messages may have to change depending on the 754*7c478bd9Sstevel@tonic-gate * underlying hardware architecture and crossing of a hardware 755*7c478bd9Sstevel@tonic-gate * boundary with a different hardware architecture. 756*7c478bd9Sstevel@tonic-gate * 757*7c478bd9Sstevel@tonic-gate * Fields in the primitives having a name of the form 758*7c478bd9Sstevel@tonic-gate * dl_reserved cannot be used and have the value of 759*7c478bd9Sstevel@tonic-gate * binary zero, no bits turned on. 760*7c478bd9Sstevel@tonic-gate * 761*7c478bd9Sstevel@tonic-gate * Each message has the name defined followed by the 762*7c478bd9Sstevel@tonic-gate * stream message type (M_PROTO, M_PCPROTO, M_DATA) 763*7c478bd9Sstevel@tonic-gate */ 764*7c478bd9Sstevel@tonic-gate 765*7c478bd9Sstevel@tonic-gate /* 766*7c478bd9Sstevel@tonic-gate * LOCAL MANAGEMENT SERVICE PRIMITIVES 767*7c478bd9Sstevel@tonic-gate */ 768*7c478bd9Sstevel@tonic-gate 769*7c478bd9Sstevel@tonic-gate /* 770*7c478bd9Sstevel@tonic-gate * DL_INFO_REQ, M_PCPROTO type 771*7c478bd9Sstevel@tonic-gate */ 772*7c478bd9Sstevel@tonic-gate typedef struct { 773*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_INFO_REQ */ 774*7c478bd9Sstevel@tonic-gate } dl_info_req_t; 775*7c478bd9Sstevel@tonic-gate 776*7c478bd9Sstevel@tonic-gate /* 777*7c478bd9Sstevel@tonic-gate * DL_INFO_ACK, M_PCPROTO type 778*7c478bd9Sstevel@tonic-gate */ 779*7c478bd9Sstevel@tonic-gate typedef struct { 780*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_INFO_ACK */ 781*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_max_sdu; /* Max bytes in a DLSDU */ 782*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_min_sdu; /* Min bytes in a DLSDU */ 783*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of DLSAP address */ 784*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_mac_type; /* type of medium supported */ 785*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_reserved; /* value set to zero */ 786*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_current_state; /* state of DLPI interface */ 787*7c478bd9Sstevel@tonic-gate t_scalar_t dl_sap_length; /* length of dlsap SAP part */ 788*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_service_mode; /* CO, CL or ACL */ 789*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_length; /* length of qos values */ 790*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_offset; /* offset from start of block */ 791*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_range_length; /* available range of qos */ 792*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_range_offset; /* offset from start of block */ 793*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_provider_style; /* style1 or style2 */ 794*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset of the dlsap addr */ 795*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_version; /* version number */ 796*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_brdcst_addr_length; /* length of broadcast addr */ 797*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_brdcst_addr_offset; /* offset from start of block */ 798*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_growth; /* set to zero */ 799*7c478bd9Sstevel@tonic-gate } dl_info_ack_t; 800*7c478bd9Sstevel@tonic-gate 801*7c478bd9Sstevel@tonic-gate /* 802*7c478bd9Sstevel@tonic-gate * DL_ATTACH_REQ, M_PROTO type 803*7c478bd9Sstevel@tonic-gate */ 804*7c478bd9Sstevel@tonic-gate typedef struct { 805*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_ATTACH_REQ */ 806*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_ppa; /* id of the PPA */ 807*7c478bd9Sstevel@tonic-gate } dl_attach_req_t; 808*7c478bd9Sstevel@tonic-gate 809*7c478bd9Sstevel@tonic-gate /* 810*7c478bd9Sstevel@tonic-gate * DL_DETACH_REQ, M_PROTO type 811*7c478bd9Sstevel@tonic-gate */ 812*7c478bd9Sstevel@tonic-gate typedef struct { 813*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_DETACH_REQ */ 814*7c478bd9Sstevel@tonic-gate } dl_detach_req_t; 815*7c478bd9Sstevel@tonic-gate 816*7c478bd9Sstevel@tonic-gate /* 817*7c478bd9Sstevel@tonic-gate * DL_BIND_REQ, M_PROTO type 818*7c478bd9Sstevel@tonic-gate */ 819*7c478bd9Sstevel@tonic-gate typedef struct { 820*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_BIND_REQ */ 821*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_sap; /* info to identify dlsap addr */ 822*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_max_conind; /* max # of outstanding con_ind */ 823*7c478bd9Sstevel@tonic-gate uint16_t dl_service_mode; /* CO, CL or ACL */ 824*7c478bd9Sstevel@tonic-gate uint16_t dl_conn_mgmt; /* if non-zero, is con-mgmt stream */ 825*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_xidtest_flg; /* auto init. of test and xid */ 826*7c478bd9Sstevel@tonic-gate } dl_bind_req_t; 827*7c478bd9Sstevel@tonic-gate 828*7c478bd9Sstevel@tonic-gate /* 829*7c478bd9Sstevel@tonic-gate * DL_BIND_ACK, M_PCPROTO type 830*7c478bd9Sstevel@tonic-gate */ 831*7c478bd9Sstevel@tonic-gate typedef struct { 832*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_BIND_ACK */ 833*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_sap; /* DLSAP addr info */ 834*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of complete DLSAP addr */ 835*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PCPROTO */ 836*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_max_conind; /* allowed max. # of con-ind */ 837*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_xidtest_flg; /* responses supported by provider */ 838*7c478bd9Sstevel@tonic-gate } dl_bind_ack_t; 839*7c478bd9Sstevel@tonic-gate 840*7c478bd9Sstevel@tonic-gate /* 841*7c478bd9Sstevel@tonic-gate * DL_SUBS_BIND_REQ, M_PROTO type 842*7c478bd9Sstevel@tonic-gate */ 843*7c478bd9Sstevel@tonic-gate typedef struct { 844*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_SUBS_BIND_REQ */ 845*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_sap_offset; /* offset of subs_sap */ 846*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_sap_length; /* length of subs_sap */ 847*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_bind_class; /* peer or hierarchical */ 848*7c478bd9Sstevel@tonic-gate } dl_subs_bind_req_t; 849*7c478bd9Sstevel@tonic-gate 850*7c478bd9Sstevel@tonic-gate /* 851*7c478bd9Sstevel@tonic-gate * DL_SUBS_BIND_ACK, M_PCPROTO type 852*7c478bd9Sstevel@tonic-gate */ 853*7c478bd9Sstevel@tonic-gate typedef struct { 854*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_SUBS_BIND_ACK */ 855*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_sap_offset; /* offset of subs_sap */ 856*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_sap_length; /* length of subs_sap */ 857*7c478bd9Sstevel@tonic-gate } dl_subs_bind_ack_t; 858*7c478bd9Sstevel@tonic-gate 859*7c478bd9Sstevel@tonic-gate /* 860*7c478bd9Sstevel@tonic-gate * DL_UNBIND_REQ, M_PROTO type 861*7c478bd9Sstevel@tonic-gate */ 862*7c478bd9Sstevel@tonic-gate typedef struct { 863*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_UNBIND_REQ */ 864*7c478bd9Sstevel@tonic-gate } dl_unbind_req_t; 865*7c478bd9Sstevel@tonic-gate 866*7c478bd9Sstevel@tonic-gate /* 867*7c478bd9Sstevel@tonic-gate * DL_SUBS_UNBIND_REQ, M_PROTO type 868*7c478bd9Sstevel@tonic-gate */ 869*7c478bd9Sstevel@tonic-gate typedef struct { 870*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_SUBS_UNBIND_REQ */ 871*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_sap_offset; /* offset of subs_sap */ 872*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_subs_sap_length; /* length of subs_sap */ 873*7c478bd9Sstevel@tonic-gate } dl_subs_unbind_req_t; 874*7c478bd9Sstevel@tonic-gate 875*7c478bd9Sstevel@tonic-gate /* 876*7c478bd9Sstevel@tonic-gate * DL_OK_ACK, M_PCPROTO type 877*7c478bd9Sstevel@tonic-gate */ 878*7c478bd9Sstevel@tonic-gate typedef struct { 879*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_OK_ACK */ 880*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correct_primitive; /* primitive acknowledged */ 881*7c478bd9Sstevel@tonic-gate } dl_ok_ack_t; 882*7c478bd9Sstevel@tonic-gate 883*7c478bd9Sstevel@tonic-gate /* 884*7c478bd9Sstevel@tonic-gate * DL_ERROR_ACK, M_PCPROTO type 885*7c478bd9Sstevel@tonic-gate */ 886*7c478bd9Sstevel@tonic-gate typedef struct { 887*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_ERROR_ACK */ 888*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_error_primitive; /* primitive in error */ 889*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_errno; /* DLPI error code */ 890*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_unix_errno; /* UNIX system error code */ 891*7c478bd9Sstevel@tonic-gate } dl_error_ack_t; 892*7c478bd9Sstevel@tonic-gate 893*7c478bd9Sstevel@tonic-gate /* 894*7c478bd9Sstevel@tonic-gate * DL_ENABMULTI_REQ, M_PROTO type 895*7c478bd9Sstevel@tonic-gate */ 896*7c478bd9Sstevel@tonic-gate typedef struct { 897*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_ENABMULTI_REQ */ 898*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of multicast address */ 899*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PROTO block */ 900*7c478bd9Sstevel@tonic-gate } dl_enabmulti_req_t; 901*7c478bd9Sstevel@tonic-gate 902*7c478bd9Sstevel@tonic-gate /* 903*7c478bd9Sstevel@tonic-gate * DL_DISABMULTI_REQ, M_PROTO type 904*7c478bd9Sstevel@tonic-gate */ 905*7c478bd9Sstevel@tonic-gate 906*7c478bd9Sstevel@tonic-gate typedef struct { 907*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_DISABMULTI_REQ */ 908*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of multicast address */ 909*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PROTO block */ 910*7c478bd9Sstevel@tonic-gate } dl_disabmulti_req_t; 911*7c478bd9Sstevel@tonic-gate 912*7c478bd9Sstevel@tonic-gate /* 913*7c478bd9Sstevel@tonic-gate * DL_PROMISCON_REQ, M_PROTO type 914*7c478bd9Sstevel@tonic-gate */ 915*7c478bd9Sstevel@tonic-gate 916*7c478bd9Sstevel@tonic-gate typedef struct { 917*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_PROMISCON_REQ */ 918*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_level; /* physical,SAP, or ALL multicast */ 919*7c478bd9Sstevel@tonic-gate } dl_promiscon_req_t; 920*7c478bd9Sstevel@tonic-gate 921*7c478bd9Sstevel@tonic-gate /* 922*7c478bd9Sstevel@tonic-gate * DL_PROMISCOFF_REQ, M_PROTO type 923*7c478bd9Sstevel@tonic-gate */ 924*7c478bd9Sstevel@tonic-gate 925*7c478bd9Sstevel@tonic-gate typedef struct { 926*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_PROMISCOFF_REQ */ 927*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_level; /* Physical,SAP, or ALL multicast */ 928*7c478bd9Sstevel@tonic-gate } dl_promiscoff_req_t; 929*7c478bd9Sstevel@tonic-gate 930*7c478bd9Sstevel@tonic-gate /* 931*7c478bd9Sstevel@tonic-gate * Primitives to get and set the Physical address 932*7c478bd9Sstevel@tonic-gate */ 933*7c478bd9Sstevel@tonic-gate 934*7c478bd9Sstevel@tonic-gate /* 935*7c478bd9Sstevel@tonic-gate * DL_PHYS_ADDR_REQ, M_PROTO type 936*7c478bd9Sstevel@tonic-gate */ 937*7c478bd9Sstevel@tonic-gate typedef struct { 938*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_PHYS_ADDR_REQ */ 939*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_type; /* factory or current physical addr */ 940*7c478bd9Sstevel@tonic-gate } dl_phys_addr_req_t; 941*7c478bd9Sstevel@tonic-gate 942*7c478bd9Sstevel@tonic-gate /* 943*7c478bd9Sstevel@tonic-gate * DL_PHYS_ADDR_ACK, M_PCPROTO type 944*7c478bd9Sstevel@tonic-gate */ 945*7c478bd9Sstevel@tonic-gate typedef struct { 946*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_PHYS_ADDR_ACK */ 947*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of the physical addr */ 948*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of block */ 949*7c478bd9Sstevel@tonic-gate } dl_phys_addr_ack_t; 950*7c478bd9Sstevel@tonic-gate 951*7c478bd9Sstevel@tonic-gate /* 952*7c478bd9Sstevel@tonic-gate * DL_SET_PHYS_ADDR_REQ, M_PROTO type 953*7c478bd9Sstevel@tonic-gate */ 954*7c478bd9Sstevel@tonic-gate typedef struct { 955*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_SET_PHYS_ADDR_REQ */ 956*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of physical addr */ 957*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of block */ 958*7c478bd9Sstevel@tonic-gate } dl_set_phys_addr_req_t; 959*7c478bd9Sstevel@tonic-gate 960*7c478bd9Sstevel@tonic-gate /* 961*7c478bd9Sstevel@tonic-gate * Primitives to get statistics 962*7c478bd9Sstevel@tonic-gate */ 963*7c478bd9Sstevel@tonic-gate 964*7c478bd9Sstevel@tonic-gate /* 965*7c478bd9Sstevel@tonic-gate * DL_GET_STATISTICS_REQ, M_PROTO type 966*7c478bd9Sstevel@tonic-gate */ 967*7c478bd9Sstevel@tonic-gate typedef struct { 968*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_GET_STATISTICS_REQ */ 969*7c478bd9Sstevel@tonic-gate } dl_get_statistics_req_t; 970*7c478bd9Sstevel@tonic-gate 971*7c478bd9Sstevel@tonic-gate /* 972*7c478bd9Sstevel@tonic-gate * DL_GET_STATISTICS_ACK, M_PCPROTO type 973*7c478bd9Sstevel@tonic-gate */ 974*7c478bd9Sstevel@tonic-gate typedef struct { 975*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_GET_STATISTICS_ACK */ 976*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_stat_length; /* length of statistics structure */ 977*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_stat_offset; /* offset from start of block */ 978*7c478bd9Sstevel@tonic-gate } dl_get_statistics_ack_t; 979*7c478bd9Sstevel@tonic-gate 980*7c478bd9Sstevel@tonic-gate /* 981*7c478bd9Sstevel@tonic-gate * Solaris specific local management service primitives 982*7c478bd9Sstevel@tonic-gate */ 983*7c478bd9Sstevel@tonic-gate 984*7c478bd9Sstevel@tonic-gate /* 985*7c478bd9Sstevel@tonic-gate * DL_NOTIFY_REQ, M_PROTO type 986*7c478bd9Sstevel@tonic-gate */ 987*7c478bd9Sstevel@tonic-gate typedef struct { 988*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_NOTIFY_REQ */ 989*7c478bd9Sstevel@tonic-gate uint32_t dl_notifications; /* Requested set of notifications */ 990*7c478bd9Sstevel@tonic-gate uint32_t dl_timelimit; /* In milliseconds */ 991*7c478bd9Sstevel@tonic-gate } dl_notify_req_t; 992*7c478bd9Sstevel@tonic-gate 993*7c478bd9Sstevel@tonic-gate /* 994*7c478bd9Sstevel@tonic-gate * DL_NOTIFY_ACK, M_PROTO type 995*7c478bd9Sstevel@tonic-gate */ 996*7c478bd9Sstevel@tonic-gate typedef struct { 997*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_NOTIFY_ACK */ 998*7c478bd9Sstevel@tonic-gate uint32_t dl_notifications; /* Supported set of notifications */ 999*7c478bd9Sstevel@tonic-gate } dl_notify_ack_t; 1000*7c478bd9Sstevel@tonic-gate 1001*7c478bd9Sstevel@tonic-gate /* 1002*7c478bd9Sstevel@tonic-gate * DL_NOTIFY_IND, M_PROTO type 1003*7c478bd9Sstevel@tonic-gate */ 1004*7c478bd9Sstevel@tonic-gate typedef struct { 1005*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_NOTIFY_IND */ 1006*7c478bd9Sstevel@tonic-gate uint32_t dl_notification; /* Which notification? */ 1007*7c478bd9Sstevel@tonic-gate uint32_t dl_data; /* notification specific */ 1008*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of complete DLSAP addr */ 1009*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PROTO */ 1010*7c478bd9Sstevel@tonic-gate } dl_notify_ind_t; 1011*7c478bd9Sstevel@tonic-gate 1012*7c478bd9Sstevel@tonic-gate /* 1013*7c478bd9Sstevel@tonic-gate * DL_AGGR_REQ, M_PROTO type 1014*7c478bd9Sstevel@tonic-gate */ 1015*7c478bd9Sstevel@tonic-gate typedef struct { 1016*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_AGGR_REQ */ 1017*7c478bd9Sstevel@tonic-gate uint32_t dl_key; /* Key identifying the group */ 1018*7c478bd9Sstevel@tonic-gate uint32_t dl_port; /* Identifying the NIC */ 1019*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of PHYS addr addr */ 1020*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PROTO */ 1021*7c478bd9Sstevel@tonic-gate } dl_aggr_req_t; 1022*7c478bd9Sstevel@tonic-gate 1023*7c478bd9Sstevel@tonic-gate /* 1024*7c478bd9Sstevel@tonic-gate * DL_AGGR_IND, M_PROTO type 1025*7c478bd9Sstevel@tonic-gate */ 1026*7c478bd9Sstevel@tonic-gate typedef struct { 1027*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_AGGR_IND */ 1028*7c478bd9Sstevel@tonic-gate uint32_t dl_key; /* Key identifying the group */ 1029*7c478bd9Sstevel@tonic-gate uint32_t dl_port; /* Identifying the NIC */ 1030*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of PHYS addr */ 1031*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PROTO */ 1032*7c478bd9Sstevel@tonic-gate } dl_aggr_ind_t; 1033*7c478bd9Sstevel@tonic-gate 1034*7c478bd9Sstevel@tonic-gate /* 1035*7c478bd9Sstevel@tonic-gate * DL_UNAGGR_REQ, M_PROTO type 1036*7c478bd9Sstevel@tonic-gate */ 1037*7c478bd9Sstevel@tonic-gate typedef struct { 1038*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* set to DL_UNAGGR_REQ */ 1039*7c478bd9Sstevel@tonic-gate uint32_t dl_key; /* Key identifying the group */ 1040*7c478bd9Sstevel@tonic-gate uint32_t dl_port; /* Identifying the NIC */ 1041*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_length; /* length of PHYS addr */ 1042*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_addr_offset; /* offset from start of M_PROTO */ 1043*7c478bd9Sstevel@tonic-gate } dl_unaggr_req_t; 1044*7c478bd9Sstevel@tonic-gate 1045*7c478bd9Sstevel@tonic-gate /* 1046*7c478bd9Sstevel@tonic-gate * DL_CAPABILITY_REQ, M_PROTO type 1047*7c478bd9Sstevel@tonic-gate */ 1048*7c478bd9Sstevel@tonic-gate typedef struct { 1049*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CAPABILITY_REQ */ 1050*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_sub_offset; /* options offset */ 1051*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_sub_length; /* options length */ 1052*7c478bd9Sstevel@tonic-gate /* Followed by a list of zero or more dl_capability_sub_t */ 1053*7c478bd9Sstevel@tonic-gate } dl_capability_req_t; 1054*7c478bd9Sstevel@tonic-gate 1055*7c478bd9Sstevel@tonic-gate /* 1056*7c478bd9Sstevel@tonic-gate * DL_CAPABILITY_ACK, M_PROTO type 1057*7c478bd9Sstevel@tonic-gate */ 1058*7c478bd9Sstevel@tonic-gate typedef struct { 1059*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CAPABILITY_ACK */ 1060*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_sub_offset; /* options offset */ 1061*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_sub_length; /* options length */ 1062*7c478bd9Sstevel@tonic-gate /* Followed by a list of zero or more dl_capability_sub_t */ 1063*7c478bd9Sstevel@tonic-gate } dl_capability_ack_t; 1064*7c478bd9Sstevel@tonic-gate 1065*7c478bd9Sstevel@tonic-gate /* 1066*7c478bd9Sstevel@tonic-gate * DL_CONTROL_REQ, M_PROTO type 1067*7c478bd9Sstevel@tonic-gate */ 1068*7c478bd9Sstevel@tonic-gate typedef struct { 1069*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CONTROL_REQ */ 1070*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_operation; /* add/delete/purge */ 1071*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_type; /* e.g. AH/ESP/ ... */ 1072*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_key_offset; /* offset of key */ 1073*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_key_length; /* length of key */ 1074*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_data_offset; /* offset of data */ 1075*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_data_length; /* length of data */ 1076*7c478bd9Sstevel@tonic-gate } dl_control_req_t; 1077*7c478bd9Sstevel@tonic-gate 1078*7c478bd9Sstevel@tonic-gate /* 1079*7c478bd9Sstevel@tonic-gate * DL_CONTROL_ACK, M_PROTO type 1080*7c478bd9Sstevel@tonic-gate */ 1081*7c478bd9Sstevel@tonic-gate typedef struct { 1082*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CONTROL_ACK */ 1083*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_operation; /* add/delete/purge */ 1084*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_type; /* e.g. AH/ESP/ ... */ 1085*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_key_offset; /* offset of key */ 1086*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_key_length; /* length of key */ 1087*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_data_offset; /* offset of data */ 1088*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_data_length; /* length of data */ 1089*7c478bd9Sstevel@tonic-gate } dl_control_ack_t; 1090*7c478bd9Sstevel@tonic-gate 1091*7c478bd9Sstevel@tonic-gate /* 1092*7c478bd9Sstevel@tonic-gate * DL_PASSIVE_REQ, M_PROTO type 1093*7c478bd9Sstevel@tonic-gate */ 1094*7c478bd9Sstevel@tonic-gate typedef struct { 1095*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; 1096*7c478bd9Sstevel@tonic-gate } dl_passive_req_t; 1097*7c478bd9Sstevel@tonic-gate 1098*7c478bd9Sstevel@tonic-gate /* 1099*7c478bd9Sstevel@tonic-gate * CONNECTION-ORIENTED SERVICE PRIMITIVES 1100*7c478bd9Sstevel@tonic-gate */ 1101*7c478bd9Sstevel@tonic-gate 1102*7c478bd9Sstevel@tonic-gate /* 1103*7c478bd9Sstevel@tonic-gate * DL_CONNECT_REQ, M_PROTO type 1104*7c478bd9Sstevel@tonic-gate */ 1105*7c478bd9Sstevel@tonic-gate typedef struct { 1106*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CONNECT_REQ */ 1107*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* len. of dlsap addr */ 1108*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset */ 1109*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_length; /* len. of QOS parm val */ 1110*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_offset; /* offset */ 1111*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_growth; /* set to zero */ 1112*7c478bd9Sstevel@tonic-gate } dl_connect_req_t; 1113*7c478bd9Sstevel@tonic-gate 1114*7c478bd9Sstevel@tonic-gate /* 1115*7c478bd9Sstevel@tonic-gate * DL_CONNECT_IND, M_PROTO type 1116*7c478bd9Sstevel@tonic-gate */ 1117*7c478bd9Sstevel@tonic-gate typedef struct { 1118*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CONNECT_IND */ 1119*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* provider's correl. token */ 1120*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_called_addr_length; /* length of called address */ 1121*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_called_addr_offset; /* offset from start of block */ 1122*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_calling_addr_length; /* length of calling address */ 1123*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_calling_addr_offset; /* offset from start of block */ 1124*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_length; /* length of qos structure */ 1125*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_offset; /* offset from start of block */ 1126*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_growth; /* set to zero */ 1127*7c478bd9Sstevel@tonic-gate } dl_connect_ind_t; 1128*7c478bd9Sstevel@tonic-gate 1129*7c478bd9Sstevel@tonic-gate /* 1130*7c478bd9Sstevel@tonic-gate * DL_CONNECT_RES, M_PROTO type 1131*7c478bd9Sstevel@tonic-gate */ 1132*7c478bd9Sstevel@tonic-gate typedef struct { 1133*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CONNECT_RES */ 1134*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* provider's correlation token */ 1135*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_resp_token; /* token of responding stream */ 1136*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_length; /* length of qos structure */ 1137*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_offset; /* offset from start of block */ 1138*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_growth; /* set to zero */ 1139*7c478bd9Sstevel@tonic-gate } dl_connect_res_t; 1140*7c478bd9Sstevel@tonic-gate 1141*7c478bd9Sstevel@tonic-gate /* 1142*7c478bd9Sstevel@tonic-gate * DL_CONNECT_CON, M_PROTO type 1143*7c478bd9Sstevel@tonic-gate */ 1144*7c478bd9Sstevel@tonic-gate typedef struct { 1145*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_CONNECT_CON */ 1146*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_resp_addr_length; /* responder's address len */ 1147*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_resp_addr_offset; /* offset from start of block */ 1148*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_length; /* length of qos structure */ 1149*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_offset; /* offset from start of block */ 1150*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_growth; /* set to zero */ 1151*7c478bd9Sstevel@tonic-gate } dl_connect_con_t; 1152*7c478bd9Sstevel@tonic-gate 1153*7c478bd9Sstevel@tonic-gate /* 1154*7c478bd9Sstevel@tonic-gate * DL_TOKEN_REQ, M_PCPROTO type 1155*7c478bd9Sstevel@tonic-gate */ 1156*7c478bd9Sstevel@tonic-gate typedef struct { 1157*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_TOKEN_REQ */ 1158*7c478bd9Sstevel@tonic-gate } dl_token_req_t; 1159*7c478bd9Sstevel@tonic-gate 1160*7c478bd9Sstevel@tonic-gate /* 1161*7c478bd9Sstevel@tonic-gate * DL_TOKEN_ACK, M_PCPROTO type 1162*7c478bd9Sstevel@tonic-gate */ 1163*7c478bd9Sstevel@tonic-gate typedef struct { 1164*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_TOKEN_ACK */ 1165*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_token; /* Connection response token */ 1166*7c478bd9Sstevel@tonic-gate }dl_token_ack_t; 1167*7c478bd9Sstevel@tonic-gate 1168*7c478bd9Sstevel@tonic-gate /* 1169*7c478bd9Sstevel@tonic-gate * DL_DISCONNECT_REQ, M_PROTO type 1170*7c478bd9Sstevel@tonic-gate */ 1171*7c478bd9Sstevel@tonic-gate typedef struct { 1172*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_DISCONNECT_REQ */ 1173*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_reason; /* norm., abnorm., perm. or trans. */ 1174*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* association with connect_ind */ 1175*7c478bd9Sstevel@tonic-gate } dl_disconnect_req_t; 1176*7c478bd9Sstevel@tonic-gate 1177*7c478bd9Sstevel@tonic-gate /* 1178*7c478bd9Sstevel@tonic-gate * DL_DISCONNECT_IND, M_PROTO type 1179*7c478bd9Sstevel@tonic-gate */ 1180*7c478bd9Sstevel@tonic-gate typedef struct { 1181*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_DISCONNECT_IND */ 1182*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_originator; /* USER or PROVIDER */ 1183*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_reason; /* permanent or transient */ 1184*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* association with connect_ind */ 1185*7c478bd9Sstevel@tonic-gate } dl_disconnect_ind_t; 1186*7c478bd9Sstevel@tonic-gate 1187*7c478bd9Sstevel@tonic-gate /* 1188*7c478bd9Sstevel@tonic-gate * DL_RESET_REQ, M_PROTO type 1189*7c478bd9Sstevel@tonic-gate */ 1190*7c478bd9Sstevel@tonic-gate typedef struct { 1191*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_RESET_REQ */ 1192*7c478bd9Sstevel@tonic-gate } dl_reset_req_t; 1193*7c478bd9Sstevel@tonic-gate 1194*7c478bd9Sstevel@tonic-gate /* 1195*7c478bd9Sstevel@tonic-gate * DL_RESET_IND, M_PROTO type 1196*7c478bd9Sstevel@tonic-gate */ 1197*7c478bd9Sstevel@tonic-gate typedef struct { 1198*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_RESET_IND */ 1199*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_originator; /* Provider or User */ 1200*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_reason; /* flow control, link error, resync */ 1201*7c478bd9Sstevel@tonic-gate } dl_reset_ind_t; 1202*7c478bd9Sstevel@tonic-gate 1203*7c478bd9Sstevel@tonic-gate /* 1204*7c478bd9Sstevel@tonic-gate * DL_RESET_RES, M_PROTO type 1205*7c478bd9Sstevel@tonic-gate */ 1206*7c478bd9Sstevel@tonic-gate typedef struct { 1207*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_RESET_RES */ 1208*7c478bd9Sstevel@tonic-gate } dl_reset_res_t; 1209*7c478bd9Sstevel@tonic-gate 1210*7c478bd9Sstevel@tonic-gate /* 1211*7c478bd9Sstevel@tonic-gate * DL_RESET_CON, M_PROTO type 1212*7c478bd9Sstevel@tonic-gate */ 1213*7c478bd9Sstevel@tonic-gate typedef struct { 1214*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_RESET_CON */ 1215*7c478bd9Sstevel@tonic-gate } dl_reset_con_t; 1216*7c478bd9Sstevel@tonic-gate 1217*7c478bd9Sstevel@tonic-gate 1218*7c478bd9Sstevel@tonic-gate /* 1219*7c478bd9Sstevel@tonic-gate * CONNECTIONLESS SERVICE PRIMITIVES 1220*7c478bd9Sstevel@tonic-gate */ 1221*7c478bd9Sstevel@tonic-gate 1222*7c478bd9Sstevel@tonic-gate /* 1223*7c478bd9Sstevel@tonic-gate * DL_UNITDATA_REQ, M_PROTO type, with M_DATA block(s) 1224*7c478bd9Sstevel@tonic-gate */ 1225*7c478bd9Sstevel@tonic-gate typedef struct { 1226*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_UNITDATA_REQ */ 1227*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* DLSAP length of dest. user */ 1228*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1229*7c478bd9Sstevel@tonic-gate dl_priority_t dl_priority; /* priority value */ 1230*7c478bd9Sstevel@tonic-gate } dl_unitdata_req_t; 1231*7c478bd9Sstevel@tonic-gate 1232*7c478bd9Sstevel@tonic-gate /* 1233*7c478bd9Sstevel@tonic-gate * DL_UNITDATA_IND, M_PROTO type, with M_DATA block(s) 1234*7c478bd9Sstevel@tonic-gate */ 1235*7c478bd9Sstevel@tonic-gate typedef struct { 1236*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_UNITDATA_IND */ 1237*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* DLSAP length of dest. user */ 1238*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1239*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* DLSAP addr length sender */ 1240*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1241*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_group_address; /* one if multicast/broadcast */ 1242*7c478bd9Sstevel@tonic-gate } dl_unitdata_ind_t; 1243*7c478bd9Sstevel@tonic-gate 1244*7c478bd9Sstevel@tonic-gate /* 1245*7c478bd9Sstevel@tonic-gate * DL_UDERROR_IND, M_PROTO type 1246*7c478bd9Sstevel@tonic-gate * (or M_PCPROTO type if LLI-based provider) 1247*7c478bd9Sstevel@tonic-gate */ 1248*7c478bd9Sstevel@tonic-gate typedef struct { 1249*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_UDERROR_IND */ 1250*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* Destination DLSAP */ 1251*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* Offset from start of block */ 1252*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_unix_errno; /* unix system error code */ 1253*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_errno; /* DLPI error code */ 1254*7c478bd9Sstevel@tonic-gate } dl_uderror_ind_t; 1255*7c478bd9Sstevel@tonic-gate 1256*7c478bd9Sstevel@tonic-gate /* 1257*7c478bd9Sstevel@tonic-gate * DL_UDQOS_REQ, M_PROTO type 1258*7c478bd9Sstevel@tonic-gate */ 1259*7c478bd9Sstevel@tonic-gate typedef struct { 1260*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_UDQOS_REQ */ 1261*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_length; /* requested qos byte length */ 1262*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_qos_offset; /* offset from start of block */ 1263*7c478bd9Sstevel@tonic-gate } dl_udqos_req_t; 1264*7c478bd9Sstevel@tonic-gate 1265*7c478bd9Sstevel@tonic-gate /* 1266*7c478bd9Sstevel@tonic-gate * Primitives to handle XID and TEST operations 1267*7c478bd9Sstevel@tonic-gate */ 1268*7c478bd9Sstevel@tonic-gate 1269*7c478bd9Sstevel@tonic-gate /* 1270*7c478bd9Sstevel@tonic-gate * DL_TEST_REQ, M_PROTO type 1271*7c478bd9Sstevel@tonic-gate */ 1272*7c478bd9Sstevel@tonic-gate typedef struct { 1273*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_TEST_REQ */ 1274*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1275*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* DLSAP length of dest. user */ 1276*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1277*7c478bd9Sstevel@tonic-gate } dl_test_req_t; 1278*7c478bd9Sstevel@tonic-gate 1279*7c478bd9Sstevel@tonic-gate /* 1280*7c478bd9Sstevel@tonic-gate * DL_TEST_IND, M_PROTO type 1281*7c478bd9Sstevel@tonic-gate */ 1282*7c478bd9Sstevel@tonic-gate typedef struct { 1283*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_TEST_IND */ 1284*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1285*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* dlsap length of dest. user */ 1286*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1287*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* dlsap length of source */ 1288*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1289*7c478bd9Sstevel@tonic-gate } dl_test_ind_t; 1290*7c478bd9Sstevel@tonic-gate 1291*7c478bd9Sstevel@tonic-gate /* 1292*7c478bd9Sstevel@tonic-gate * DL_TEST_RES, M_PROTO type 1293*7c478bd9Sstevel@tonic-gate */ 1294*7c478bd9Sstevel@tonic-gate typedef struct { 1295*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_TEST_RES */ 1296*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1297*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* DLSAP length of dest. user */ 1298*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1299*7c478bd9Sstevel@tonic-gate } dl_test_res_t; 1300*7c478bd9Sstevel@tonic-gate 1301*7c478bd9Sstevel@tonic-gate /* 1302*7c478bd9Sstevel@tonic-gate * DL_TEST_CON, M_PROTO type 1303*7c478bd9Sstevel@tonic-gate */ 1304*7c478bd9Sstevel@tonic-gate typedef struct { 1305*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_TEST_CON */ 1306*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1307*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* dlsap length of dest. user */ 1308*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1309*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* dlsap length of source */ 1310*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1311*7c478bd9Sstevel@tonic-gate } dl_test_con_t; 1312*7c478bd9Sstevel@tonic-gate 1313*7c478bd9Sstevel@tonic-gate /* 1314*7c478bd9Sstevel@tonic-gate * DL_XID_REQ, M_PROTO type 1315*7c478bd9Sstevel@tonic-gate */ 1316*7c478bd9Sstevel@tonic-gate typedef struct { 1317*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_XID_REQ */ 1318*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1319*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* dlsap length of dest. user */ 1320*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1321*7c478bd9Sstevel@tonic-gate } dl_xid_req_t; 1322*7c478bd9Sstevel@tonic-gate 1323*7c478bd9Sstevel@tonic-gate /* 1324*7c478bd9Sstevel@tonic-gate * DL_XID_IND, M_PROTO type 1325*7c478bd9Sstevel@tonic-gate */ 1326*7c478bd9Sstevel@tonic-gate typedef struct { 1327*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_XID_IND */ 1328*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1329*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* dlsap length of dest. user */ 1330*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1331*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* dlsap length of source */ 1332*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1333*7c478bd9Sstevel@tonic-gate } dl_xid_ind_t; 1334*7c478bd9Sstevel@tonic-gate 1335*7c478bd9Sstevel@tonic-gate /* 1336*7c478bd9Sstevel@tonic-gate * DL_XID_RES, M_PROTO type 1337*7c478bd9Sstevel@tonic-gate */ 1338*7c478bd9Sstevel@tonic-gate typedef struct { 1339*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_XID_RES */ 1340*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1341*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* DLSAP length of dest. user */ 1342*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1343*7c478bd9Sstevel@tonic-gate } dl_xid_res_t; 1344*7c478bd9Sstevel@tonic-gate 1345*7c478bd9Sstevel@tonic-gate /* 1346*7c478bd9Sstevel@tonic-gate * DL_XID_CON, M_PROTO type 1347*7c478bd9Sstevel@tonic-gate */ 1348*7c478bd9Sstevel@tonic-gate typedef struct { 1349*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_XID_CON */ 1350*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_flag; /* poll/final */ 1351*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* dlsap length of dest. user */ 1352*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1353*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* dlsap length of source */ 1354*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1355*7c478bd9Sstevel@tonic-gate } dl_xid_con_t; 1356*7c478bd9Sstevel@tonic-gate 1357*7c478bd9Sstevel@tonic-gate /* 1358*7c478bd9Sstevel@tonic-gate * ACKNOWLEDGED CONNECTIONLESS SERVICE PRIMITIVES 1359*7c478bd9Sstevel@tonic-gate */ 1360*7c478bd9Sstevel@tonic-gate 1361*7c478bd9Sstevel@tonic-gate /* 1362*7c478bd9Sstevel@tonic-gate * DL_DATA_ACK_REQ, M_PROTO type 1363*7c478bd9Sstevel@tonic-gate */ 1364*7c478bd9Sstevel@tonic-gate typedef struct { 1365*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_DATA_ACK_REQ */ 1366*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* User's correlation token */ 1367*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* length of destination addr */ 1368*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1369*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* length of source address */ 1370*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1371*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_priority; /* priority */ 1372*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_service_class; /* DL_RQST_RSP|DL_RQST_NORSP */ 1373*7c478bd9Sstevel@tonic-gate } dl_data_ack_req_t; 1374*7c478bd9Sstevel@tonic-gate 1375*7c478bd9Sstevel@tonic-gate /* 1376*7c478bd9Sstevel@tonic-gate * DL_DATA_ACK_IND, M_PROTO type 1377*7c478bd9Sstevel@tonic-gate */ 1378*7c478bd9Sstevel@tonic-gate typedef struct { 1379*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_DATA_ACK_IND */ 1380*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* length of destination addr */ 1381*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1382*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* length of source address */ 1383*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1384*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_priority; /* pri. for data unit transm. */ 1385*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_service_class; /* DL_RQST_RSP|DL_RQST_NORSP */ 1386*7c478bd9Sstevel@tonic-gate } dl_data_ack_ind_t; 1387*7c478bd9Sstevel@tonic-gate 1388*7c478bd9Sstevel@tonic-gate /* 1389*7c478bd9Sstevel@tonic-gate * DL_DATA_ACK_STATUS_IND, M_PROTO type 1390*7c478bd9Sstevel@tonic-gate */ 1391*7c478bd9Sstevel@tonic-gate typedef struct { 1392*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_DATA_ACK_STATUS_IND */ 1393*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* User's correlation token */ 1394*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_status; /* success or failure of previous req */ 1395*7c478bd9Sstevel@tonic-gate } dl_data_ack_status_ind_t; 1396*7c478bd9Sstevel@tonic-gate 1397*7c478bd9Sstevel@tonic-gate /* 1398*7c478bd9Sstevel@tonic-gate * DL_REPLY_REQ, M_PROTO type 1399*7c478bd9Sstevel@tonic-gate */ 1400*7c478bd9Sstevel@tonic-gate typedef struct { 1401*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_REPLY_REQ */ 1402*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* User's correlation token */ 1403*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* destination address length */ 1404*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1405*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* source address length */ 1406*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1407*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_priority; /* pri for data unit trans. */ 1408*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_service_class; 1409*7c478bd9Sstevel@tonic-gate } dl_reply_req_t; 1410*7c478bd9Sstevel@tonic-gate 1411*7c478bd9Sstevel@tonic-gate /* 1412*7c478bd9Sstevel@tonic-gate * DL_REPLY_IND, M_PROTO type 1413*7c478bd9Sstevel@tonic-gate */ 1414*7c478bd9Sstevel@tonic-gate typedef struct { 1415*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_REPLY_IND */ 1416*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_length; /* destination address length */ 1417*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_dest_addr_offset; /* offset from start of block */ 1418*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* length of source address */ 1419*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1420*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_priority; /* pri for data unit trans. */ 1421*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_service_class; /* DL_RQST_RSP|DL_RQST_NORSP */ 1422*7c478bd9Sstevel@tonic-gate } dl_reply_ind_t; 1423*7c478bd9Sstevel@tonic-gate 1424*7c478bd9Sstevel@tonic-gate /* 1425*7c478bd9Sstevel@tonic-gate * DL_REPLY_STATUS_IND, M_PROTO type 1426*7c478bd9Sstevel@tonic-gate */ 1427*7c478bd9Sstevel@tonic-gate typedef struct { 1428*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_REPLY_STATUS_IND */ 1429*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* User's correlation token */ 1430*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_status; /* success or failure of previous req */ 1431*7c478bd9Sstevel@tonic-gate } dl_reply_status_ind_t; 1432*7c478bd9Sstevel@tonic-gate 1433*7c478bd9Sstevel@tonic-gate /* 1434*7c478bd9Sstevel@tonic-gate * DL_REPLY_UPDATE_REQ, M_PROTO type 1435*7c478bd9Sstevel@tonic-gate */ 1436*7c478bd9Sstevel@tonic-gate typedef struct { 1437*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_REPLY_UPDATE_REQ */ 1438*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* user's correlation token */ 1439*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_length; /* length of source address */ 1440*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_src_addr_offset; /* offset from start of block */ 1441*7c478bd9Sstevel@tonic-gate } dl_reply_update_req_t; 1442*7c478bd9Sstevel@tonic-gate 1443*7c478bd9Sstevel@tonic-gate /* 1444*7c478bd9Sstevel@tonic-gate * DL_REPLY_UPDATE_STATUS_IND, M_PROTO type 1445*7c478bd9Sstevel@tonic-gate */ 1446*7c478bd9Sstevel@tonic-gate typedef struct { 1447*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; /* DL_REPLY_UPDATE_STATUS_IND */ 1448*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_correlation; /* User's correlation token */ 1449*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_status; /* success or failure of previous req */ 1450*7c478bd9Sstevel@tonic-gate } dl_reply_update_status_ind_t; 1451*7c478bd9Sstevel@tonic-gate 1452*7c478bd9Sstevel@tonic-gate union DL_primitives { 1453*7c478bd9Sstevel@tonic-gate t_uscalar_t dl_primitive; 1454*7c478bd9Sstevel@tonic-gate dl_info_req_t info_req; 1455*7c478bd9Sstevel@tonic-gate dl_info_ack_t info_ack; 1456*7c478bd9Sstevel@tonic-gate dl_attach_req_t attach_req; 1457*7c478bd9Sstevel@tonic-gate dl_detach_req_t detach_req; 1458*7c478bd9Sstevel@tonic-gate dl_bind_req_t bind_req; 1459*7c478bd9Sstevel@tonic-gate dl_bind_ack_t bind_ack; 1460*7c478bd9Sstevel@tonic-gate dl_unbind_req_t unbind_req; 1461*7c478bd9Sstevel@tonic-gate dl_subs_bind_req_t subs_bind_req; 1462*7c478bd9Sstevel@tonic-gate dl_subs_bind_ack_t subs_bind_ack; 1463*7c478bd9Sstevel@tonic-gate dl_subs_unbind_req_t subs_unbind_req; 1464*7c478bd9Sstevel@tonic-gate dl_ok_ack_t ok_ack; 1465*7c478bd9Sstevel@tonic-gate dl_error_ack_t error_ack; 1466*7c478bd9Sstevel@tonic-gate dl_connect_req_t connect_req; 1467*7c478bd9Sstevel@tonic-gate dl_connect_ind_t connect_ind; 1468*7c478bd9Sstevel@tonic-gate dl_connect_res_t connect_res; 1469*7c478bd9Sstevel@tonic-gate dl_connect_con_t connect_con; 1470*7c478bd9Sstevel@tonic-gate dl_token_req_t token_req; 1471*7c478bd9Sstevel@tonic-gate dl_token_ack_t token_ack; 1472*7c478bd9Sstevel@tonic-gate dl_disconnect_req_t disconnect_req; 1473*7c478bd9Sstevel@tonic-gate dl_disconnect_ind_t disconnect_ind; 1474*7c478bd9Sstevel@tonic-gate dl_reset_req_t reset_req; 1475*7c478bd9Sstevel@tonic-gate dl_reset_ind_t reset_ind; 1476*7c478bd9Sstevel@tonic-gate dl_reset_res_t reset_res; 1477*7c478bd9Sstevel@tonic-gate dl_reset_con_t reset_con; 1478*7c478bd9Sstevel@tonic-gate dl_unitdata_req_t unitdata_req; 1479*7c478bd9Sstevel@tonic-gate dl_unitdata_ind_t unitdata_ind; 1480*7c478bd9Sstevel@tonic-gate dl_uderror_ind_t uderror_ind; 1481*7c478bd9Sstevel@tonic-gate dl_udqos_req_t udqos_req; 1482*7c478bd9Sstevel@tonic-gate dl_enabmulti_req_t enabmulti_req; 1483*7c478bd9Sstevel@tonic-gate dl_disabmulti_req_t disabmulti_req; 1484*7c478bd9Sstevel@tonic-gate dl_promiscon_req_t promiscon_req; 1485*7c478bd9Sstevel@tonic-gate dl_promiscoff_req_t promiscoff_req; 1486*7c478bd9Sstevel@tonic-gate dl_phys_addr_req_t physaddr_req; 1487*7c478bd9Sstevel@tonic-gate dl_phys_addr_ack_t physaddr_ack; 1488*7c478bd9Sstevel@tonic-gate dl_set_phys_addr_req_t set_physaddr_req; 1489*7c478bd9Sstevel@tonic-gate dl_get_statistics_req_t get_statistics_req; 1490*7c478bd9Sstevel@tonic-gate dl_get_statistics_ack_t get_statistics_ack; 1491*7c478bd9Sstevel@tonic-gate dl_notify_req_t notify_req; 1492*7c478bd9Sstevel@tonic-gate dl_notify_ack_t notify_ack; 1493*7c478bd9Sstevel@tonic-gate dl_notify_ind_t notify_ind; 1494*7c478bd9Sstevel@tonic-gate dl_aggr_req_t aggr_req; 1495*7c478bd9Sstevel@tonic-gate dl_aggr_ind_t aggr_ind; 1496*7c478bd9Sstevel@tonic-gate dl_unaggr_req_t unaggr_req; 1497*7c478bd9Sstevel@tonic-gate dl_test_req_t test_req; 1498*7c478bd9Sstevel@tonic-gate dl_test_ind_t test_ind; 1499*7c478bd9Sstevel@tonic-gate dl_test_res_t test_res; 1500*7c478bd9Sstevel@tonic-gate dl_test_con_t test_con; 1501*7c478bd9Sstevel@tonic-gate dl_xid_req_t xid_req; 1502*7c478bd9Sstevel@tonic-gate dl_xid_ind_t xid_ind; 1503*7c478bd9Sstevel@tonic-gate dl_xid_res_t xid_res; 1504*7c478bd9Sstevel@tonic-gate dl_xid_con_t xid_con; 1505*7c478bd9Sstevel@tonic-gate dl_data_ack_req_t data_ack_req; 1506*7c478bd9Sstevel@tonic-gate dl_data_ack_ind_t data_ack_ind; 1507*7c478bd9Sstevel@tonic-gate dl_data_ack_status_ind_t data_ack_status_ind; 1508*7c478bd9Sstevel@tonic-gate dl_reply_req_t reply_req; 1509*7c478bd9Sstevel@tonic-gate dl_reply_ind_t reply_ind; 1510*7c478bd9Sstevel@tonic-gate dl_reply_status_ind_t reply_status_ind; 1511*7c478bd9Sstevel@tonic-gate dl_reply_update_req_t reply_update_req; 1512*7c478bd9Sstevel@tonic-gate dl_reply_update_status_ind_t reply_update_status_ind; 1513*7c478bd9Sstevel@tonic-gate dl_capability_req_t capability_req; 1514*7c478bd9Sstevel@tonic-gate dl_capability_ack_t capability_ack; 1515*7c478bd9Sstevel@tonic-gate dl_control_req_t control_req; 1516*7c478bd9Sstevel@tonic-gate dl_control_ack_t control_ack; 1517*7c478bd9Sstevel@tonic-gate dl_passive_req_t passive_req; 1518*7c478bd9Sstevel@tonic-gate }; 1519*7c478bd9Sstevel@tonic-gate 1520*7c478bd9Sstevel@tonic-gate #define DL_INFO_REQ_SIZE sizeof (dl_info_req_t) 1521*7c478bd9Sstevel@tonic-gate #define DL_INFO_ACK_SIZE sizeof (dl_info_ack_t) 1522*7c478bd9Sstevel@tonic-gate #define DL_ATTACH_REQ_SIZE sizeof (dl_attach_req_t) 1523*7c478bd9Sstevel@tonic-gate #define DL_DETACH_REQ_SIZE sizeof (dl_detach_req_t) 1524*7c478bd9Sstevel@tonic-gate #define DL_BIND_REQ_SIZE sizeof (dl_bind_req_t) 1525*7c478bd9Sstevel@tonic-gate #define DL_BIND_ACK_SIZE sizeof (dl_bind_ack_t) 1526*7c478bd9Sstevel@tonic-gate #define DL_UNBIND_REQ_SIZE sizeof (dl_unbind_req_t) 1527*7c478bd9Sstevel@tonic-gate #define DL_SUBS_BIND_REQ_SIZE sizeof (dl_subs_bind_req_t) 1528*7c478bd9Sstevel@tonic-gate #define DL_SUBS_BIND_ACK_SIZE sizeof (dl_subs_bind_ack_t) 1529*7c478bd9Sstevel@tonic-gate #define DL_SUBS_UNBIND_REQ_SIZE sizeof (dl_subs_unbind_req_t) 1530*7c478bd9Sstevel@tonic-gate #define DL_OK_ACK_SIZE sizeof (dl_ok_ack_t) 1531*7c478bd9Sstevel@tonic-gate #define DL_ERROR_ACK_SIZE sizeof (dl_error_ack_t) 1532*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_REQ_SIZE sizeof (dl_connect_req_t) 1533*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_IND_SIZE sizeof (dl_connect_ind_t) 1534*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_RES_SIZE sizeof (dl_connect_res_t) 1535*7c478bd9Sstevel@tonic-gate #define DL_CONNECT_CON_SIZE sizeof (dl_connect_con_t) 1536*7c478bd9Sstevel@tonic-gate #define DL_TOKEN_REQ_SIZE sizeof (dl_token_req_t) 1537*7c478bd9Sstevel@tonic-gate #define DL_TOKEN_ACK_SIZE sizeof (dl_token_ack_t) 1538*7c478bd9Sstevel@tonic-gate #define DL_DISCONNECT_REQ_SIZE sizeof (dl_disconnect_req_t) 1539*7c478bd9Sstevel@tonic-gate #define DL_DISCONNECT_IND_SIZE sizeof (dl_disconnect_ind_t) 1540*7c478bd9Sstevel@tonic-gate #define DL_RESET_REQ_SIZE sizeof (dl_reset_req_t) 1541*7c478bd9Sstevel@tonic-gate #define DL_RESET_IND_SIZE sizeof (dl_reset_ind_t) 1542*7c478bd9Sstevel@tonic-gate #define DL_RESET_RES_SIZE sizeof (dl_reset_res_t) 1543*7c478bd9Sstevel@tonic-gate #define DL_RESET_CON_SIZE sizeof (dl_reset_con_t) 1544*7c478bd9Sstevel@tonic-gate #define DL_UNITDATA_REQ_SIZE sizeof (dl_unitdata_req_t) 1545*7c478bd9Sstevel@tonic-gate #define DL_UNITDATA_IND_SIZE sizeof (dl_unitdata_ind_t) 1546*7c478bd9Sstevel@tonic-gate #define DL_UDERROR_IND_SIZE sizeof (dl_uderror_ind_t) 1547*7c478bd9Sstevel@tonic-gate #define DL_UDQOS_REQ_SIZE sizeof (dl_udqos_req_t) 1548*7c478bd9Sstevel@tonic-gate #define DL_ENABMULTI_REQ_SIZE sizeof (dl_enabmulti_req_t) 1549*7c478bd9Sstevel@tonic-gate #define DL_DISABMULTI_REQ_SIZE sizeof (dl_disabmulti_req_t) 1550*7c478bd9Sstevel@tonic-gate #define DL_PROMISCON_REQ_SIZE sizeof (dl_promiscon_req_t) 1551*7c478bd9Sstevel@tonic-gate #define DL_PROMISCOFF_REQ_SIZE sizeof (dl_promiscoff_req_t) 1552*7c478bd9Sstevel@tonic-gate #define DL_PHYS_ADDR_REQ_SIZE sizeof (dl_phys_addr_req_t) 1553*7c478bd9Sstevel@tonic-gate #define DL_PHYS_ADDR_ACK_SIZE sizeof (dl_phys_addr_ack_t) 1554*7c478bd9Sstevel@tonic-gate #define DL_SET_PHYS_ADDR_REQ_SIZE sizeof (dl_set_phys_addr_req_t) 1555*7c478bd9Sstevel@tonic-gate #define DL_GET_STATISTICS_REQ_SIZE sizeof (dl_get_statistics_req_t) 1556*7c478bd9Sstevel@tonic-gate #define DL_GET_STATISTICS_ACK_SIZE sizeof (dl_get_statistics_ack_t) 1557*7c478bd9Sstevel@tonic-gate #define DL_NOTIFY_REQ_SIZE sizeof (dl_notify_req_t) 1558*7c478bd9Sstevel@tonic-gate #define DL_NOTIFY_ACK_SIZE sizeof (dl_notify_ack_t) 1559*7c478bd9Sstevel@tonic-gate #define DL_NOTIFY_IND_SIZE sizeof (dl_notify_ind_t) 1560*7c478bd9Sstevel@tonic-gate #define DL_AGGR_REQ_SIZE sizeof (dl_aggr_req_t) 1561*7c478bd9Sstevel@tonic-gate #define DL_AGGR_IND_SIZE sizeof (dl_aggr_ind_t) 1562*7c478bd9Sstevel@tonic-gate #define DL_UNAGGR_REQ_SIZE sizeof (dl_unaggr_req_t) 1563*7c478bd9Sstevel@tonic-gate #define DL_XID_REQ_SIZE sizeof (dl_xid_req_t) 1564*7c478bd9Sstevel@tonic-gate #define DL_XID_IND_SIZE sizeof (dl_xid_ind_t) 1565*7c478bd9Sstevel@tonic-gate #define DL_XID_RES_SIZE sizeof (dl_xid_res_t) 1566*7c478bd9Sstevel@tonic-gate #define DL_XID_CON_SIZE sizeof (dl_xid_con_t) 1567*7c478bd9Sstevel@tonic-gate #define DL_TEST_REQ_SIZE sizeof (dl_test_req_t) 1568*7c478bd9Sstevel@tonic-gate #define DL_TEST_IND_SIZE sizeof (dl_test_ind_t) 1569*7c478bd9Sstevel@tonic-gate #define DL_TEST_RES_SIZE sizeof (dl_test_res_t) 1570*7c478bd9Sstevel@tonic-gate #define DL_TEST_CON_SIZE sizeof (dl_test_con_t) 1571*7c478bd9Sstevel@tonic-gate #define DL_DATA_ACK_REQ_SIZE sizeof (dl_data_ack_req_t) 1572*7c478bd9Sstevel@tonic-gate #define DL_DATA_ACK_IND_SIZE sizeof (dl_data_ack_ind_t) 1573*7c478bd9Sstevel@tonic-gate #define DL_DATA_ACK_STATUS_IND_SIZE sizeof (dl_data_ack_status_ind_t) 1574*7c478bd9Sstevel@tonic-gate #define DL_REPLY_REQ_SIZE sizeof (dl_reply_req_t) 1575*7c478bd9Sstevel@tonic-gate #define DL_REPLY_IND_SIZE sizeof (dl_reply_ind_t) 1576*7c478bd9Sstevel@tonic-gate #define DL_REPLY_STATUS_IND_SIZE sizeof (dl_reply_status_ind_t) 1577*7c478bd9Sstevel@tonic-gate #define DL_REPLY_UPDATE_REQ_SIZE sizeof (dl_reply_update_req_t) 1578*7c478bd9Sstevel@tonic-gate #define DL_REPLY_UPDATE_STATUS_IND_SIZE sizeof (dl_reply_update_status_ind_t) 1579*7c478bd9Sstevel@tonic-gate #define DL_CAPABILITY_REQ_SIZE sizeof (dl_capability_req_t) 1580*7c478bd9Sstevel@tonic-gate #define DL_CAPABILITY_ACK_SIZE sizeof (dl_capability_ack_t) 1581*7c478bd9Sstevel@tonic-gate #define DL_CONTROL_REQ_SIZE sizeof (dl_control_req_t) 1582*7c478bd9Sstevel@tonic-gate #define DL_CONTROL_ACK_SIZE sizeof (dl_control_ack_t) 1583*7c478bd9Sstevel@tonic-gate #define DL_PASSIVE_REQ_SIZE sizeof (dl_passive_req_t) 1584*7c478bd9Sstevel@tonic-gate 1585*7c478bd9Sstevel@tonic-gate #ifdef _KERNEL 1586*7c478bd9Sstevel@tonic-gate /* 1587*7c478bd9Sstevel@tonic-gate * The following are unstable, internal DLPI utility routines. 1588*7c478bd9Sstevel@tonic-gate */ 1589*7c478bd9Sstevel@tonic-gate extern void dlbindack(queue_t *, mblk_t *, t_scalar_t, void *, t_uscalar_t, 1590*7c478bd9Sstevel@tonic-gate t_uscalar_t, t_uscalar_t); 1591*7c478bd9Sstevel@tonic-gate extern void dlokack(queue_t *, mblk_t *, t_uscalar_t); 1592*7c478bd9Sstevel@tonic-gate extern void dlerrorack(queue_t *, mblk_t *, t_uscalar_t, t_uscalar_t, 1593*7c478bd9Sstevel@tonic-gate t_uscalar_t); 1594*7c478bd9Sstevel@tonic-gate extern void dluderrorind(queue_t *, mblk_t *, void *, t_uscalar_t, 1595*7c478bd9Sstevel@tonic-gate t_uscalar_t, t_uscalar_t); 1596*7c478bd9Sstevel@tonic-gate extern void dlphysaddrack(queue_t *, mblk_t *, void *, t_uscalar_t); 1597*7c478bd9Sstevel@tonic-gate extern void dlcapabsetqid(dl_mid_t *, const queue_t *); 1598*7c478bd9Sstevel@tonic-gate extern boolean_t dlcapabcheckqid(const dl_mid_t *, const queue_t *); 1599*7c478bd9Sstevel@tonic-gate extern void dlnotifyack(queue_t *, mblk_t *, uint32_t); 1600*7c478bd9Sstevel@tonic-gate #endif /* _KERNEL */ 1601*7c478bd9Sstevel@tonic-gate 1602*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 1603*7c478bd9Sstevel@tonic-gate } 1604*7c478bd9Sstevel@tonic-gate #endif 1605*7c478bd9Sstevel@tonic-gate 1606*7c478bd9Sstevel@tonic-gate #endif /* _SYS_DLPI_H */ 1607