Update the name of the version function
[olsrd.git] / lib / dyn_gw / src / olsrd_plugin.h
1
2
3 /*
4  * Copyright (c) 2004, Andreas T√łnnesen(andreto-at-olsr.org)
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without 
8  * modification, are permitted provided that the following conditions 
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright notice, 
12  *   this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above copyright notice, 
14  *   this list of conditions and the following disclaimer in the documentation 
15  *   and/or other materials provided with the distribution.
16  * * Neither the name of the UniK olsr daemon nor the names of its contributors 
17  *   may be used to endorse or promote products derived from this software 
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
22  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
23  * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
24  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
25  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
27  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
28  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
29  * OF THE POSSIBILITY OF SUCH DAMAGE.
30  *
31  */
32
33 /*
34  * Dynamic linked library example for UniK OLSRd
35  */
36
37 #ifndef _OLSRD_PLUGIN_DEFS
38 #define _OLSRD_PLUGIN_DEFS
39
40
41 #include <sys/socket.h>
42 #include <netinet/in.h>
43 #include <arpa/inet.h>
44 #include <sys/time.h>
45 #include <time.h>
46 #include <math.h>
47
48 #include "olsr_plugin_io.h"
49
50 /* Use this as PARSER_TYPE to receive ALL messages! */
51 #define PROMISCUOUS 0xffffffff
52
53
54 /*****************************************************************************
55  *                               Plugin data                                 *
56  *                       ALTER THIS TO YOUR OWN NEED                         *
57  *****************************************************************************/
58
59 #define PLUGIN_NAME    "OLSRD dynamic gateway plugin"
60 #define PLUGIN_VERSION "0.2"
61 #define PLUGIN_AUTHOR   "Andreas T√łnnesen"
62 #define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
63 #define PLUGIN_INTERFACE_VERSION 2
64
65
66
67
68 /****************************************************************************
69  *           Various datastructures and definitions from olsrd              *
70  ****************************************************************************/
71
72 /*
73  * TYPES SECTION
74  */
75
76 /* types */
77 #include <sys/types.h>
78
79 typedef u_int8_t        olsr_u8_t;
80 typedef u_int16_t       olsr_u16_t;
81 typedef u_int32_t       olsr_u32_t;
82 typedef int8_t          olsr_8_t;
83 typedef int16_t         olsr_16_t;
84 typedef int32_t         olsr_32_t;
85
86
87
88 /*
89  * VARIOUS DEFINITIONS
90  */
91
92 union olsr_ip_addr
93 {
94   olsr_u32_t v4;
95   struct in6_addr v6;
96 };
97
98 union hna_netmask
99 {
100   olsr_u32_t v4;
101   olsr_u16_t v6;
102 };
103
104 /***************************************************************************
105  *                 Functions provided by uolsrd_plugin.c                   *
106  *                  Similar to their siblings in olsrd                     *
107  ***************************************************************************/
108
109 char ipv6_buf[100]; /* buffer for IPv6 inet_htop */
110
111 /* All these could optionally be fetched from olsrd */
112
113 char *
114 olsr_ip_to_string(union olsr_ip_addr *);
115
116
117
118 /****************************************************************************
119  *                Function pointers to functions in olsrd                   *
120  *              These allow direct access to olsrd functions                *
121  ****************************************************************************/
122
123 /* The multi-purpose funtion. All other functions are fetched trough this */
124 int (*olsr_plugin_io)(int, void *, size_t);
125
126 /* Register a scheduled event */
127 int (*olsr_register_scheduler_event)(void (*)(), float, float, olsr_u8_t *);
128
129 /* olsrd printf wrapper */
130 int (*olsr_printf)(int, char *, ...);
131
132 /* olsrd malloc wrapper */
133 void *(*olsr_malloc)(size_t, const char *);
134
135 /* Add hna net IPv4 */
136 void (*add_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
137
138 /* Remove hna net IPv4 */
139 int (*remove_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
140
141
142 /****************************************************************************
143  *                             Data from olsrd                              *
144  *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
145  *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
146  *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
147  ****************************************************************************/
148
149 /* These two are set automatically by olsrd at load time */
150 int                ipversion;  /* IPversion in use */
151 union olsr_ip_addr *main_addr; /* Main address */
152
153
154 size_t             ipsize;     /* Size of the ipadresses used */
155 struct timeval     *now;       /* the olsrds schedulers idea of current time */
156
157
158 /****************************************************************************
159  *                Functions that the plugin MUST provide                    *
160  ****************************************************************************/
161
162
163 /* Initialization function */
164 int
165 olsr_plugin_init();
166
167 /* Destructor function */
168 void
169 olsr_plugin_exit();
170
171 /* Mulitpurpose funtion */
172 int
173 plugin_io(int, void *, size_t);
174
175 int
176 register_olsr_param(char *, char *);
177
178 int 
179 get_plugin_interface_version();
180
181 #endif