3 != 2
[olsrd.git] / src / olsrd_plugin.h
1
2 /*
3  * Copyright (c) 2005, Bruno Randolf <bruno.randolf@4g-systems.biz>
4  * Copyright (c) 2004, Andreas Tonnesen(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  * Example plugin for olsrd.org OLSR daemon
35  * Only the bare minimum
36  */
37
38 #ifndef _OLSRD_PLUGIN
39 #define _OLSRD_PLUGIN
40
41 /* Define the most recent version */
42 #define MOST_RECENT_PLUGIN_INTERFACE_VERSION            5
43 #define LAST_SUPPORTED_PLUGIN_INTERFACE_VERSION         4
44
45 /****************************************************************************
46  *                Functions that the plugin MUST provide                    *
47  ****************************************************************************/
48 #if 1
49
50 /* We hide them from the compiler here to allow the plugins itself to declare them
51  * as they also implement them if we activate -Wredundant-decls.
52  * Normally we leave it seen so that we enforce a check by the compiler if they are
53  * identical.
54  */
55
56 /**
57  * Plugin interface version
58  * Used by main olsrd to check plugin interface version
59  */
60 int olsrd_plugin_interface_version(void);
61
62 /**
63  * Initialize plugin
64  * Called after all parameters are passed
65  */
66 int olsrd_plugin_init(void);
67
68 /* Interface version 4 */
69
70 /**
71  * Register parameters from config file
72  * Called for all plugin parameters
73  */
74 int olsrd_plugin_register_param(char *key, char *value);
75
76 /* Interface version 5 */
77
78 typedef union {
79   unsigned int ui;
80   char *pc;
81 } set_plugin_parameter_addon;
82
83 typedef int set_plugin_parameter(const char *value, void *data, set_plugin_parameter_addon addon);
84
85 struct olsrd_plugin_parameters {
86   const char *name;
87   set_plugin_parameter *set_plugin_parameter;
88   void *data;
89   set_plugin_parameter_addon addon;
90 };
91
92 /**
93  * Delivers the (address of the) table and the size of the parameter description
94  */
95 void olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size);
96
97 #endif
98
99 #endif
100
101 /*
102  * Local Variables:
103  * mode: c
104  * style: linux
105  * c-basic-offset: 4
106  * indent-tabs-mode: nil
107  * End:
108  */