summaryrefslogtreecommitdiffstats
path: root/sys/netatm/atm_var.h
blob: 788acc9b26885cde37ca4127f95e54e30a144079 (plain)
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
/*-
 *
 * ===================================
 * HARP  |  Host ATM Research Platform
 * ===================================
 *
 *
 * This Host ATM Research Platform ("HARP") file (the "Software") is
 * made available by Network Computing Services, Inc. ("NetworkCS")
 * "AS IS".  NetworkCS does not provide maintenance, improvements or
 * support of any kind.
 *
 * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
 * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
 * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
 * In no event shall NetworkCS be responsible for any damages, including
 * but not limited to consequential damages, arising from or relating to
 * any use of the Software or related support.
 *
 * Copyright 1994-1998 Network Computing Services, Inc.
 *
 * Copies of this Software may be made, however, the above copyright
 * notice must be reproduced on all copies.
 *
 *	@(#) $FreeBSD$
 *
 */

/*
 * Core ATM Services
 * -----------------
 *
 * ATM system variables
 *
 */

#ifndef _NETATM_ATM_VAR_H
#define _NETATM_ATM_VAR_H


#ifdef _KERNEL

#include <vm/uma.h>

typedef void (*atm_init_fn)(void);

/*
 * Global variable declarations
 */
extern struct pr_usrreqs	atm_aal5_usrreqs;

	/* atm_proto.c */
extern struct domain	atmdomain;

	/* atm_subr.c */
extern struct atm_pif	*atm_interface_head;
extern struct atm_ncm	*atm_netconv_head;
extern Atm_endpoint	*atm_endpoints[];
extern struct stackq_entry	*atm_stackq_head;
extern struct stackq_entry	*atm_stackq_tail;
extern struct atm_sock_stat	atm_sock_stat;
extern int		atm_init;
extern int		atm_version;
extern int		atm_debug;
extern struct timeval	atm_debugtime;
extern int		atm_dev_print;
extern int		atm_print_data;
extern uma_zone_t	atm_attributes_zone;

extern struct pr_usrreqs	atm_dgram_usrreqs;


/*
 * Global function declarations
 */
	/* atm_aal5.c */
int		atm_aal5_ctloutput(struct socket *, struct sockopt *);
void		atm_aal5_init(void);

	/* atm_cm.c */
int		atm_cm_connect(Atm_endpoint *, void *, Atm_attributes *,
			Atm_connection **);
int		atm_cm_listen(struct socket *, Atm_endpoint *, void *,
			Atm_attributes *, Atm_connection **, int);
int		atm_cm_addllc(Atm_endpoint *, void *, struct attr_llc *,
			Atm_connection *, Atm_connection **);
int		atm_cm_addparty(Atm_connection *, int, struct t_atm_sap *);
int		atm_cm_dropparty(Atm_connection *, int, struct t_atm_cause *);
int		atm_cm_release(Atm_connection *, struct t_atm_cause *);
int		atm_cm_abort(Atm_connvc *, struct t_atm_cause *);
int		atm_cm_incoming(struct vccb *, Atm_attributes *);
void		atm_cm_connected(Atm_connvc *);
void		atm_cm_cleared(Atm_connvc *);
Atm_connection *atm_cm_match(Atm_attributes *, Atm_connection *);
int		atm_cm_cpcs_ctl(int, Atm_connection *, void *);
int		atm_cm_cpcs_data(Atm_connection *, KBuffer *);
int		atm_cm_saal_ctl(int, Atm_connection *, void *);
int		atm_cm_saal_data(Atm_connection *, KBuffer *);
int		atm_cm_sscop_ctl(int, Atm_connection *, void *, void *);
int		atm_cm_sscop_data(Atm_connection *, KBuffer *);
int		atm_endpoint_register(Atm_endpoint *);
int		atm_endpoint_deregister(Atm_endpoint *);

	/* atm_device.c */
