* avoid a warning
[olsrd.git] / src / plugin_util.c
1 /*
2  * The olsr.org Optimized Link-State Routing daemon(olsrd)
3  * Copyright (c) 2007, Bernd Petrovitsch <bernd@firmix.at>
4  * Copyright (c) 2007, Sven-Ola <sven-ola@gmx.de>
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  * $Id: plugin_util.c,v 1.7 2007/10/24 13:45:00 bernd67 Exp $
41  */
42
43 #include "plugin_util.h"
44 #include "olsr.h"
45 #include "defs.h"
46
47 int set_plugin_port(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
48 {
49     char *endptr;
50     const unsigned int port = strtoul(value, &endptr, 0);
51     if (*endptr != '\0' || endptr == value) {
52         OLSR_PRINTF(0, "Illegal port number \"%s\"", value);
53         return 1;
54     }
55     if (port > 65535) {
56         OLSR_PRINTF(0, "Port number %u out of range", port);
57         return 1;
58     }
59     if (data != NULL) {
60         int *v = data;
61         *v = port;
62         OLSR_PRINTF(1, "%s port number %u\n", "Got", port);
63     } else {
64         OLSR_PRINTF(0, "%s port number %u\n", "Ignored", port);
65     }
66     return 0;
67 }
68
69 int set_plugin_ipaddress(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
70 {
71     char buf[INET6_ADDRSTRLEN];
72     union olsr_ip_addr ip_addr;
73     if (inet_pton(olsr_cnf->ip_version, value, &ip_addr) <= 0) {
74         OLSR_PRINTF(0, "Illegal IP address \"%s\"", value);
75         return 1;
76     }
77     inet_ntop(olsr_cnf->ip_version, &ip_addr, buf, sizeof(buf));
78     if (data != NULL) {
79         union olsr_ip_addr *v = data;
80         *v = ip_addr;
81         OLSR_PRINTF(1, "%s IP address %s\n", "Got", buf);
82     } else {
83         OLSR_PRINTF(0, "%s IP address %s\n", "Ignored", buf);
84     }
85     return 0;
86 }
87
88
89 int set_plugin_boolean(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
90 {
91     int *v = data;
92     if (strcasecmp (value, "yes") == 0 || strcasecmp (value, "true") == 0) {
93         *v = 1;
94     } else if (strcasecmp (value, "no") == 0 || strcasecmp (value, "false") == 0) {
95         *v = 0;
96     } else {
97         return 1;
98     }
99     return 0;
100 }
101
102 int set_plugin_int(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
103 {
104     char *endptr;
105     const int theint = strtol(value, &endptr, 0);
106     if (*endptr != '\0' || endptr == value) {
107         OLSR_PRINTF(0, "Illegal int \"%s\"", value);
108         return 1;
109     }
110     if (data != NULL) {
111         int *v = data;
112         *v = theint;
113         OLSR_PRINTF(1, "%s int %d\n", "Got", theint);
114     } else {
115         OLSR_PRINTF(0, "%s int %d\n", "Ignored", theint);
116     }
117     return 0;
118 }
119
120 int set_plugin_string(const char *value, void *data, set_plugin_parameter_addon addon)
121 {
122     if (data != NULL) {
123         char *v = data;
124         if ((unsigned)strlen(value) >= addon.ui) {
125             OLSR_PRINTF(0, "String too long \"%s\"", value);
126             return 1;
127         }
128         strcpy(v, value);
129         OLSR_PRINTF(1, "%s string %s\n", "Got", value);
130     } else {
131         OLSR_PRINTF(0, "%s string %s\n", "Ignored", value);
132     }
133     return 0;
134 }
135
136 /*
137  * Local Variables:
138  * mode: c
139  * style: linux
140  * c-basic-offset: 4
141  * indent-tabs-mode: nil
142  * End:
143  */