1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
23/*	  All Rights Reserved  	*/
24
25
26#ident	"%Z%%M%	%I%	%E% SMI"
27
28#ifndef _BNU_DK_H
29#define _BNU_DK_H
30
31#ifdef DIAL
32#define GLOBAL static
33#define EXTERN static
34#else
35#define EXTERN extern
36#define GLOBAL
37#endif
38
39/*
40 *	DATAKIT VCS User Level definitions
41 *		@(#)dk.h	2.13+BNU DKHOST 87/06/01
42 *
43 *	CommKit(R) Software - Datakit(R) VCS Interface Release
44 */
45
46
47/*
48 *	ioctl codes
49 */
50
51#define	DKIODIAL	(('k'<<8)|0)	/* dial out */
52#define	DKIOCNEW	(('k'<<8)|1)	/* offer a service */
53#define	DKIOCREQ	(('k'<<8)|2)	/* request service (SU only) */
54#define	DKIORESET	(('k'<<8)|3)	/* reset interface */
55#define DKKMCSET	(('k'<<8)|4)	/* associate logical interface
56					   with physical KMC # */
57
58#define DKIOCSPL	(('s'<<8)|1)	/* splice two circuits together (SU only) */
59#define	DIOCSWAIT	(('s'<<8)|2)	/* wait for splice to take place */
60
61
62/*     driver control        */
63
64#define DIOCEXCL	(('d'<<8)|1)	/* exclusive use */
65#define DIOCNXCL	(('d'<<8)|2)	/* reset exclusive use */
66#define	DIOCRMODE	(('d'<<8)|3)	/* set receiver termination modes */
67#define	DIOCQQABO	(('d'<<8)|4)	/* inquire status of last read */
68#define	DIOCSIG		(('d'<<8)|5)	/* start short read, signal when done */
69
70#define	DIOCXCTL	(('d'<<8)|8)	/* send ctl envelope on next write */
71#define DIOCFLUSH	(('d'<<8)|9)	/* flush output */
72#define DIOCSETK	(('d'<<8)|10)	/* debug info from kmc xmit&recv */
73#define	DIOCQSTAT	(('d'<<8)|11)	/* return 3B hw/fw log data */
74#define	DIOCBSIZE	(('d'<<8)|12)	/* set URP block size */
75#define	DIOCTIME	(('d'<<8)|13)	/* set stagnation timeout value */
76#define	DIOCTRAP	(('d'<<8)|14)	/* activate trsave trace for channel */
77
78/*	interface memory read/write codes	 */
79
80#define	DIOCHWREAD	(('d'<<8)|15)	/* read interface RAM */
81#define	DIOCHWRITE	(('d'<<8)|16)	/* write interface RAM */
82
83/*	diagnostic control codes	*/
84
85#define	DIOCDKDGN	(('d'<<8)|17)	/* execute on-line diagnostics */
86#define	DIOCDGNSET	(('d'<<8)|18)	/* initialize diagnostic mode */
87#define	DIOCDGNCLR	(('d'<<8)|19)	/* clear diagnostic mode */
88
89/*	3b2/PE codes			*/
90#define TCDKIDLD	(('d'<<8)|20)	/* download the PE */
91#define TCDKIFCF	(('d'<<8)|21)	/* Force call to function */
92#define TCDKIRST	(('d'<<8)|22)	/* Reset the PE board */
93#define	TCDKISYSG	(('d'<<8)|23)	/*sysgen the PE board */
94
95/* Get info from driver */
96#define DIOCINFO	(('d'<<8)|24)	/* get chans per interface*/
97#define	TCDKIBUG	(('d'<<8)|25)	/*turn debug on on the PE board */
98#define	DIOOPEN 	(('d'<<8)|26)	/* inquire channel open status*/
99/*	special codes used by dkxstdio	*/
100
101#define	DXIOEXIT	(('D'<<8)|'T')	/* process exit code */
102
103/*
104 *	structure returned from DIOCQQABO giving receive status
105 */
106struct dkqqabo {
107	short	rcv_resid ;		/* residual length in buffer */
108	short	rcv_reason ;		/* set of bits giving reasons */
109	short	rcv_ctlchar ;		/* ctl char that finished block */
110} ;
111
112/*
113 *   receive mode, and completion indicators
114 *	also defined in sys/dkit.h
115 */
116
117#ifndef DKR_FULL
118#define	DKR_FULL	01	/* buffer full, normal read done */
119#define	DKR_CNTL	02	/* read terminated on control character */
120#define	DKR_ABORT	010	/* receive aborted by higher level command */
121#define	DKR_BLOCK	040	/* end of block */
122#define	DKR_TIME	0100	/* end of time limit reached */
123#endif
124
125
126
127/*
128 *	structure passed with ioctl to request a service
129 *	actually used as a general-purpose struct to pass
130 *	info from a kernel ioctl to user space.
131 */
132struct diocreq {
133	short	req_traffic ;		/* traffic intensity generated */
134	short	req_1param ;		/* typ: service requested */
135	short	req_2param ;		/* parameter to server */
136} ;
137
138
139/*
140 *	values returned from service request
141 */
142#define	req_error	req_traffic
143#define	req_driver	req_traffic
144#define	req_chans	req_traffic
145#define	req_chmin	req_1param
146
147
148/*
149 *	structure received by server when new connection made
150 */
151struct mgrmsg {
152	short	m_chan ;		/* channel number of connection */
153	unsigned short	m_tstamp ;	/* time stamp of request */
154	char *	m_protocol ;		/* protocol options from user */
155	char *	m_origtype ;		/* type of originating device */
156	char *	m_parm ;		/* parameter string from user */
157	char *	m_uid ;			/* param from system/user, aka UID */
158	char *	m_dial ;		/* dial string entered */
159	char *	m_source ;		/* originator, as known to remote node */
160	char *	m_lname ;		/* originator, as known to local node */
161	char *	m_service ;		/* service type requested by user */
162	char *	m_lflag ;		/* L == call from local node,
163					 * R == call from a remote one.   */
164	char *	m_srcnode;		/* originating node (last segment)   */
165	char *	m_srcmod;		/* originating mod		     */
166	char *	m_srcchan;		/* originating channel		     */
167	char *	m_cflag;		/* call flag: F=first, P=previous    */
168	char *	m_errmsg ;		/* possible error msg if m_chan <= 0 */
169} ;
170
171
172
173/*
174 *	routines declared in libdk.a
175 */
176EXTERN char		*dknamer();
177EXTERN char		*dtnamer();
178EXTERN char		*dxnamer();
179EXTERN char		*dkfcanon(), *dktcanon();
180EXTERN char		*dkerr();
181EXTERN char		*maphost(), *miscfield();
182#ifndef DIAL
183EXTERN char		mh_hostname[];
184#endif
185EXTERN struct mgrmsg	*dkmgr();
186
187EXTERN int		dk_verbose, dk_errno;
188
189
190/*
191 *	structure passed with ioctl to request a splice
192 */
193struct diocspl {
194	short	spl_fdin;		/* the other file descriptor */
195	short	spl_un1used;
196	short	spl_un2used;
197} ;
198
199/*
200 * Default file names
201 */
202
203#define SRVTAB "/etc/dksrvtab"
204#define UIDTAB "/etc/dkuidtab"
205#define SRVLOG "/usr/adm/dksrvlog"
206#define HOSTAB "/etc/dkhosts"
207#define DOTAB  "/usr/lib/dkdotab"
208
209/*
210 * Number of longs in the stat array returned by the firmware
211 */
212#define	STATLEN	16
213
214#endif
215