int		atm_dev_inst(struct stack_defn **, Atm_connvc *);
void		atm_dev_lower(int, void *, intptr_t, intptr_t);
void *		atm_dev_alloc(u_int, u_int, u_int);
void		atm_dev_free(volatile void *);
KBuffer *	atm_dev_compress(KBuffer *);
Cmn_vcc *	atm_dev_vcc_find(Cmn_unit *, u_int, u_int, u_int);
void		atm_dev_pdu_print(const Cmn_unit *, const Cmn_vcc *,
		    const KBuffer *, const char *);

	/* atm_if.c */
int		atm_physif_register(Cmn_unit *, const char *,
			struct stack_defn *);
int		atm_physif_deregister(Cmn_unit *);
void		atm_physif_freenifs(struct atm_pif *, uma_zone_t);
int		atm_netconv_register(struct atm_ncm *);
int		atm_netconv_deregister(struct atm_ncm *);
int		atm_nif_attach(struct atm_nif *);
void		atm_nif_detach(struct atm_nif *);
int		atm_nif_setaddr(struct atm_nif *, struct ifaddr *);
int		atm_ifoutput(struct ifnet *, KBuffer *,
			struct sockaddr *, struct rtentry *);
struct atm_pif *
		atm_pifname(char *);
struct atm_nif *
		atm_nifname(char *);

	/* atm_proto.c */
int		atm_proto_notsupp1(struct socket *);
int		atm_proto_notsupp2(struct socket *, struct sockaddr *,
			struct thread *);
int		atm_proto_notsupp3(struct socket *, struct sockaddr **);
int		atm_proto_notsupp4(struct socket *, int, KBuffer *, 
			struct sockaddr *, KBuffer *, struct thread *);
void		atm_proto_notsupp5(struct socket *);

	/* atm_signal.c */
int		atm_sigmgr_register(struct sigmgr *);
int		atm_sigmgr_deregister(struct sigmgr *);
int		atm_sigmgr_attach(struct atm_pif *, u_char);
int		atm_sigmgr_detach(struct atm_pif *);
int		atm_stack_register(struct stack_defn *);
int		atm_stack_deregister(struct stack_defn *);
int		atm_create_stack(Atm_connvc *, struct stack_list *,
			void (*)(int, void *, intptr_t, intptr_t) );

	/* atm_socket.c */
void		atm_sock_init(void);
int		atm_sock_attach(struct socket *, u_long, u_long);
void		atm_sock_detach(struct socket *);
int		atm_sock_bind(struct socket *, struct sockaddr *);
int		atm_sock_listen(struct socket *, Atm_endpoint *, int);
int		atm_sock_connect(struct socket *, struct sockaddr *,
			Atm_endpoint *);
int		atm_sock_disconnect(struct socket *);
int		atm_sock_sockaddr(struct socket *, struct sockaddr **);
int		atm_sock_peeraddr(struct socket *, struct sockaddr **);
int		atm_sock_setopt(struct socket *, struct sockopt *,
			Atm_pcb *);
int		atm_sock_getopt(struct socket *, struct sockopt *,
			Atm_pcb *);
void		atm_sock_connected(void *);
void		atm_sock_cleared(void *, struct t_atm_cause *);

	/* atm_subr.c */
void		atm_initialize(void);
void		atm_timeout(struct atm_time *, int, 
			void (*)(struct atm_time *) );
int		atm_untimeout(struct atm_time *);
int		atm_stack_enq(int, void (*)(int, void *, intptr_t, intptr_t), 
			void *, Atm_connvc *, intptr_t, intptr_t);
void		atm_stack_drain(void);
void		atm_pdu_print(const KBuffer *, const char *);

#ifdef SYSCTL_DECL
SYSCTL_DECL(_net_harp);
SYSCTL_DECL(_net_harp_atm);
#endif

#endif	/* _KERNEL */
#endif	/* _NETATM_ATM_VAR_H */
OpenPOWER on IntegriCloud