Merge from vendor branch LIBPCAP:
[dragonfly.git] / sys / netproto / atm / atm_var.h
1 /*
2  *
3  * ===================================
4  * HARP  |  Host ATM Research Platform
5  * ===================================
6  *
7  *
8  * This Host ATM Research Platform ("HARP") file (the "Software") is
9  * made available by Network Computing Services, Inc. ("NetworkCS")
10  * "AS IS".  NetworkCS does not provide maintenance, improvements or
11  * support of any kind.
12  *
13  * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
14  * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
15  * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
16  * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
17  * In no event shall NetworkCS be responsible for any damages, including
18  * but not limited to consequential damages, arising from or relating to
19  * any use of the Software or related support.
20  *
21  * Copyright 1994-1998 Network Computing Services, Inc.
22  *
23  * Copies of this Software may be made, however, the above copyright
24  * notice must be reproduced on all copies.
25  *
26  *      @(#) $FreeBSD: src/sys/netatm/atm_var.h,v 1.2 1999/08/28 00:48:39 peter Exp $
27  *      @(#) $DragonFly: src/sys/netproto/atm/atm_var.h,v 1.10 2005/11/28 17:13:46 dillon Exp $
28  *
29  */
30
31 /*
32  * Core ATM Services
33  * -----------------
34  *
35  * ATM system variables
36  *
37  */
38
39 #ifndef _NETATM_ATM_VAR_H
40 #define _NETATM_ATM_VAR_H
41
42
43 #ifdef ATM_KERNEL
44 /*
45  * Global variable declarations
46  */
47         /* atm_aal5.c */
48 extern struct pr_usrreqs        atm_aal5_usrreqs;
49
50         /* atm_proto.c */
51 extern struct domain    atmdomain;
52
53         /* atm_subr.c */
54 extern struct atm_pif   *atm_interface_head;
55 extern struct atm_ncm   *atm_netconv_head;
56 extern Atm_endpoint     *atm_endpoints[];
57 extern struct sp_info   *atm_pool_head;
58 extern struct stackq_entry      *atm_stackq_head;
59 extern struct stackq_entry      *atm_stackq_tail;
60 extern struct ifqueue   atm_intrq;
61 extern struct atm_sock_stat     atm_sock_stat;
62 extern int              atm_init;
63 extern int              atm_version;
64 extern int              atm_debug;
65 extern struct timeval   atm_debugtime;
66 extern int              atm_dev_print;
67 extern int              atm_print_data;
68 extern struct sp_info   atm_attributes_pool;
69
70         /* atm_usrreq.c */
71 extern struct pr_usrreqs        atm_dgram_usrreqs;
72
73 struct lwkt_serialize;
74
75 /*
76  * Global function declarations
77  */
78         /* atm_aal5.c */
79 int             atm_aal5_ctloutput (struct socket *, struct sockopt *);
80 void            atm_aal5_init (void);
81
82         /* atm_cm.c */
83 int             atm_cm_connect (Atm_endpoint *, void *, Atm_attributes *,
84                         Atm_connection **);
85 int             atm_cm_listen (Atm_endpoint *, void *, Atm_attributes *,
86                         Atm_connection **);
87 int             atm_cm_addllc (Atm_endpoint *, void *, struct attr_llc *,
88                         Atm_connection *, Atm_connection **);
89 int             atm_cm_addparty (Atm_connection *, int,
90                         struct t_atm_sap *);
91 int             atm_cm_dropparty (Atm_connection *, int,
92                         struct t_atm_cause *);
93 int             atm_cm_release (Atm_connection *, struct t_atm_cause *);
94 int             atm_cm_abort (Atm_connvc *, struct t_atm_cause *);
95 int             atm_cm_incoming (struct vccb *, Atm_attributes *);
96 void            atm_cm_connected (Atm_connvc *);
97 void            atm_cm_cleared (Atm_connvc *);
98 Atm_connection *atm_cm_match (Atm_attributes *, Atm_connection *);
99 int             atm_cm_cpcs_ctl (int, Atm_connection *, void *);
100 int             atm_cm_cpcs_data (Atm_connection *, KBuffer *);
101 int             atm_cm_saal_ctl (int, Atm_connection *, void *);
102 int             atm_cm_saal_data (Atm_connection *, KBuffer *);
103 int             atm_cm_sscop_ctl (int, Atm_connection *, void *, void *);
104 int             atm_cm_sscop_data (Atm_connection *, KBuffer *);
105 int             atm_endpoint_register (Atm_endpoint *);
106 int             atm_endpoint_deregister (Atm_endpoint *);
107
108         /* atm_device.c */
109 int             atm_dev_inst (struct stack_defn **, Atm_connvc *);
110 void            atm_dev_lower (int, void *, int, int);
111 void *          atm_dev_alloc (u_int, u_int, u_int);
112 void            atm_dev_free (volatile void *);
113 KBuffer *       atm_dev_compress (KBuffer *);
114 Cmn_vcc *       atm_dev_vcc_find (Cmn_unit *, u_int, u_int, u_int);
115 void            atm_dev_pdu_print (Cmn_unit *, Cmn_vcc *, KBuffer *,
116                         char *);
117
118         /* atm_if.c */
119 int             atm_physif_register (Cmn_unit *, char *,
120                         struct stack_defn *);
121 int             atm_physif_deregister (Cmn_unit *);
122 void            atm_physif_freenifs (struct atm_pif *);
123 int             atm_netconv_register (struct atm_ncm *);
124 int             atm_netconv_deregister (struct atm_ncm *);
125 int             atm_nif_attach (struct atm_nif *, struct lwkt_serialize *);
126 void            atm_nif_detach (struct atm_nif *);
127 int             atm_nif_setaddr (struct atm_nif *, struct ifaddr *);
128 int             atm_ifoutput (struct ifnet *, KBuffer *,
129                         struct sockaddr *, struct rtentry *);
130 struct atm_pif *
131                 atm_pifname (char *);
132 struct atm_nif *
133                 atm_nifname (char *);
134
135         /* atm_proto.c */
136 int             atm_proto_notsupp1 (struct socket *);
137 int             atm_proto_notsupp2 (struct socket *, struct sockaddr *,
138                         struct thread *);
139 int             atm_proto_notsupp3 (struct socket *, struct sockaddr **);
140 int             atm_proto_notsupp4 (struct socket *, int, KBuffer *, 
141                         struct sockaddr *, KBuffer *, struct thread *);
142
143         /* atm_signal.c */
144 int             atm_sigmgr_register (struct sigmgr *);
145 int             atm_sigmgr_deregister (struct sigmgr *);
146 int             atm_sigmgr_attach (struct atm_pif *, u_char);
147 int             atm_sigmgr_detach (struct atm_pif *);
148 int             atm_stack_register (struct stack_defn *);
149 int             atm_stack_deregister (struct stack_defn *);
150 int             atm_create_stack (Atm_connvc *, struct stack_list *,
151                         void (*)(int, void *, int, int) );
152
153         /* atm_socket.c */
154 int             atm_sock_attach (struct socket *, u_long, u_long,
155                         struct rlimit *);
156 int             atm_sock_detach (struct socket *);
157 int             atm_sock_bind (struct socket *, struct sockaddr *);
158 int             atm_sock_listen (struct socket *, Atm_endpoint *);
159 int             atm_sock_connect (struct socket *, struct sockaddr *,
160                         Atm_endpoint *);
161 int             atm_sock_disconnect (struct socket *);
162 int             atm_sock_sockaddr (struct socket *, struct sockaddr **);
163 int             atm_sock_peeraddr (struct socket *, struct sockaddr **);
164 int             atm_sock_setopt (struct socket *, struct sockopt *,
165                         Atm_pcb *);
166 int             atm_sock_getopt (struct socket *, struct sockopt *,
167                         Atm_pcb *);
168 void            atm_sock_connected (void *);
169 void            atm_sock_cleared (void *, struct t_atm_cause *);
170
171         /* atm_subr.c */
172 void            atm_initialize (void);
173 void *          atm_allocate (struct sp_info *);
174 void            atm_free (void *);
175 void            atm_release_pool (struct sp_info *);
176 void            atm_timeout (struct atm_time *, int, 
177                         void (*) (struct atm_time *) );
178 int             atm_untimeout (struct atm_time *);
179 int             atm_stack_enq (int, void (*) (int, void *, int, int), 
180                         void *, Atm_connvc *, int, int);
181 void            atm_stack_drain (void);
182 void            atm_pdu_print (KBuffer *, char *);
183
184 #endif  /* ATM_KERNEL */
185
186 #endif  /* _NETATM_ATM_VAR_H */