removed end-of-line spaces
[olsrd.git] / lib / lq_etx_fpm / src / olsrd_plugin.c
1
2 /*
3  * Copyright (c) 2008, the olsr.org team
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * * Redistributions of source code must retain the above copyright notice,
11  *   this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright notice,
13  *   this list of conditions and the following disclaimer in the documentation
14  *   and/or other materials provided with the distribution.
15  * * Neither the name of the UniK olsr daemon nor the names of its contributors
16  *   may be used to endorse or promote products derived from this software
17  *   without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  */
31
32 #include "olsrd_plugin.h"
33 #include "lq_plugin_etx_fpm.h"
34 #include "olsr.h"
35 #include "defs.h"
36
37 #include "../../../src/olsrd_plugin.h"
38
39 #include <stdio.h>
40 #include <string.h>
41
42 #define PLUGIN_NAME    "OLSRD lq_etx_fpm plugin"
43 #define PLUGIN_VERSION "0.1"
44 #define PLUGIN_AUTHOR   "Henning Rogge and others"
45 #define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
46 #define PLUGIN_INTERFACE_VERSION 5
47
48 /****************************************************************************
49  *                Functions that the plugin MUST provide                    *
50  ****************************************************************************/
51
52 /**
53  * Plugin interface version
54  * Used by main olsrd to check plugin interface version
55  */
56 int
57 olsrd_plugin_interface_version(void)
58 {
59   return PLUGIN_INTERFACE_VERSION;
60 }
61
62 static int
63 set_plugin_float(const char *value, void *data, set_plugin_parameter_addon addon __attribute__ ((unused)))
64 {
65   if (data != NULL) {
66     sscanf(value, "%f", (float *)data);
67     OLSR_PRINTF(1, "%s float %f\n", "Got", *(float *)data);
68   } else {
69     OLSR_PRINTF(0, "%s float %s\n", "Ignored", value);
70   }
71   return 0;
72 }
73
74 float lq_aging = DEF_LQ_AGING;
75
76 /**
77  * Register parameters from config file
78  * Called for all plugin parameters
79  */
80 static const struct olsrd_plugin_parameters plugin_parameters[] = {
81   {.name = "LinkQualityAging",.set_plugin_parameter = &set_plugin_float,.data = &lq_aging},
82 };
83
84 void
85 olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
86 {
87   *params = plugin_parameters;
88   *size = ARRAYSIZE(plugin_parameters);
89 }
90
91 /**
92  * Initialize plugin
93  * Called after all parameters are passed
94  */
95 int
96 olsrd_plugin_init(void)
97 {
98   /* Verify parameters */
99   if (lq_aging < MIN_LQ_AGING || lq_aging > MAX_LQ_AGING) {
100     fprintf(stderr, "LQ aging factor %f is not allowed\n", lq_aging);
101     return 0;
102   }
103
104   active_lq_handler = &lq_etxfpm_handler;
105   return 1;
106 }
107
108 /****************************************************************************
109  *       Optional private constructor and destructor functions              *
110  ****************************************************************************/
111
112 /* attention: make static to avoid name clashes */
113
114 static void my_init(void) __attribute__ ((constructor));
115 static void my_fini(void) __attribute__ ((destructor));
116
117 /**
118  * Optional Private Constructor
119  */
120 static void
121 my_init(void)
122 {
123   /* Print plugin info to stdout */
124   printf("%s\n", MOD_DESC);
125 }
126
127 /**
128  * Optional Private Destructor
129  */
130 static void
131 my_fini(void)
132 {
133 }
134
135 /*
136  * Local Variables:
137  * c-basic-offset: 2
138  * indent-tabs-mode: nil
139  * End:
140  */