FreeBSD/Linux Kernel Cross Reference
sys/netiso/cons_pcb.h
1 /* $NetBSD: cons_pcb.h,v 1.10 2005/12/11 00:01:36 elad Exp $ */
2
3 /*-
4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * @(#)cons_pcb.h 8.1 (Berkeley) 6/10/93
32 */
33
34 /***********************************************************
35 Copyright IBM Corporation 1987
36
37 All Rights Reserved
38
39 Permission to use, copy, modify, and distribute this software and its
40 documentation for any purpose and without fee is hereby granted,
41 provided that the above copyright notice appear in all copies and that
42 both that copyright notice and this permission notice appear in
43 supporting documentation, and that the name of IBM not be
44 used in advertising or publicity pertaining to distribution of the
45 software without specific, written prior permission.
46
47 IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
48 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
49 IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
50 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
51 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
52 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
53 SOFTWARE.
54
55 ******************************************************************/
56
57 /*
58 * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
59 */
60
61 #ifndef _NETISO_CONS_PCB_H_
62 #define _NETISO_CONS_PCB_H_
63
64 /*
65 * protocol control block for the connection oriented network service
66 */
67
68 /*
69 * legit port #s for cons "transport" are 0..23 for su users only, and
70 * 1024..1099 for public users
71 */
72 #define X25_SBSIZE 512
73 #define X25_PORT_RESERVED 24
74 #define X25_PORT_USERMAX 1099
75 #define X25_FACIL_LEN_MAX 109
76 #define X25_PARTIAL_PKT_LEN_MAX (MLEN - sizeof(struct cons_pcb))
77
78 #ifndef ARGO_DEBUG
79 #define X25_TTL 600 /* 5 min */
80 #else /* ARGO_DEBUG */
81 #define X25_TTL 120 /* 1 min */
82 #endif /* ARGO_DEBUG */
83
84 struct cons_pcb {
85 struct isopcb _co_isopcb;
86 #define co_next _co_isopcb.isop_next
87 /* prev used for netstat only */
88 #define co_prev _co_isopcb.isop_prev
89 #define co_head _co_isopcb.isop_head
90 #define co_laddr _co_isopcb.isop_laddr
91 #define co_faddr _co_isopcb.isop_faddr
92 #define co_lport _co_isopcb.isop_laddr.siso_tsuffix
93 #define co_fport _co_isopcb.isop_faddr.siso_tsuffix
94 #define co_route _co_isopcb.isop_route
95 #define co_socket _co_isopcb.isop_socket
96 #define co_chanmask _co_isopcb.isop_chanmask
97 #define co_negchanmask _co_isopcb.isop_negchanmask
98 #define co_x25crud _co_isopcb.isop_x25crud
99 #define co_x25crud_len _co_isopcb.isop_x25crud_len
100 u_short co_state;
101 u_char co_flags;
102 u_short co_ttl; /* time to live timer */
103 u_short co_init_ttl; /* initial value of ttl */
104 int co_channel; /* logical channel */
105 struct ifnet *co_ifp; /* interface */
106 const struct protosw *co_proto;
107
108 struct ifqueue co_pending; /* queue data to send when connection
109 * completes */
110 #define MAX_DTE_LEN 0x7 /* 17 bcd digits */
111 struct dte_addr co_peer_dte;
112 struct cons_pcb *co_myself; /* DEBUGGING AID */
113 };
114
115 /*
116 * X.25 Packet types
117 */
118 #define XPKT_DATA 1
119 #define XPKT_INTERRUPT 2
120 #define XPKT_FLOWCONTROL 3 /* not delivered? */
121
122 /*
123 * pcb xtates
124 */
125
126 #define CLOSED 0x0
127 #define LISTENING 0x1
128 #define CLOSING 0x2
129 /* USABLE STATES MUST BE LAST */
130 #define CONNECTING 0x3
131 #define ACKWAIT 0x4
132 #define OPEN 0x5
133 #define MIN_USABLE_STATE CONNECTING
134
135 #define cons_NSTATES 0x6
136
137
138 /* type */
139 #define CONSF_OCRE 0x40 /* created on OUTPUT */
140 #define CONSF_ICRE 0x20 /* created on INPUT */
141 #define CONSF_unused 0x10 /* not used */
142 #define CONSF_unused2 0x08 /* not used */
143 #define CONSF_DGM 0x04 /* for dgm use only */
144 #define CONSF_XTS 0x02 /* for cons-as-transport-service */
145 #define CONSF_LOOPBACK 0x01 /* loopback was on when connection commenced */
146
147 #define X_NOCHANNEL 0x80
148
149
150 struct cons_stat {
151 u_int co_intr;/* input from eicon board */
152 u_int co_restart; /* ecn_restart() request issued to
153 * board */
154 u_int co_slowtimo; /* times slowtimo called */
155 u_int co_timedout; /* connections closed by slowtimo */
156 u_int co_ack; /* ECN_ACK indication came from eicon board */
157 u_int co_receive; /* ECN_RECEIVE indication came from
158 * eicon board */
159 u_int co_send;/* ECN_SEND request issued to board */
160 u_int co_reset_in; /* ECN_RESET indication came from
161 * eicon board */
162 u_int co_reset_out; /* ECN_RESET issued to the eicon
163 * board */
164 u_int co_clear_in; /* ECN_CLEAR indication came from
165 * eicon board */
166 u_int co_clear_out; /* ECN_CLEAR request issued to board */
167 u_int co_refuse; /* ECN_REFUSE indication came from
168 * eicon board */
169 u_int co_accept; /* ECN_ACCEPT indication came from
170 * eicon board */
171 u_int co_connect; /* ECN_CONNECT indication came from
172 * eicon board */
173 u_int co_call;/* ECN_CALL request issued to board */
174 u_int co_Rdrops; /* bad pkt came from ll */
175 u_int co_Xdrops; /* can't keep up */
176
177 u_int co_intrpt_pkts_in; /* interrupt packets in */
178 u_int co_avg_qlen;
179 u_int co_avg_qdrop;
180 u_int co_active;
181
182 u_int co_noresources;
183 u_int co_parse_facil_err;
184 u_int co_addr_proto_consist_err;
185 u_int co_no_copcb;
186 } cons_stat;
187
188 u_char x25_error_stats[CONL_ERROR_MAX + 1];
189
190 struct ifqueue consintrq;
191
192 /* reasons for clear are in a data mbuf chained to a clear ecn_request */
193 struct e_clear_data {
194 u_char ecd_cause;
195 u_char ecd_diagnostic;
196 };
197
198 #ifdef _KERNEL
199 #define IncStat(XYZ) cons_stat.XYZ++
200 #endif /* _KERNEL */
201
202 #endif /* !_NETISO_CONS_PCB_H_ */
Cache object: f567deb423e0b95b7174720407f5e342
|