Convert lq_rfc plugin to new plugin interface
authorHenning Rogge <hrogge@googlemail.com>
Sun, 5 Jul 2009 10:52:39 +0000 (12:52 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Sun, 5 Jul 2009 10:52:39 +0000 (12:52 +0200)
lib/lq_rfc/src/lq_plugin_rfc.c
lib/lq_rfc/src/lq_plugin_rfc.h
lib/lq_rfc/src/olsrd_plugin.c [deleted file]
lib/lq_rfc/src/olsrd_plugin.h [deleted file]
src/olsr_cfg.h

index 953d677..eb8dbb8 100644 (file)
 #include "olsr_spf.h"
 #include "lq_packet.h"
 #include "olsr.h"
+#include "plugin_util.h"
+#include "olsr_logging.h"
 #include "lq_plugin_rfc.h"
 
+#define PLUGIN_DESCR      "RFC 3626 based hopcount metric. Does not work well, use ETX !"
+#define PLUGIN_AUTHOR     "Henning Rogge"
+
+#define DEF_USE_HYST            false
+#define HYST_THRESHOLD_HIGH     0.8
+#define HYST_THRESHOLD_LOW      0.3
+#define HYST_SCALING            0.5
+
 #define LQ_PLUGIN_LC_MULTIPLIER 1024
 
-static void lq_rfc_initialize(void);
-static void lq_rfc_deinitialize(void);
+static int set_plugin_float(const char *, void *, set_plugin_parameter_addon);
 
 static olsr_linkcost lq_rfc_calc_link_entry_cost(struct link_entry *);
 static olsr_linkcost lq_rfc_calc_lq_hello_neighbor_cost(struct lq_hello_neighbor *);
@@ -74,12 +83,12 @@ static char *lq_rfc_print_link_entry_lq(struct link_entry *entry, char separator
 static char *lq_rfc_print_tc_edge_entry_lq(struct tc_edge_entry *ptr, char separator, struct lqtextbuffer *buffer);
 static char *lq_rfc_print_cost(olsr_linkcost cost, struct lqtextbuffer *buffer);
 
-/* etx lq plugin (freifunk fpm version) settings */
+/* RFC "lq" handler (hopcount metric with hysteresis) */
 struct lq_handler lq_rfc_handler = {
   "rfc",
 
-  &lq_rfc_initialize,
-  &lq_rfc_deinitialize,
+  NULL,
+  NULL,
 
   &lq_rfc_calc_link_entry_cost,
   &lq_rfc_calc_lq_hello_neighbor_cost,
@@ -118,14 +127,30 @@ struct lq_handler lq_rfc_handler = {
   TC_MESSAGE
 };
 
-static void
-lq_rfc_initialize(void)
-{
-}
+static bool use_hysteresis = DEF_USE_HYST;
+static float scaling = HYST_SCALING;
+static float thr_high = HYST_THRESHOLD_HIGH;
+static float thr_low = HYST_THRESHOLD_LOW;
 
-static void
-lq_rfc_deinitialize(void)
+static const struct olsrd_plugin_parameters plugin_parameters[] = {
+  {.name = "UseHysteresis",.set_plugin_parameter = &set_plugin_boolean,.data = &use_hysteresis},
+  {.name = "HystScaling",.set_plugin_parameter = &set_plugin_float,.data = &scaling},
+  {.name = "HystThrHigh",.set_plugin_parameter = &set_plugin_float,.data = &thr_high},
+  {.name = "HystThrLow",.set_plugin_parameter = &set_plugin_float,.data = &thr_low},
+};
+
+DEFINE_PLUGIN6(PLUGIN_DESCR, PLUGIN_AUTHOR, NULL, NULL, NULL, NULL, false, plugin_parameters)
+
+static int
+set_plugin_float(const char *value, void *data, set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
+  if (data != NULL) {
+    sscanf(value, "%f", (float *)data);
+    OLSR_INFO(LOG_LQ_PLUGINS, "%s float %f\n", "Got", *(float *)data);
+  } else {
+    OLSR_INFO(LOG_LQ_PLUGINS, "%s float %s\n", "Ignored", value);
+  }
+  return 0;
 }
 
 static olsr_linkcost
index 814f38b..0d12a89 100644 (file)
 
 #define LQ_ALGORITHM_RFC_NAME "rfc"
 
-extern struct lq_handler lq_rfc_handler;
-
-/*
- * Link Hysteresis Constants
- */
-
-#define HYST_THRESHOLD_HIGH   0.8
-#define HYST_THRESHOLD_LOW    0.3
-#define HYST_SCALING          0.5
-
-extern bool use_hysteresis;            /* Plugin PlParam */
-extern float scaling;                  /* Plugin PlParam */
-extern float thr_high;                 /* Plugin PlParam */
-extern float thr_low;                  /* Plugin PlParam */
-
 struct lq_rfc_link_entry {
   struct link_entry core;
   float hysteresis;
diff --git a/lib/lq_rfc/src/olsrd_plugin.c b/lib/lq_rfc/src/olsrd_plugin.c
deleted file mode 100644 (file)
index efb5544..0000000
+++ /dev/null
@@ -1,151 +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 "plugin_util.h"
-#include "lq_plugin_rfc.h"
-#include "olsr.h"
-#include "defs.h"
-#include "plugin.h"
-#include "olsr_logging.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#define PLUGIN_NAME    "OLSRD lq_etx_rfc 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;
-}
-
-static int
-set_plugin_float(const char *value, void *data, set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  if (data != NULL) {
-    sscanf(value, "%f", (float *)data);
-    OLSR_INFO(LOG_LQ_PLUGINS, "%s float %f\n", "Got", *(float *)data);
-  } else {
-    OLSR_INFO(LOG_LQ_PLUGINS, "%s float %s\n", "Ignored", value);
-  }
-  return 0;
-}
-
-bool use_hysteresis = DEF_USE_HYST;
-float scaling = HYST_SCALING;
-float thr_high = HYST_THRESHOLD_HIGH;
-float thr_low = HYST_THRESHOLD_LOW;
-
-/**
- * Register parameters from config file
- * Called for all plugin parameters
- */
-static const struct olsrd_plugin_parameters plugin_parameters[] = {
-  {.name = "UseHysteresis",.set_plugin_parameter = &set_plugin_boolean,.data = &use_hysteresis},
-  {.name = "HystScaling",.set_plugin_parameter = &set_plugin_float,.data = &scaling},
-  {.name = "HystThrHigh",.set_plugin_parameter = &set_plugin_float,.data = &thr_high},
-  {.name = "HystThrLow",.set_plugin_parameter = &set_plugin_float,.data = &thr_low},
-};
-
-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_rfc_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 */
-  OLSR_INFO(LOG_LQ_PLUGINS, "%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_rfc/src/olsrd_plugin.h b/lib/lq_rfc/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 a9383df..b2a151e 100644 (file)
@@ -50,7 +50,6 @@
 #define DEF_TOS                16
 #define DEF_DEBUGLVL           "0"
 #define DEF_IPC_CONNECTIONS    0
-#define DEF_USE_HYST           false
 #define DEF_FIB_METRIC         FIBM_FLAT
 #define DEF_LQ_ALWAYS_SEND_TC  true
 #define DEF_LQ_FISH            0