Convert dotdraw plugin to new interface
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 10 Jan 2011 14:57:13 +0000 (15:57 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 10 Jan 2011 14:57:13 +0000 (15:57 +0100)
lib/dot_draw/src/olsrd_dot_draw.c
lib/dot_draw/src/olsrd_dot_draw.h [deleted file]
lib/dot_draw/src/olsrd_plugin.c [deleted file]

index a889cd3..90e9bf6 100644 (file)
@@ -43,7 +43,6 @@
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
-#include "olsrd_dot_draw.h"
 #include "olsr.h"
 #include "ipcalc.h"
 #include "neighbor_table.h"
 #include "olsr.h"
 #include "ipcalc.h"
 #include "neighbor_table.h"
@@ -53,6 +52,7 @@
 #include "olsr_ip_prefix_list.h"
 #include "olsr_logging.h"
 #include "os_net.h"
 #include "olsr_ip_prefix_list.h"
 #include "olsr_logging.h"
 #include "os_net.h"
+#include "plugin_util.h"
 
 #ifdef _WRS_KERNEL
 #include <vxWorks.h>
 
 #ifdef _WRS_KERNEL
 #include <vxWorks.h>
 #include <stdarg.h>
 #endif
 
 #include <stdarg.h>
 #endif
 
+#define PLUGIN_DESCR    "OLSRD dot draw plugin"
+#define PLUGIN_AUTHOR   "Andreas Tonnesen"
+
 #ifdef _WRS_KERNEL
 static int ipc_open;
 static int ipc_socket_up;
 #define DOT_DRAW_PORT 2004
 #endif
 
 #ifdef _WRS_KERNEL
 static int ipc_open;
 static int ipc_socket_up;
 #define DOT_DRAW_PORT 2004
 #endif
 
+static bool dotdraw_init(void);
+static bool dotdraw_enable(void);
+static bool dotdraw_exit(void);
+
 static int ipc_socket;
 
 static int ipc_socket;
 
-/* IPC initialization function */
-static int
-  plugin_ipc_init(void);
+static union olsr_ip_addr ipc_accept_ip;
+static int ipc_port;
+
+/* plugin parameters */
+static const struct olsrd_plugin_parameters plugin_parameters[] = {
+  {.name = "port",.set_plugin_parameter = &set_plugin_port,.data = &ipc_port},
+  {.name = "accept",.set_plugin_parameter = &set_plugin_ipaddress,.data = &ipc_accept_ip},
+};
+
+OLSR_PLUGIN6(plugin_parameters) {
+  .descr = PLUGIN_DESCR,
+  .author = PLUGIN_AUTHOR,
+  .init = dotdraw_init,
+  .enable = dotdraw_enable,
+  .exit = dotdraw_exit,
+  .deactivate = false
+};
 
 /* Event function to register with the sceduler */
 static int
 
 /* Event function to register with the sceduler */
 static int
@@ -101,43 +122,28 @@ static void
 #define ipc_send_str(fd, data) ipc_send((fd), (data), strlen(data))
 
 
 #define ipc_send_str(fd, data) ipc_send((fd), (data), strlen(data))
 
 
-/**
- *Do initialization here
- *
- *This function is called by the my_init
- *function in uolsrd_plugin.c
- */
-#ifdef _WRS_KERNEL
-int
-olsrd_dotdraw_init(void)
-#else
-int
-olsrd_plugin_init(void)
-#endif
+static bool
+dotdraw_init(void)
 {
 {
-  /* Initial IPC value */
-  ipc_socket = -1;
-
-  plugin_ipc_init();
+  /* defaults for parameters */
+  ipc_port = 2004;
+  ipc_accept_ip.v4.s_addr = htonl(INADDR_LOOPBACK);
 
 
-  return 1;
+  ipc_socket = -1;
+  return false;
 }
 
 }
 
-
 /**
  * destructor - called at unload
  */
 /**
  * destructor - called at unload
  */
-#ifdef _WRS_KERNEL
-void
-olsrd_dotdraw_exit(void)
-#else
-void
-olsr_plugin_exit(void)
-#endif
+static bool
+dotdraw_exit(void)
 {
   if (ipc_socket != -1) {
     os_close(ipc_socket);
 {
   if (ipc_socket != -1) {
     os_close(ipc_socket);
+    ipc_socket = -1;
   }
   }
+  return false;
 }
 
 
 }
 
 
@@ -170,10 +176,8 @@ ipc_print_neigh_link(int ipc_connection, const struct nbr_entry *neighbor)
   }
 }
 
   }
 }
 
