Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / sys / netproto / atm / ipatm / ipatm_serv.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/ipatm/ipatm_serv.h,v 1.2 1999/08/28 00:48:45 peter Exp $
27  *      @(#) $DragonFly: src/sys/netproto/atm/ipatm/ipatm_serv.h,v 1.2 2003/06/17 04:28:49 dillon Exp $
28  *
29  */
30
31 /*
32  * IP Over ATM Support
33  * -------------------
34  *
35  * IP/ATM service interface definitions
36  *
37  */
38
39 #ifndef _IPATM_IPATM_SERV_H
40 #define _IPATM_IPATM_SERV_H
41
42
43 /*
44  * Structures specifying VCC parameters and pointers to all of the IP 
45  * services offered by an external IP interface service provider.
46  */
47 struct ip_vccparm {
48         Aal_t           ivc_aal;                /* AAL type */
49         Encaps_t        ivc_encaps;             /* VCC encapsulation */
50 };
51
52 #define IPATM_VCCPARMS  4                       /* Number of parameter lists */
53
54 struct ip_serv {
55 /* Interfaces to IP/ATM interface services */
56         int             (*is_ifact)             /* Interface activation */
57                                 __P((struct ip_nif *));
58         int             (*is_ifdact)            /* Interface deactivation */
59                                 __P((struct ip_nif *));
60         int             (*is_ioctl)             /* Interface ioctl */
61                                 __P((int, caddr_t, caddr_t));
62
63 /* Interfaces to IP/ATM ARP services */
64         int             (*is_arp_pvcopen)       /* IP creating dynamic PVC */
65                                 __P((struct ipvcc *));
66         int             (*is_arp_svcout)        /* IP creating outgoing SVC */
67                                 __P((struct ipvcc *, struct in_addr *));
68         int             (*is_arp_svcin)         /* IP creating incoming SVC */
69                                 __P((struct ipvcc *, Atm_addr *, Atm_addr *));
70         int             (*is_arp_svcact)        /* IP SVC is active */
71                                 __P((struct ipvcc *));
72         void            (*is_arp_close)         /* IP closing VCC */
73                                 __P((struct ipvcc *));
74
75 /* Interfaces to IP/ATM broadcast services */
76         int             (*is_bcast_output)      /* IP broadcast packet output */
77                                 __P((struct ip_nif *, KBuffer *));
78
79 /* Interfaces to IP/ATM multicast services */
80
81 /* Ordered list of parameters to try for IP/ATM VCC connections */
82         struct ip_vccparm is_vccparm[IPATM_VCCPARMS];   /* List of vcc params */
83 };
84
85
86 /*
87  * ARP Interface
88  * ----------------
89  */
90
91 /*
92  * Common header for IP/ATM ARP mappings.  For each IP VCC created, the
93  * appropriate IP/ATM ARP server must assign one of these structures to 
94  * indicate the address mapping.  This is the only IP-visible ARP structure.
95  * The servers may embed this structure at the beginning of their 
96  * module-specific mappings.
97  */
98 struct arpmap {
99         struct in_addr  am_dstip;       /* Destination IP address */
100         Atm_addr        am_dstatm;      /* Destination ATM address */
101         Atm_addr        am_dstatmsub;   /* Destination ATM subaddress */
102 };
103
104
105 /*
106  * is_arp_[ps]open() return codes and ipatm_arpnotify() event types
107  */
108 #define MAP_PROCEEDING  1               /* Lookup is proceeding (open only) */
109 #define MAP_VALID       2               /* Mapping is valid */
110 #define MAP_INVALID     3               /* Mapping is invalid */
111 #define MAP_CHANGED     4               /* Mapping has changed */
112 #define MAP_FAILED      5               /* Mapping request has failed */
113
114
115 #endif  /* _IPATM_IPATM_SERV_H */