This commit was generated by cvs2svn to track changes on a CVS vendor
[unix-history] / sys / netccitt / hd_var.h
CommitLineData
15637ed4
RG
1/*
2 * Copyright (c) University of British Columbia, 1984
3 * Copyright (c) 1990 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Laboratory for Computation Vision and the Computer Science Department
8 * of the University of British Columbia.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by the University of
21 * California, Berkeley and its contributors.
22 * 4. Neither the name of the University nor the names of its contributors
23 * may be used to endorse or promote products derived from this software
24 * without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
1cdffd64 38 * from: @(#)hd_var.h 7.4 (Berkeley) 5/29/91
8ace4366 39 * $Id: hd_var.h,v 1.2 1993/10/16 19:46:41 rgrimes Exp $
15637ed4
RG
40 */
41
8ace4366
GW
42#ifndef _NETCCITT_HD_VAR_H_
43#define _NETCCITT_HD_VAR_H_ 1
44
15637ed4
RG
45/*
46 *
47 * hdlc control block
48 *
49 */
50
51struct hdtxq {
52 struct mbuf *head;
53 struct mbuf *tail;
54};
55
56struct hdcb {
57 struct hdcb *hd_next; /* pointer to next hdlc control block */
58 char hd_state; /* link state */
59 char hd_vs; /* send state variable */
60 char hd_vr; /* receive state variable */
61 char hd_lastrxnr; /* last received N(R) */
62 char hd_lasttxnr; /* last transmitted N(R) */
63 char hd_condition;
64#define TIMER_RECOVERY_CONDITION 0x01
65#define REJ_CONDITION 0x02
66#define REMOTE_RNR_CONDITION 0X04
67 char hd_retxcnt;
68 char hd_xx;
69 struct hdtxq hd_txq;
70 struct mbuf *hd_retxq[MODULUS];
71 char hd_retxqi;
72 char hd_rrtimer;
73 char hd_timer;
74#define SET_TIMER(hdp) hdp->hd_timer = hd_t1
75#define KILL_TIMER(hdp) hdp->hd_timer = 0
76 char hd_dontcopy; /* if-driver doesn't free I-frames */
77 struct ifnet *hd_ifp; /* device's network visible interface */
78 struct ifaddr *hd_ifa; /* device's X.25 network address */
79 struct x25config *hd_xcp;
80 caddr_t hd_pkp; /* Level III junk */
81 int (*hd_output)(); /* separate entry for HDLC direct output */
82
83 /* link statistics */
84
85 long hd_iframes_in;
86 long hd_iframes_out;
87 long hd_rrs_in;
88 long hd_rrs_out;
89 short hd_rejs_in;
90 short hd_rejs_out;
91 long hd_window_condition;
92 short hd_invalid_ns;
93 short hd_invalid_nr;
94 short hd_timeouts;
95 short hd_resets;
96 short hd_unknown;
97 short hd_frmrs_in;
98 short hd_frmrs_out;
99 short hd_rnrs_in;
100 short hd_rnrs_out;
101};
102
103#ifdef KERNEL
104struct hdcb *hdcbhead; /* head of linked list of hdcb's */
105struct Frmr_frame hd_frmr; /* rejected frame diagnostic info */
106struct ifqueue hdintrq; /* hdlc packet input queue */
107
108int hd_t1; /* timer T1 value */
109int hd_t3; /* RR send timer */
110int hd_n2; /* frame retransmission limit */
111#endif
8ace4366 112#endif /* _NETCCITT_HD_VAR_H_ */