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