1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
/* $OpenBSD: tp_var.h,v 1.3 2002/03/14 03:16:12 millert Exp $ */
/* $NetBSD: tp_var.h,v 1.1 1996/02/13 22:12:29 christos Exp $ */
/*
* Copyright (c) 1995 Christos Zoulas. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Christos Zoulas.
* 4. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef _KERNEL
struct isopcb;
struct mbuf;
struct sockaddr_iso;
struct tp_pcb;
struct sockaddr_in;
struct iso_addr;
struct tp_conn_param;
struct tp_event;
struct inpcb;
struct route;
struct pklcd;
struct sockaddr;
struct x25_packet;
struct in_addr;
/* tp_cons.c */
int tpcons_pcbconnect(void *, struct mbuf *);
void *tpcons_ctlinput(int, struct sockaddr *, void *);
void tpcons_input(struct mbuf *, ...);
int tpcons_output(struct mbuf *, ...);
int tpcons_output_dg(struct mbuf *, ...);
/* tp_driver.c */
int tp_driver(struct tp_pcb *, struct tp_event *);
/* tp_emit.c */
int tp_emit(int, struct tp_pcb *, SeqNum, u_int, struct mbuf *);
int tp_error_emit(int, u_long, struct sockaddr_iso *,
struct sockaddr_iso *, struct mbuf *, int,
struct tp_pcb *, caddr_t,
int (*) (struct mbuf *, ...));
/* tp_inet.c */
void in_getsufx(void *, u_short *, caddr_t, int);
void in_putsufx(void *, caddr_t, int, int);
void in_recycle_tsuffix(void *);
void in_putnetaddr(void *, struct sockaddr *, int);
int in_cmpnetaddr(void *, struct sockaddr *, int);
void in_getnetaddr(void *, struct mbuf *, int);
int tpip_mtu(void *);
int tpip_output(struct mbuf *, ...);
int tpip_output_dg(struct mbuf *, ...);
void tpip_input(struct mbuf *, ...);
void tpin_quench(struct inpcb *, int);
void *tpip_ctlinput(int, struct sockaddr *, void *);
void tpin_abort(struct inpcb *, int);
void dump_inaddr(struct sockaddr_in *);
/* tp_input.c */
struct mbuf *tp_inputprep(struct mbuf *);
void tp_input(struct mbuf *, ...);
int tp_headersize(int, struct tp_pcb *);
/* tp_iso.c */
void iso_getsufx(void *, u_short *, caddr_t, int);
void iso_putsufx(void *, caddr_t, int, int);
void iso_recycle_tsuffix(void *);
void iso_putnetaddr(void *, struct sockaddr *, int);
int iso_cmpnetaddr(void *, struct sockaddr *, int);
void iso_getnetaddr(void *, struct mbuf *, int);
int tpclnp_mtu(void *);
int tpclnp_output(struct mbuf *, ...);
int tpclnp_output_dg(struct mbuf *, ...);
void tpclnp_input(struct mbuf *, ...);
void iso_rtchange(struct isopcb *);
void tpiso_decbit(struct isopcb *);
void tpiso_quench(struct isopcb *);
void *tpclnp_ctlinput(int, struct sockaddr *, void *);
void tpclnp_ctlinput1(int, struct iso_addr *);
void tpiso_abort(struct isopcb *);
void tpiso_reset(struct isopcb *);
/* tp_meas.c */
void Tpmeas(u_int, u_int, struct timeval *, u_int, u_int, u_int);
/* tp_output.c */
int tp_consistency(struct tp_pcb *, u_int, struct tp_conn_param *);
int tp_ctloutput(int, struct socket *, int, int, struct mbuf **);
/* tp_pcb.c */
void tp_init(void);
void tp_soisdisconnecting(struct socket *);
void tp_soisdisconnected(struct tp_pcb *);
void tp_freeref(RefNum);
u_long tp_getref(struct tp_pcb *);
int tp_set_npcb(struct tp_pcb *);
int tp_attach(struct socket *, long);
void tp_detach(struct tp_pcb *);
int tp_tselinuse(int, caddr_t, struct sockaddr_iso *, int);
int tp_pcbbind(void *, struct mbuf *);
/* tp_subr.c */
int tp_goodXack(struct tp_pcb *, SeqNum);
void tp_rtt_rtv(struct tp_pcb *);
int tp_goodack(struct tp_pcb *, u_int, SeqNum, u_int);
int tp_sbdrop(struct tp_pcb *, SeqNum);
void tp_send(struct tp_pcb *);
int tp_packetize(struct tp_pcb *, struct mbuf *, int);
int tp_stash(struct tp_pcb *, struct tp_event *);
void tp_rsyflush(struct tp_pcb *);
void tp_rsyset(struct tp_pcb *);
void tpsbcheck(struct tp_pcb *, int);
/* tp_subr2.c */
void tp_local_credit(struct tp_pcb *);
int tp_protocol_error(struct tp_event *, struct tp_pcb *);
void tp_drain(void);
void tp_indicate(int, struct tp_pcb *, u_short);
void tp_getoptions(struct tp_pcb *);
void tp_recycle_tsuffix(void *);
void tp_quench(struct inpcb *, int);
void tp_netcmd(struct tp_pcb *, int);
int tp_mask_to_num(u_char);
void tp_mss(struct tp_pcb *, int);
int tp_route_to(struct mbuf *, struct tp_pcb *, caddr_t);
void tp0_stash(struct tp_pcb *, struct tp_event *);
void tp0_openflow(struct tp_pcb *);
int tp_setup_perf(struct tp_pcb *);
void dump_addr(struct sockaddr *);
void Dump_buf(caddr_t, int);
/* tp_timer.c */
void tp_timerinit(void);
void tp_etimeout(struct tp_pcb *, int, int);
void tp_euntimeout(struct tp_pcb *, int);
void tp_slowtimo(void);
void tp_data_retrans(struct tp_pcb *);
void tp_fasttimo(void);
void tp_ctimeout(struct tp_pcb *, int, int);
void tp_ctimeout_MIN(struct tp_pcb *, int, int);
void tp_cuntimeout(struct tp_pcb *, int);
/* tp_trace.c */
void tpTrace(struct tp_pcb *, u_int, u_int, u_int, u_int, u_int,
u_int);
/* tp_usrreq.c */
void dump_mbuf(struct mbuf *, char *);
int tp_rcvoob(struct tp_pcb *, struct socket *, struct mbuf *,
int *, int);
int tp_sendoob(struct tp_pcb *, struct socket *, struct mbuf *, int *);
int tp_usrreq(struct socket *, int, struct mbuf *, struct mbuf *,
struct mbuf *);
void tp_ltrace(struct socket *, struct uio *);
int tp_confirm(struct tp_pcb *);
int tp_snd_control(struct mbuf *, struct socket *, struct mbuf **);
#ifdef TPCONS
/* if_cons.c */
void nibble_copy(char *, unsigned, char *, unsigned, int);
int nibble_match(char *, unsigned, char *, unsigned, int);
void cons_init(void);
int tp_incoming(struct mbuf *, void *);
int cons_tpinput(struct mbuf *, void *);
int cons_connect(struct isopcb *);
void *cons_ctlinput(int, struct sockaddr *, void *);
int find_error_reason(struct x25_packet *);
#endif
#endif
|