-
-static int
-plugin_ipc_init(void)
-{
+static bool
+dotdraw_enable(void) {
   struct sockaddr_in addr;
   uint32_t yes = 1;
 
   struct sockaddr_in addr;
   uint32_t yes = 1;
 
@@ -185,19 +189,19 @@ plugin_ipc_init(void)
   ipc_socket = socket(AF_INET, SOCK_STREAM, 0);
   if (ipc_socket == -1) {
     OLSR_WARN(LOG_PLUGINS, "(DOT DRAW)IPC socket %s\n", strerror(errno));
   ipc_socket = socket(AF_INET, SOCK_STREAM, 0);
   if (ipc_socket == -1) {
     OLSR_WARN(LOG_PLUGINS, "(DOT DRAW)IPC socket %s\n", strerror(errno));
-    return 0;
+    return true;
   }
 
   if (setsockopt(ipc_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&yes, sizeof(yes)) < 0) {
     OLSR_WARN(LOG_PLUGINS, "SO_REUSEADDR failed %s\n", strerror(errno));
     os_close(ipc_socket);
   }
 
   if (setsockopt(ipc_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&yes, sizeof(yes)) < 0) {
     OLSR_WARN(LOG_PLUGINS, "SO_REUSEADDR failed %s\n", strerror(errno));
     os_close(ipc_socket);
-    return 0;
+    return true;
   }
 #if defined __FreeBSD__ && defined SO_NOSIGPIPE
   if (setsockopt(ipc_socket, SOL_SOCKET, SO_NOSIGPIPE, (char *)&yes, sizeof(yes)) < 0) {
     OLSR_WARN(LOG_PLUGINS, "SO_REUSEADDR failed %s\n", strerror(errno));
     CLOSESOCKET(ipc_socket);
   }
 #if defined __FreeBSD__ && defined SO_NOSIGPIPE
   if (setsockopt(ipc_socket, SOL_SOCKET, SO_NOSIGPIPE, (char *)&yes, sizeof(yes)) < 0) {
     OLSR_WARN(LOG_PLUGINS, "SO_REUSEADDR failed %s\n", strerror(errno));
     CLOSESOCKET(ipc_socket);
-    return 0;
+    return true;
   }
 #endif
 
   }
 #endif
 
@@ -213,20 +217,20 @@ plugin_ipc_init(void)
   if (bind(ipc_socket, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
     OLSR_WARN(LOG_PLUGINS, "(DOT DRAW)IPC bind %s\n", strerror(errno));
     os_close(ipc_socket);
   if (bind(ipc_socket, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
     OLSR_WARN(LOG_PLUGINS, "(DOT DRAW)IPC bind %s\n", strerror(errno));
     os_close(ipc_socket);
-    return 0;
+    return true;
   }
 
   /* show that we are willing to listen */
   if (listen(ipc_socket, 1) == -1) {
     OLSR_WARN(LOG_PLUGINS, "(DOT DRAW)IPC listen %s\n", strerror(errno));
     os_close(ipc_socket);
   }
 
   /* show that we are willing to listen */
   if (listen(ipc_socket, 1) == -1) {
     OLSR_WARN(LOG_PLUGINS, "(DOT DRAW)IPC listen %s\n", strerror(errno));
     os_close(ipc_socket);
-    return 0;
+    return true;
   }
 
   /* Register with olsrd */
   add_olsr_socket(ipc_socket, &ipc_action, NULL, NULL, SP_PR_READ);
 
   }
 
   /* Register with olsrd */
   add_olsr_socket(ipc_socket, &ipc_action, NULL, NULL, SP_PR_READ);
 
-  return 1;
+  return false;
 }
 
 
 }
 
 
@@ -303,7 +307,7 @@ pcf_event(int ipc_connection, int chgs_neighborhood, int chgs_topology, int chgs
   }
 
   if (ipc_socket == -1) {
   }
 
   if (ipc_socket == -1) {
-    plugin_ipc_init();
+    dotdraw_enable();
   }
   return res;
 }
   }
   return res;
 }
