xref: /illumos-gate/usr/src/cmd/bnu/pk.h (revision 7c478bd9)
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 /*
23  * Copyright 1992 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28 /*	  All Rights Reserved  	*/
29 
30 
31 #pragma ident	"%Z%%M%	%I%	%E% SMI"
32 
33 #define OLDPACKSIZE	128
34 
35 #define	PACKSIZE	64
36 #define MINPACKSIZE	32
37 #define MAXPACKSIZE   4096
38 
39 #define	WINDOWS		7
40 #define	MINWINDOWS	1
41 #define	MAXWINDOWS	7
42 
43 
44 struct header {
45 	char	sync;
46 	char	ksize;
47 	unsigned short sum;
48 	char	cntl;
49 	char	ccntl;
50 };
51 #define	HDRSIZ	6
52 
53 struct pack {
54 	short	p_state;	/* line state */
55 	short	p_bits;		/* mask for getepack */
56 	short	p_rsize;	/* input packet size */
57 	short	p_xsize;	/* output packet size */
58 	struct	header p_ihbuf;	/* input header */
59 	struct	header p_ohbuf; /* output header */
60 	char	*p_rptr;
61 	char	**p_ipool;
62 	char	p_xcount;	/* # active output buffers */
63 	char	p_rcount;
64 	char	p_nout,p_tout;
65 	char	p_lpsize;	/* log(psize/32) */
66 	char	p_timer;
67 	char	p_obusy;
68 	char	p_srxmit;
69 	char	p_rwindow;	/* window size */
70 	char	p_swindow;
71 	char	p_msg;		/* control msg */
72 	char	p_rmsg;		/* repeated control msg */
73 	char	p_ps,p_pr;	/* last packet sent, recv'd */
74 	char	p_rpr;
75 	char	p_nxtps;	/* next output seq number */
76 	char	p_imap;		/* bit map of input buffers */
77 	char	p_pscopy;	/* newest output packet */
78 	char	*p_ob[8];	/* output buffers */
79 	char	*p_ib[8];	/* input buffers */
80 	char	p_os[8];	/* output buffer status */
81 	char	p_is[8];	/* input buffer status */
82 	short	p_osum[8];	/* output checksums */
83 	short	p_isum[8];	/* input checksums */
84 	int	p_ifn, p_ofn;
85 };
86 #define	CHECK	0125252
87 #define	SYN	020
88 #define	MOD8	7
89 #define	ISCNTL(a)	((a & 0300)==0)
90 #ifndef MIN
91 #define	MIN(a,b)	((a<b)? a:b)
92 #endif
93 
94 extern char	next[8];
95 extern char	mask[8];
96 extern int	npbits;
97 extern int	pkactive;
98 extern int	pkdebug;
99 extern int	pksizes[];
100 extern struct pack *Pk;
101 
102 /*
103  * driver state
104  */
105 #define	DEAD	0
106 #define	INITa	1
107 #define	INITb	2
108 #define	INITab	3
109 #define	LIVE	010
110 #define	RXMIT	020
111 #define	RREJ	040
112 #define PDEBUG	0200
113 #define	DRAINO	0400
114 #define	WAITO	01000
115 #define	DOWN	02000
116 #define	RCLOSE	04000
117 #define	BADFRAME 020000
118 
119 /*
120  * io buffer states
121  */
122 #define	B_NULL	0
123 #define	B_READY	1
124 #define	B_SENT	2
125 #define	B_RESID	010
126 #define	B_COPY	020
127 #define	B_MARK	040
128 #define	B_SHORT	0100
129 
130 /*
131  * control messages
132  */
133 #define	CLOSE	1
134 #define	RJ	2
135 /* #define	SRJ	3 */	/* not supported */
136 #define	RR	4
137 #define	INITC	5
138 #define	INITB	6
139 #define	INITA	7
140 
141 #define	M_RJ	4
142 /* #define	M_SRJ	010 */	/* not used */
143 #define	M_RR	020
144 #define	M_INITC	040
145 #define	M_CLOSE	2
146 #define	M_INITA	0200
147 #define	M_INITB	0100
148 
149 /*
150  * packet ioctl buf
151  */
152 struct	piocb {
153 	unsigned t;
154 	short	psize;
155 	short	mode;
156 	short	state;
157 	char	window;
158 };
159