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