2 * The olsr.org Optimized Link-State Routing daemon(olsrd)
3 * Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
16 * * Neither the name of olsr.org, olsrd nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
33 * Visit http://www.olsr.org for more information.
35 * If you find this software useful feel free to make a donation
36 * to the project. For more information see the website or contact
37 * the copyright holders.
42 * Dynamic linked library for the olsr.org olsr daemon
45 #include "olsrd_plugin.h"
46 #include "../../info/olsrd_info.h"
47 #include "olsrd_jsoninfo.h"
49 #define PLUGIN_NAME "JSONINFO"
50 #define PLUGIN_TITLE "OLSRD jsoninfo plugin"
51 #define PLUGIN_VERSION "0.0"
52 #define PLUGIN_AUTHOR "Hans-Christoph Steiner"
53 #define MOD_DESC PLUGIN_TITLE " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
54 #define PLUGIN_INTERFACE_VERSION 5
56 static info_plugin_functions_t functions = { //
58 .init = plugin_init, //
59 .is_command = isCommand, //
60 .determine_mime_type = determine_mime_type, //
61 .output_start = output_start, //
62 .output_end = output_end, //
63 .neighbors = ipc_print_neighbors, //
64 .links = ipc_print_links, //
65 .routes = ipc_print_routes, //
66 .topology = ipc_print_topology, //
67 .hna = ipc_print_hna, //
68 .mid = ipc_print_mid, //
69 .gateways = ipc_print_gateways, //
70 .sgw = ipc_print_sgw, //
71 .version = ipc_print_version, //
72 .olsrd_conf = ipc_print_olsrd_conf, //
73 .interfaces = ipc_print_interfaces, //
74 .twohop = ipc_print_twohop, //
75 .config = ipc_print_config, //
76 .plugins = ipc_print_plugins //
79 info_plugin_config_t config;
80 char uuidfile[FILENAME_MAX];
82 static void my_init(void) __attribute__ ((constructor));
83 static void my_fini(void) __attribute__ ((destructor));
88 static void my_init(void) {
89 /* Print plugin info to stdout */
90 printf("%s\n", MOD_DESC);
92 info_plugin_config_init(&config, 9090);
93 memset(uuidfile, 0, sizeof(uuidfile));
99 static void my_fini(void) {
100 /* Calls the destruction function
102 * This function should be present in your
103 * sourcefile and all data destruction
104 * should happen there - NOT HERE!
110 *Do initialization here
112 *This function is called by the my_init
113 *function in uolsrd_plugin.c
115 int olsrd_plugin_init(void) {
116 return info_plugin_init(PLUGIN_NAME, &functions, &config);
120 * destructor - called at unload
122 void olsr_plugin_exit(void) {
126 int olsrd_plugin_interface_version(void) {
127 return PLUGIN_INTERFACE_VERSION;
130 static const struct olsrd_plugin_parameters plugin_parameters[] = { //
132 INFO_PLUGIN_CONFIG_PLUGIN_PARAMETERS, //
133 { .name = "uuidfile", .set_plugin_parameter = &set_plugin_string, .data = uuidfile, .addon = { .ui = FILENAME_MAX - 1 } } //
136 void olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size) {
137 *params = plugin_parameters;
138 *size = sizeof(plugin_parameters) / sizeof(*plugin_parameters);
146 * indent-tabs-mode: nil