Put includes necessary for code files into code files, not in central headers
[olsrd.git] / lib / obamp / src / olsrd_plugin.c
1
2 /*
3  * The olsr.org Optimized Link-State Routing daemon(olsrd)
4  * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
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
12  *   notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above copyright
14  *   notice, this list of conditions and the following disclaimer in
15  *   the documentation and/or other materials provided with the
16  *   distribution.
17  * * Neither the name of olsr.org, olsrd nor the names of its
18  *   contributors may be used to endorse or promote products derived
19  *   from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *
34  * Visit http://www.olsr.org for more information.
35  *
36  * If you find this software useful feel free to make a donation
37  * to the project. For more information see the website or contact
38  * the copyright holders.
39  *
40  */
41
42
43
44 /* System includes */
45 #include <assert.h>             /* assert() */
46 #include <stddef.h>             /* NULL */
47 #include <stdio.h>
48
49 /* OLSRD includes */
50 #include "plugin.h"
51 #include "plugin_loader.h"
52 #include "plugin_util.h"
53 #include "defs.h"               /* uint8_t, olsr_cnf */
54 #include "olsr_timer.h"
55 #include "olsr_socket.h"          /* olsr_timer_start() */
56 #include "olsr_cfg.h"           /* olsr_cnf() */
57 #include "olsr_memcookie.h"        /* olsr_memcookie_add() */
58
59 /* OBAMP includes */
60 #include "obamp.h"
61 #include "common/list.h"
62
63 static void __attribute__ ((constructor)) my_init(void);
64 static void __attribute__ ((destructor)) my_fini(void);
65
66 static int obamp_init(void);
67 static int obamp_enable(void);
68 static int obamp_disable(void);
69
70 static const struct olsrd_plugin_parameters plugin_parameters[] = {
71   {.name = "NonOlsrIf",.set_plugin_parameter = &AddObampSniffingIf,.data = NULL},
72 };
73
74 OLSR_PLUGIN6(plugin_parameters)
75 {
76   .descr = PLUGIN_DESCR,
77   .author = PLUGIN_AUTHOR,
78   .init = obamp_init,
79   .enable = obamp_enable,
80   .disable = obamp_disable
81 };
82
83 /**
84  * Constructor of plugin, called before parameters are initialized
85  */
86 static int
87 obamp_init(void)
88 {
89   PreInitOBAMP();
90
91   return 0;
92 }
93
94 static int
95 obamp_enable(void)
96 {
97   olsrd_plugin_init();
98
99   return false;
100 }
101
102
103
104 /**
105  * Destructor of plugin
106  */
107 static int
108 obamp_disable(void)
109 {
110   return 0;
111 }
112
113
114 void olsr_plugin_exit(void);
115
116 /* -------------------------------------------------------------------------
117  * Function   : olsrd_plugin_interface_version
118  * Description: Plugin interface version
119  * Input      : none
120  * Output     : none
121  * Return     : OBAMP plugin interface version number
122  * Data Used  : none
123  * Notes      : Called by main OLSRD (olsr_load_dl) to check plugin interface
124  *              version
125  * ------------------------------------------------------------------------- */
126 int
127 olsrd_plugin_interface_version(void)
128 {
129   return PLUGIN_INTERFACE_VERSION;
130
131 }
132
133 /* -------------------------------------------------------------------------
134  * Function   : olsrd_plugin_init
135  * Description: Plugin initialisation
136  * Input      : none
137  * Output     : none
138  * Return     : fail (0) or success (1)
139  * Data Used  : olsr_cnf
140  * Notes      : Called by main OLSRD (init_olsr_plugin) to initialize plugin
141  * ------------------------------------------------------------------------- */
142 int
143 olsrd_plugin_init(void)
144 {
145   return InitOBAMP();
146 }
147
148 /* -------------------------------------------------------------------------
149  * Function   : olsr_plugin_exit
150  * Description: Plugin cleanup
151  * Input      : none
152  * Output     : none
153  * Return     : none
154  * Data Used  : none
155  * Notes      : Called by my_fini() at unload of shared object
156  * ------------------------------------------------------------------------- */
157 void
158 olsr_plugin_exit(void)
159 {
160   CloseOBAMP();
161 }
162
163
164
165 /* -------------------------------------------------------------------------
166  * Function   : olsrd_get_plugin_parameters
167  * Description: Return the parameter table and its size
168  * Input      : none
169  * Output     : params - the parameter table
170  *              size - its size in no. of entries
171  * Return     : none
172  * Data Used  : plugin_parameters
173  * Notes      : Called by main OLSR (init_olsr_plugin) for all plugins
174  * ------------------------------------------------------------------------- */
175 void
176 olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
177 {
178   *params = plugin_parameters;
179   *size = ARRAYSIZE(plugin_parameters);
180 }
181
182 /* -------------------------------------------------------------------------
183  * Function   : my_init
184  * Description: Plugin constructor
185  * Input      : none
186  * Output     : none
187  * Return     : none
188  * Data Used  : none
189  * Notes      : Called at load of shared object
190  * ------------------------------------------------------------------------- */
191 static void
192 my_init(void)
193 {
194   /* Print plugin info to stdout */
195   printf("%s\n", MOD_DESC);
196
197   return;
198 }
199
200 /* -------------------------------------------------------------------------
201  * Function   : my_fini
202  * Description: Plugin destructor
203  * Input      : none
204  * Output     : none
205  * Return     : none
206  * Data Used  : none
207  * Notes      : Called at unload of shared object
208  * ------------------------------------------------------------------------- */
209 static void
210 my_fini(void)
211 {
212   olsr_plugin_exit();
213 }
214
215
216
217 /*
218  * Local Variables:
219  * c-basic-offset: 2
220  * indent-tabs-mode: nil
221  * End:
222  */