diff --git a/lib/dot_draw/src/olsrd_dot_draw.h b/lib/dot_draw/src/olsrd_dot_draw.h
deleted file mode 100644 (file)
index c736861..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-/*
- * Dynamic linked library for the olsr.org olsr daemon
- */
-
-#ifndef _OLSRD_DOT_DRAW
-#define _OLSRD_DOT_DRAW
-
-#include "plugin.h"
-#include "plugin_util.h"
-
-extern union olsr_ip_addr ipc_accept_ip;
-extern int ipc_port;
-
-int olsrd_plugin_interface_version(void);
-int olsrd_plugin_init(void);
-void olsr_plugin_exit(void);
-void olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size);
-
-#endif
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/lib/dot_draw/src/olsrd_plugin.c b/lib/dot_draw/src/olsrd_plugin.c
deleted file mode 100644 (file)
index 29ac010..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * * Neither the name of olsr.org, olsrd nor the names of its
- *   contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Visit http://www.olsr.org for more information.
- *
- * If you find this software useful feel free to make a donation
- * to the project. For more information see the website or contact
- * the copyright holders.
- *
- */
-
-/*
- * Dynamic linked library for the olsr.org olsr daemon
- */
-#include "olsrd_dot_draw.h"
-#include "olsr.h"
-#include "defs.h"
-#include "olsr_logging.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <arpa/inet.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-
-
-#define PLUGIN_NAME    "OLSRD dot draw plugin"
-#define PLUGIN_VERSION "0.3"
-#define PLUGIN_AUTHOR   "Andreas Tonnesen"
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 5
-
-union olsr_ip_addr ipc_accept_ip;
-int ipc_port;
-
-static void my_init(void) __attribute__ ((constructor));
-static void my_fini(void) __attribute__ ((destructor));
-
-
-/**
- *Constructor
- */
-static void
-my_init(void)
-{
-  /* Print plugin info to stdout */
-  OLSR_INFO(LOG_PLUGINS, "%s\n", MOD_DESC);
-
-  /* defaults for parameters */
-  ipc_port = 2004;
-  ipc_accept_ip.v4.s_addr = htonl(INADDR_LOOPBACK);
-}
-
-
-/**
- *Destructor
- */
-static void
-my_fini(void)
-{
-  /* Calls the destruction function
-   * olsr_plugin_exit()
-   * This function should be present in your
-   * sourcefile and all data destruction
-   * should happen there - NOT HERE!
-   */
-  olsr_plugin_exit();
-}
-
-
-int
-olsrd_plugin_interface_version(void)
-{
-  return PLUGIN_INTERFACE_VERSION;
-}
-
-
-static const struct olsrd_plugin_parameters plugin_parameters[] = {
-  {.name = "port",.set_plugin_parameter = &set_plugin_port,.data = &ipc_port},
-  {.name = "accept",.set_plugin_parameter = &set_plugin_ipaddress,.data = &ipc_accept_ip},
-};
-
-void
-olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
-{
-  *params = plugin_parameters;
-  *size = ARRAYSIZE(plugin_parameters);
-}
-
-/*
- * Local Variables:
- * mode: c
- * style: linux
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */