jsoninfo: wrap generic info plugin configuration in a struct
[olsrd.git] / lib / jsoninfo / src / olsrd_jsoninfo.c
index 8255514..8f27a4a 100644 (file)
@@ -46,7 +46,6 @@
 #include <arpa/inet.h>
 #include <string.h>
 #include <unistd.h>
-#include <stddef.h>
 
 #include "ipcalc.h"
 #include "olsr.h"
@@ -54,7 +53,6 @@
 #include "../../info/http_headers.h"
 #include "../../info/info_types.h"
 #include "jsoninfo_printers.h"
-#include "olsrd_jsoninfo_helpers.h"
 #include "olsrd_jsoninfo.h"
 
 #ifdef _WIN32
@@ -63,9 +61,6 @@
 
 /* defines to make txtinfo and jsoninfo look alike */
 #define PLUGIN_NAME "JSONINFO"
-#define info_accept_ip jsoninfo_accept_ip
-#define info_listen_ip jsoninfo_listen_ip
-#define info_ipv6_only jsoninfo_ipv6_only
 
 static int ipc_socket;
 
@@ -209,7 +204,7 @@ static int plugin_ipc_init(void) {
     }
 #endif /* (defined __FreeBSD__ || defined __FreeBSD_kernel__) && defined SO_NOSIGPIPE */
 #if defined linux && defined IPV6_V6ONLY
-    if (info_ipv6_only && olsr_cnf->ip_version == AF_INET6) {
+    if (info_plugin_config.ipv6_only && olsr_cnf->ip_version == AF_INET6) {
       if (setsockopt(ipc_socket, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &yes, sizeof(yes)) < 0) {
         perror("IPV6_V6ONLY failed");
         return 0;
@@ -226,16 +221,16 @@ static int plugin_ipc_init(void) {
 #ifdef SIN6_LEN
       sst.in4.sin_len = addrlen;
 #endif /* SIN6_LEN */
-      sst.in4.sin_addr.s_addr = info_listen_ip.v4.s_addr;
-      sst.in4.sin_port = htons(ipc_port);
+      sst.in4.sin_addr.s_addr = info_plugin_config.listen_ip.v4.s_addr;
+      sst.in4.sin_port = htons(info_plugin_config.ipc_port);
     } else {
       sst.in6.sin6_family = AF_INET6;
       addrlen = sizeof(struct sockaddr_in6);
 #ifdef SIN6_LEN
       sst.in6.sin6_len = addrlen;
 #endif /* SIN6_LEN */
-      sst.in6.sin6_addr = info_listen_ip.v6;
-      sst.in6.sin6_port = htons(ipc_port);
+      sst.in6.sin6_addr = info_plugin_config.listen_ip.v6;
+      sst.in6.sin6_port = htons(info_plugin_config.ipc_port);
     }
 
     /* bind the socket to the port number */
@@ -258,7 +253,7 @@ static int plugin_ipc_init(void) {
     add_olsr_socket(ipc_socket, &ipc_action, NULL, NULL, SP_PR_READ);
 
 #ifndef NODEBUG
-    olsr_printf(2, "("PLUGIN_NAME") listening on port %d\n", ipc_port);
+    olsr_printf(2, "("PLUGIN_NAME") listening on port %d\n", info_plugin_config.ipc_port);
 #endif /* NODEBUG */
   }
   return 1;
@@ -290,8 +285,8 @@ static void ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int
   if (olsr_cnf->ip_version == AF_INET) {
     if (inet_ntop(olsr_cnf->ip_version, &pin.in4.sin_addr, addr, INET6_ADDRSTRLEN) == NULL)
       addr[0] = '\0';
-    if (!ip4equal(&pin.in4.sin_addr, &info_accept_ip.v4) && info_accept_ip.v4.s_addr != INADDR_ANY) {
-      if (!allow_localhost || ntohl(pin.in4.sin_addr.s_addr) != INADDR_LOOPBACK) {
+    if (!ip4equal(&pin.in4.sin_addr, &info_plugin_config.accept_ip.v4) && info_plugin_config.accept_ip.v4.s_addr != INADDR_ANY) {
+      if (!info_plugin_config.allow_localhost || ntohl(pin.in4.sin_addr.s_addr) != INADDR_LOOPBACK) {
         olsr_printf(1, "("PLUGIN_NAME") From host(%s) not allowed!\n", addr);
         close(ipc_connection);
         return;
@@ -301,7 +296,7 @@ static void ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int
     if (inet_ntop(olsr_cnf->ip_version, &pin.in6.sin6_addr, addr, INET6_ADDRSTRLEN) == NULL)
       addr[0] = '\0';
     /* Use in6addr_any (::) in olsr.conf to allow anybody. */
-    if (!ip6equal(&in6addr_any, &info_accept_ip.v6) && !ip6equal(&pin.in6.sin6_addr, &info_accept_ip.v6)) {
+    if (!ip6equal(&in6addr_any, &info_plugin_config.accept_ip.v6) && !ip6equal(&pin.in6.sin6_addr, &info_plugin_config.accept_ip.v6)) {
       olsr_printf(1, "("PLUGIN_NAME") From host(%s) not allowed!\n", addr);
       close(ipc_connection);
       return;
@@ -400,7 +395,7 @@ static void send_info(unsigned int send_what, int the_socket) {
 
   abuf_init(&abuf, 2 * 4096);
 
-  if (http_headers) {
+  if (info_plugin_config.http_headers) {
     build_http_header(PLUGIN_NAME, HTTP_200, content_type, &abuf, &contentLengthPlaceholderStart);
     headerLength = abuf.len;
   }
@@ -444,7 +439,7 @@ static void send_info(unsigned int send_what, int the_socket) {
     (*printer_functions.olsrd_conf)(&abuf);
   }
 
-  if (http_headers) {
+  if (info_plugin_config.http_headers) {
     http_header_adjust_content_length(&abuf, contentLengthPlaceholderStart, abuf.len - headerLength);
   }