easier support for plugins without parameters
authorHenning Rogge <hrogge@googlemail.com>
Sun, 5 Jul 2009 09:07:42 +0000 (11:07 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Sun, 5 Jul 2009 09:07:42 +0000 (11:07 +0200)
converted lq_etx_ff plugin to new interface for static linking

lib/lq_etx_ff/src/lq_plugin_etx_ff.c
lib/lq_etx_ff/src/lq_plugin_etx_ff.h
lib/lq_etx_ff/src/olsrd_plugin.c [deleted file]
lib/lq_etx_ff/src/olsrd_plugin.h [deleted file]
src/plugin_loader.h

index 82f70f4..f458b11 100644 (file)
@@ -53,6 +53,8 @@
 
 #define LQ_PLUGIN_RELEVANT_COSTCHANGE_FF 16
 
+static int lq_etxff_post_init(void);
+
 static void lq_etxff_initialize(void);
 static void lq_etxff_deinitialize(void);
 
@@ -83,6 +85,8 @@ static char *lq_etxff_print_cost(olsr_linkcost cost, struct lqtextbuffer *buffer
 
 static struct olsr_cookie_info *default_lq_ff_timer_cookie = NULL;
 
+DEFINE_PLUGIN6_NP(PLUGIN_DESCR, PLUGIN_AUTHOR, NULL, lq_etxff_post_init, NULL, NULL, true)
+
 /* etx lq plugin (freifunk fpm version) settings */
 struct lq_handler lq_etxff_handler = {
   "etx (freifunk)",
@@ -127,6 +131,11 @@ struct lq_handler lq_etxff_handler = {
   LQ_TC_MESSAGE
 };
 
+static int lq_etxff_post_init(void) {
+  active_lq_handler = &lq_etxff_handler;
+  return 0;
+}
+
 static void
 lq_etxff_packet_parser(struct olsr *olsr, struct interface *in_if, union olsr_ip_addr *from_addr)
 {
index 925923b..69cff1f 100644 (file)
@@ -48,6 +48,9 @@
 #include "lq_packet.h"
 #include "lq_plugin.h"
 
+#define PLUGIN_DESCR "Freifunk ETX metric based on the original design of Elektra and Thomas Lopatic"
+#define PLUGIN_AUTHOR "Henning Rogge"
+
 #define LQ_ALGORITHM_ETX_FF_NAME "etx_ff"
 
 /* 16,32,64 and max. 128 */
diff --git a/lib/lq_etx_ff/src/olsrd_plugin.c b/lib/lq_etx_ff/src/olsrd_plugin.c
deleted file mode 100644 (file)
index 27da026..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.
- *
- */
-
-#include "olsrd_plugin.h"
-#include "lq_plugin_etx_ff.h"
-#include "olsr.h"
-#include "defs.h"
-#include "plugin.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#define PLUGIN_NAME    "OLSRD lq_etx_ff plugin"
-#define PLUGIN_VERSION "0.1"
-#define PLUGIN_AUTHOR   "Henning Rogge and others"
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 5
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-/**
- * Plugin interface version
- * Used by main olsrd to check plugin interface version
- */
-int
-olsrd_plugin_interface_version(void)
-{
-  return PLUGIN_INTERFACE_VERSION;
-}
-
-/**
- * Register parameters from config file
- * Called for all plugin parameters
- */
-static const struct olsrd_plugin_parameters plugin_parameters[] = {
-};
-
-void
-olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
-{
-  *params = plugin_parameters;
-  *size = ARRAYSIZE(plugin_parameters);
-}
-
-/**
- * Initialize plugin
- * Called after all parameters are passed
- */
-int
-olsrd_plugin_init(void)
-{
-  active_lq_handler = &lq_etxff_handler;
-  return 1;
-}
-
-/****************************************************************************
- *       Optional private constructor and destructor functions              *
- ****************************************************************************/
-
-/* attention: make static to avoid name clashes */
-
-static void my_init(void) __attribute__ ((constructor));
-static void my_fini(void) __attribute__ ((destructor));
-
-/**
- * Optional Private Constructor
- */
-static void
-my_init(void)
-{
-  /* Print plugin info to stdout */
-  printf("%s\n", MOD_DESC);
-}
-
-/**
- * Optional Private Destructor
- */
-static void
-my_fini(void)
-{
-}
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/lib/lq_etx_ff/src/olsrd_plugin.h b/lib/lq_etx_ff/src/olsrd_plugin.h
deleted file mode 100644 (file)
index aa0b5da..0000000
+++ /dev/null
@@ -1,64 +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_PLUGIN_LQ_ETX_FPM
-#define _OLSRD_PLUGIN_LQ_ETX_FPM
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-/* Initialization function */
-int olsrd_plugin_init(void);
-int olsrd_plugin_interface_version(void);
-
-#endif /* _OLSRD_PLUGIN_LQ_ETX_FPM */
-
-/*
- * Local Variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- */
index 3825b0c..c51f443 100644 (file)
@@ -59,6 +59,17 @@ static void hookup_plugin_definition (void) { \
   olsr_hookup_plugin(&olsr_internal_plugin_definition); \
 }
 
+#define DEFINE_PLUGIN6_NP(descr, author, pre_init, post_init, pre_cleanup, post_cleanup, deactivate) \
+static struct olsr_plugin olsr_internal_plugin_definition = { \
+  .p_name = (char*) PLUGIN_FULLNAME , .p_descr = (char*)descr, .p_author = (char*)author, \
+  .p_pre_init = pre_init, .p_post_init = post_init, .p_pre_cleanup = pre_cleanup, .p_post_cleanup = post_cleanup, \
+  .p_deactivate = deactivate, .p_version = 6, .p_param = NULL, .p_param_cnt = 0 \
+}; \
+static void hookup_plugin_definition (void) __attribute__ ((constructor)); \
+static void hookup_plugin_definition (void) { \
+  olsr_hookup_plugin(&olsr_internal_plugin_definition); \
+}
+
 /* version 5 */
 typedef int (*plugin_init_func) (void);
 typedef int (*get_interface_version_func) (void);