2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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.
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
20 * @APPLE_LICENSE_HEADER_END@
23 * Copyright (c) 1991, 1993
24 * The Regents of the University of California. All rights reserved.
26 * Redistribution and use in source and binary forms, with or without
27 * modification, are permitted provided that the following conditions
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.
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
54 * @(#)cons_pcb.h 8.1 (Berkeley) 6/10/93
57 /***********************************************************
58 Copyright IBM Corporation 1987
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.
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
78 ******************************************************************/
81 * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
85 * protocol control block for the connection oriented network service
89 * legit port #s for cons "transport" are 0..23 for su users only, and
90 * 1024..1099 for public users
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))
99 #define X25_TTL 600 /* 5 min */
100 #else /* ARGO_DEBUG */
101 #define X25_TTL 120 /* 1 min */
102 #endif /* ARGO_DEBUG */
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
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
;
128 struct ifqueue co_pending
; /* queue data to send when connection
130 #define MAX_DTE_LEN 0x7 /* 17 bcd digits */
131 struct dte_addr co_peer_dte
;
132 struct cons_pcb
*co_myself
; /* DEBUGGING AID */
139 #define XPKT_INTERRUPT 2
140 #define XPKT_FLOWCONTROL 3 /* not delivered? */
147 #define LISTENING 0x1
149 /* USABLE STATES MUST BE LAST */
150 #define CONNECTING 0x3
153 #define MIN_USABLE_STATE CONNECTING
155 #define cons_NSTATES 0x6
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 */
167 #define X_NOCHANNEL 0x80
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 */
189 u_int co_intrpt_pkts_in
; /* interrupt packets in */
194 u_int co_noresources
;
195 u_int co_parse_facil_err
;
196 u_int co_addr_proto_consist_err
;
200 u_char x25_error_stats
[CONL_ERROR_MAX
+ 1];
202 struct ifqueue consintrq
;
204 /* reasons for clear are in a data mbuf chained to a clear ecn_request */
205 struct e_clear_data
{
207 u_char ecd_diagnostic
;
211 #define IncStat(XYZ) cons_stat.XYZ++