xref: /csrg-svn/sys/vax/datakit/dk.h (revision 38621)
1*38621Skarels /*
2*38621Skarels  *	DATAKIT VCS User Level definitions
3*38621Skarels  *		@(#)dk.h	2.1 DKHOST 84/07/03
4*38621Skarels  */
5*38621Skarels 
6*38621Skarels 
7*38621Skarels /*
8*38621Skarels  *	ioctl codes
9*38621Skarels  */
10*38621Skarels 
11*38621Skarels /*
12*38621Skarels  * Note: these take paramters, but the copyin-copyout must be handled in
13*38621Skarels  * the driver.
14*38621Skarels  */
15*38621Skarels #define	DKIODIAL	_IO(k, 0) /* dial out */
16*38621Skarels #define	DKIOCNEW	_IO(k, 1) /* offer a service */
17*38621Skarels #define	DKIOCREQ	_IO(k, 2) /* request service (SU only) */
18*38621Skarels #define	DKIOCSPL	_IO(s, 1) /* splice two circuits (SU only) */
19*38621Skarels #define	DIOCSWAIT	_IO(s, 2) /* wait for splice to take place */
20*38621Skarels 
21*38621Skarels /*     driver control        */
22*38621Skarels 
23*38621Skarels #define DIOCEXCL	_IO(d, 1)	/* exclusive use */
24*38621Skarels #define DIOCNXCL	_IO(d, 2)	/* reset exclusive use */
25*38621Skarels #define	DIOCRMODE	_IOW(d, 3, short) /* set receiver termination modes */
26*38621Skarels #define	DIOCQQABO	_IOR(d, 4, struct dkqqabo) /* inquire status of last read */
27*38621Skarels #define	DIOCXCTL	_IOW(d, 8, short) /* send ctl envelope on next write */
28*38621Skarels #define DIOCFLUSH	_IO(d, 9)	/* flush output */
29*38621Skarels #define DIOCSETK	_IOW(d, 10, short) /* debug info from kmc xmit&recv */
30*38621Skarels #define	DIOCXWIN	_IOW(d, 11, struct diocxwin)	/* Set window size */
31*38621Skarels #define	KIOCINIT	_IO(d, 12)	/* Reinitialize transmitter */
32*38621Skarels #define	DIOCRESET	_IOW(d, 13, short)	/* Reset a channel */
33*38621Skarels #define	DIOCCTYPE	_IOW(d, 14, struct diocctype)	/* Set conn type */
34*38621Skarels #define	DIOCINFO	_IOR(d, 15, struct diocinfo)	/* Get chan #, max # */
35*38621Skarels #define	DIOCSTAT	_IOWR(d, 16, int)	/* Check if channel open */
36*38621Skarels 
37*38621Skarels /*	special codes used by dkxstdio	*/
38*38621Skarels #define	DXIOEXIT	_IOW(D, 'T', int)  /* process exit code */
39*38621Skarels 
40*38621Skarels /*
41*38621Skarels  *	structure returned from DIOCQQABO giving receive status
42*38621Skarels  */
43*38621Skarels struct dkqqabo {
44*38621Skarels 	short	rcv_resid ;		/* residual length in buffer */
45*38621Skarels 	short	rcv_reason ;		/* set of bits giving reasons */
46*38621Skarels 	short	rcv_ctlchar ;		/* ctl char that finished block */
47*38621Skarels } ;
48*38621Skarels 
49*38621Skarels /*
50*38621Skarels  *   receive mode, and completion indicators
51*38621Skarels  *	also defined in sys/dkit.h
52*38621Skarels  */
53*38621Skarels 
54*38621Skarels #ifndef DKR_FULL
55*38621Skarels #define	DKR_FULL	01	/* buffer full, normal read done */
56*38621Skarels #define	DKR_CNTL	02	/* read terminated on control character */
57*38621Skarels #define	DKR_ABORT	010	/* receive aborted by higher level command */
58*38621Skarels #define	DKR_BLOCK	040	/* end of block */
59*38621Skarels #define	DKR_TIME	0100	/* end of time limit reached */
60*38621Skarels #endif
61*38621Skarels 
62*38621Skarels 
63*38621Skarels 
64*38621Skarels /*
65*38621Skarels  *	structure passed with ioctl to request a service
66*38621Skarels  */
67*38621Skarels struct diocreq {
68*38621Skarels 	short	req_traffic ;		/* traffic intensity generated */
69*38621Skarels 	short	req_1param ;		/* typ:  service requested */
70*38621Skarels 	short	req_2param ;		/* parameter to server */
71*38621Skarels } ;
72*38621Skarels 
73*38621Skarels /*
74*38621Skarels  *	structure passed to dial a number
75*38621Skarels  */
76*38621Skarels struct diocdial {
77*38621Skarels 		struct	diocreq iocb;
78*38621Skarels 		char	dialstring[112-sizeof (struct diocreq)];
79*38621Skarels };
80*38621Skarels 
81*38621Skarels /*
82*38621Skarels  * Structure passed to set URP limits
83*38621Skarels  */
84*38621Skarels struct diocxwin	{
85*38621Skarels 	int		xwin_msgsize;	/* Size of one message */
86*38621Skarels 	unsigned char	xwin_nmsg;	/* Number of outstanding messages */
87*38621Skarels };
88*38621Skarels 
89*38621Skarels /*
90*38621Skarels  * Structure passed to request configuration info
91*38621Skarels  */
92*38621Skarels struct diocinfo {
93*38621Skarels 	short	dioc_nchan;		/* Number of channels configured */
94*38621Skarels 	short	dioc_channum;		/* This channel number */
95*38621Skarels 	short	dioc_commchan;		/* Common supervisory channel */
96*38621Skarels };
97*38621Skarels 
98*38621Skarels /*
99*38621Skarels  *	structure passed with ioctl to request a splice
100*38621Skarels  */
101*38621Skarels struct diocspl {
102*38621Skarels 	short	spl_fdin;		/* the other file descriptor */
103*38621Skarels 	short	spl_un1used;
104*38621Skarels 	short	spl_un2used;
105*38621Skarels } ;
106*38621Skarels 
107*38621Skarels struct diocctype {
108*38621Skarels 	int	dct_type;		/* Annotation type */
109*38621Skarels 	char	dct_name[112-sizeof (int)-1];	/* Connection type */
110*38621Skarels };
111*38621Skarels #define	DCT_DIAL	1		/* Dialstring uttered */
112*38621Skarels #define	DCT_SERVE	2		/* Server name */
113*38621Skarels #define	DCT_FROM	3		/* Connection source */
114*38621Skarels 
115*38621Skarels 
116*38621Skarels /*
117*38621Skarels  *	values returned from service request
118*38621Skarels  */
119*38621Skarels #define	req_error	req_traffic
120*38621Skarels #define	req_driver	req_traffic
121*38621Skarels 
122*38621Skarels #ifndef KERNEL
123*38621Skarels #include <sys/ioctl.h>
124*38621Skarels /*
125*38621Skarels  *	structure received by server when new connection made
126*38621Skarels  */
127*38621Skarels struct mgrmsg {
128*38621Skarels 	short	m_chan ;		/* channel number of connection */
129*38621Skarels 	unsigned short	m_tstamp ;	/* time stamp of request */
130*38621Skarels 	char *	m_protocol ;		/* protocol options from user */
131*38621Skarels 	char *	m_origtype ;		/* type of originating device */
132*38621Skarels 	char *	m_parm ;		/* parameter string from user */
133*38621Skarels 	char *	m_uid ;			/* param from system/user, aka UID */
134*38621Skarels 	char *	m_dial ;		/* dial string entered */
135*38621Skarels 	char *	m_source ;		/* originator, as known to remote node */
136*38621Skarels 	char *	m_lname ;		/* originator, as known to local node */
137*38621Skarels 	char *	m_service ;		/* service type requested by user */
138*38621Skarels 	char *	m_lflag ;		/* L == call from local node,
139*38621Skarels 					 * R == call from a remote one.   */
140*38621Skarels 	char *	m_srcnode;		/* originating node (last segment)   */
141*38621Skarels 	char *	m_srcmod;		/* originating mod		     */
142*38621Skarels 	char *	m_srcchan;		/* originating channel		     */
143*38621Skarels 	char *	m_cflag;		/* call flag: F=first, P=previous    */
144*38621Skarels 	char *	m_errmsg ;		/* possible error msg if m_chan <= 0 */
145*38621Skarels 	char *	m_baudrate ;		/* incoming terminal baud rate */
146*38621Skarels } ;
147*38621Skarels 
148*38621Skarels 
149*38621Skarels 
150*38621Skarels /*
151*38621Skarels  *	routines declared in libdk.a
152*38621Skarels  */
153*38621Skarels extern char		*dknamer();
154*38621Skarels extern char		*dtnamer();
155*38621Skarels extern char		*dxnamer();
156*38621Skarels extern char		*dinamer();
157*38621Skarels extern char		*dketcf();
158*38621Skarels extern char		*dkfcanon(), *dktcanon();
159*38621Skarels extern char		*dkerr();
160*38621Skarels extern char		*maphost(), *miscfield();
161*38621Skarels extern char		mh_hostname[];
162*38621Skarels extern struct mgrmsg	*dkmgr();
163*38621Skarels 
164*38621Skarels extern int		dk_verbose, dk_errno;
165*38621Skarels #endif KERNEL
166*38621Skarels 
167