secure: show Git SHA and no version in plugin constructor
[olsrd.git] / lib / secure / src / olsrd_plugin.c
1
2 /*
3  * Secure OLSR plugin
4  * http://www.olsr.org
5  *
6  * Copyright (c) 2004, Andreas Tonnesen(andreto@olsr.org)
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or
10  * without modification, are permitted provided that the following
11  * conditions are met:
12  *
13  * * Redistributions of source code must retain the above copyright
14  *   notice, this list of conditions and the following disclaimer.
15  * * Redistributions in binary form must reproduce the above copyright
16  *   notice, this list of conditions and the following disclaimer in
17  *   the documentation and/or other materials provided with the
18  *   distribution.
19  * * Neither the name of olsrd, olsr.org nor the names of its
20  *   contributors may be used to endorse or promote products derived
21  *   from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  * POSSIBILITY OF SUCH DAMAGE.
35  *
36  */
37
38 #include "olsrd_plugin.h"
39 #include "olsrd_secure.h"
40 #include "olsr.h"
41 #include "builddata.h"
42
43 #include <stdio.h>
44 #include <string.h>
45
46 #define PLUGIN_NAME              "OLSRD secure plugin"
47 #define PLUGIN_INTERFACE_VERSION 5
48
49 static void my_init(void) __attribute__ ((constructor));
50 static void my_fini(void) __attribute__ ((destructor));
51
52 /*
53  * Defines the version of the plugin interface that is used
54  * THIS IS NOT THE VERSION OF YOUR PLUGIN!
55  * Do not alter unless you know what you are doing!
56  */
57 int
58 olsrd_plugin_interface_version(void)
59 {
60   return PLUGIN_INTERFACE_VERSION;
61 }
62
63 /**
64  *Constructor
65  */
66 static void
67 my_init(void)
68 {
69   /* Print plugin info to stdout */
70   olsr_printf(0, "%s (%s)\n", PLUGIN_NAME, git_descriptor);
71
72   olsr_printf(0, "[ENC]Accepted parameter pairs: (\"Keyfile\" <FILENAME>)\n");
73 }
74
75 /**
76  *Destructor
77  */
78 static void
79 my_fini(void)
80 {
81
82   /* Calls the destruction function
83    * olsr_plugin_exit()
84    * This function should be present in your
85    * sourcefile and all data destruction
86    * should happen there - NOT HERE!
87    */
88   secure_plugin_exit();
89 }
90
91 static int
92 store_string(const char *value, void *data, set_plugin_parameter_addon addon __attribute__ ((unused)))
93 {
94   char *str = data;
95   snprintf(str, FILENAME_MAX + 1, "%s", value);
96   return 0;
97 }
98
99 static const struct olsrd_plugin_parameters plugin_parameters[] = {
100   {.name = "keyfile",.set_plugin_parameter = &store_string,.data = keyfile},
101 };
102
103 void
104 olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
105 {
106   *params = plugin_parameters;
107   *size = sizeof(plugin_parameters) / sizeof(*plugin_parameters);
108 }
109
110 int
111 olsrd_plugin_init(void)
112 {
113   /* Calls the initialization function
114    * olsr_plugin_init()
115    * This function should be present in your
116    * sourcefile and all data initialization
117    * should happen there - NOT HERE!
118    */
119   if (!secure_plugin_init()) {
120     fprintf(stderr, "Could not initialize plugin!\n");
121     return 0;
122   }
123
124   if (!plugin_ipc_init()) {
125     fprintf(stderr, "Could not initialize plugin IPC!\n");
126     return 0;
127   }
128   return 1;
129
130 }
131
132 /*
133  * Local Variables:
134  * c-basic-offset: 2
135  * indent-tabs-mode: nil
136  * End:
137  */