Merge unnecessary plugin setup functions
authorVasilis Tsiligiannis <b_tsiligiannis@silverton.gr>
Wed, 10 Mar 2010 08:18:42 +0000 (10:18 +0200)
committerVasilis Tsiligiannis <b_tsiligiannis@silverton.gr>
Wed, 10 Mar 2010 08:18:42 +0000 (10:18 +0200)
lib/quagga/src/olsrd_plugin.c
lib/quagga/src/plugin.c
lib/quagga/src/plugin.h

index a184306..f6e0551 100644 (file)
  * ------------------------------------------------------------------------- */
 
 #include "olsrd_plugin.h"
-#include "plugin_util.h"
-#include "olsr.h"
 #include "scheduler.h"
 #include "defs.h"
-#include "net_olsr.h"
 
 #include "quagga.h"
 #include "plugin.h"
 static void __attribute__ ((constructor)) my_init(void);
 static void __attribute__ ((destructor)) my_fini(void);
 
-static set_plugin_parameter set_redistribute;
-static set_plugin_parameter set_exportroutes;
-static set_plugin_parameter set_distance;
-static set_plugin_parameter set_localpref;
-static set_plugin_parameter set_sockpath;
-static set_plugin_parameter set_port;
-static set_plugin_parameter set_version;
-
 int
 olsrd_plugin_interface_version(void)
 {
@@ -52,13 +41,13 @@ olsrd_plugin_interface_version(void)
 }
 
 static const struct olsrd_plugin_parameters plugin_parameters[] = {
-  {.name = "Redistribute",.set_plugin_parameter = &set_redistribute,},
-  {.name = "ExportRoutes",.set_plugin_parameter = &set_exportroutes,},
-  {.name = "Distance",.set_plugin_parameter = &set_distance,},
-  {.name = "LocalPref",.set_plugin_parameter = &set_localpref,},
-  {.name = "SockPath",.set_plugin_parameter = &set_sockpath,.addon = {PATH_MAX},},
-  {.name = "Port",.set_plugin_parameter = &set_port,},
-  {.name = "Version",.set_plugin_parameter = &set_version,},
+  {.name = "Redistribute",.set_plugin_parameter = &zplugin_redistribute,},
+  {.name = "ExportRoutes",.set_plugin_parameter = &zplugin_exportroutes,},
+  {.name = "Distance",.set_plugin_parameter = &zplugin_distance,},
+  {.name = "LocalPref",.set_plugin_parameter = &zplugin_localpref,},
+  {.name = "SockPath",.set_plugin_parameter = &zplugin_sockpath,.addon = {PATH_MAX},},
+  {.name = "Port",.set_plugin_parameter = &zplugin_port,},
+  {.name = "Version",.set_plugin_parameter = &zplugin_version,},
 };
 
 void
@@ -68,105 +57,6 @@ olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *
   *size = ARRAYSIZE(plugin_parameters);
 }
 
-static int
-set_redistribute(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  const char *zroute_types[] = { "system", "kernel", "connect",
-    "static", "rip", "ripng", "ospf",
-    "ospf6", "isis", "bgp", "hsls"
-  };
-  unsigned int i;
-
-  for (i = 0; i < ARRAYSIZE(zroute_types); i++) {
-    if (!strcmp(value, zroute_types[i]))
-      if (zplugin_redistribute (i)) return 1;
-  }
-
-  return 0;
-}
-
-static int
-set_exportroutes(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  if (!strcmp(value, "only")) {
-    olsr_addroute_function = zebra_addroute;
-    olsr_delroute_function = zebra_delroute;
-    olsr_addroute6_function = zebra_addroute;
-    olsr_delroute6_function = zebra_delroute;
-    zplugin_exportroutes(1);
-  } else if (!strcmp(value, "additional")) {
-    olsr_addroute_function = zebra_addroute;
-    olsr_delroute_function = zebra_delroute;
-    olsr_addroute6_function = zebra_addroute;
-    olsr_delroute6_function = zebra_delroute;
-    zplugin_exportroutes(1);
-  } else
-    zplugin_exportroutes(0);
-  return 0;
-}
-
-static int
-set_distance(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  int distance;
-
-  if (set_plugin_int(value, &distance, addon))
-    return 1;
-  if (distance < 0 || distance > 255)
-    return 1;
-  zplugin_distance(distance);
-  return 0;
-}
-
-static int
-set_localpref(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  int b;
-
-  if (set_plugin_boolean(value, &b, addon))
-    return 1;
-  if (b)
-    zplugin_localpref();
-  return 0;
-}
-
-static int
-set_sockpath(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon)
-{
-  char sockpath[PATH_MAX];
-
-  if (set_plugin_string(value, &sockpath, addon))
-    return 1;
-  zplugin_sockpath(sockpath);
-  return 0;
-}
-
-static int
-set_port(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  unsigned int port;
-
-  if (set_plugin_port(value, &port, addon))
-    return 1;
-  zplugin_port(port);
-
-  return 0;
-}
-
-static int
-set_version(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
-{
-  int version;
-
-  if (set_plugin_int(value, &version, addon))
-    return 1;
-  if (version < 0 || version > 1)
-    return 1;
-  zplugin_version(version);
-
-  return 0;
-}
-
 int
 olsrd_plugin_init(void)
 {
index 75734db..61525b0 100644 (file)
 #include "defs.h"
 #include "olsr.h"
 #include "log.h"
+#include "olsrd_plugin.h"
+#include "plugin_util.h"
+#include "net_olsr.h"
 
 #include "common.h"
+#include "quagga.h"
 #include "packet.h"
 #include "plugin.h"
 
@@ -40,63 +44,109 @@ static void
 }
 
 int
-zplugin_redistribute(unsigned char type)
+zplugin_redistribute(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
-
-  if (type > ZEBRA_ROUTE_MAX - 1)
-    return -1;
-  zebra.redistribute[type] = 1;
+  const char *zroute_types[] = { "system", "kernel", "connect",
+    "static", "rip", "ripng", "ospf",
+    "ospf6", "isis", "bgp", "hsls"
+  };
+  unsigned int i;
+
+  for (i = 0; i < ARRAYSIZE(zroute_types) && i < ZEBRA_ROUTE_MAX; i++) {
+    if (!strcmp(value, zroute_types[i]))
+      zebra.redistribute[i] = 1;
+  }
 
   return 0;
-
 }
 
-void
-zplugin_exportroutes(unsigned char t)
+int
+zplugin_exportroutes(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
-  if (t)
+
+  if (!strcmp(value, "only")) {
+    olsr_addroute_function = zebra_addroute;
+    olsr_delroute_function = zebra_delroute;
+    olsr_addroute6_function = zebra_addroute;
+    olsr_delroute6_function = zebra_delroute;
+    zebra.options |= OPTION_EXPORT;
+  } else if (!strcmp(value, "additional")) {
+    olsr_addroute_function = zebra_addroute;
+    olsr_delroute_function = zebra_delroute;
+    olsr_addroute6_function = zebra_addroute;
+    olsr_delroute6_function = zebra_delroute;
     zebra.options |= OPTION_EXPORT;
-  else
-    zebra.options &= ~OPTION_EXPORT;
+  }
+
+  return 0;
 }
 
-void
-zplugin_distance(unsigned char dist)
+int
+zplugin_distance(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
-  zebra.distance = dist;
+  int distance;
+
+  if (set_plugin_int(value, &distance, addon))
+    return 1;
+  if (distance < 0 || distance > 255)
+    return 1;
+  zebra.distance = distance;
+
+  return 0;
 }
 
-void
-zplugin_localpref(void)
+int
+zplugin_localpref(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
-  zebra.flags &= ZEBRA_FLAG_SELECTED;
+  int b;
+
+  if (set_plugin_boolean(value, &b, addon))
+    return 1;
+  if (b)
+    zebra.flags &= ZEBRA_FLAG_SELECTED;
+
+  return 0;
 }
 
-void
-zplugin_sockpath(char *sockpath)
+int
+zplugin_sockpath(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon)
 {
   size_t len;
+  char sockpath[PATH_MAX];
 
+  if (set_plugin_string(value, &sockpath, addon))
+    return 1;
   len = strlen(sockpath) + 1;
   zebra.sockpath = my_realloc(zebra.sockpath, len, "zebra_sockpath");
   memcpy(zebra.sockpath, sockpath, len);
 
+  return 0;
 }
 
-void
-zplugin_port(unsigned int port)
+int
+zplugin_port(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
+  unsigned int port;
 
+  if (set_plugin_port(value, &port, addon))
+    return 1;
   zebra.port = port;
 
+  return 0;
 }
 
-void
-zplugin_version(char version)
+int
+zplugin_version(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused)))
 {
+  int version;
 
+  if (set_plugin_int(value, &version, addon))
+    return 1;
+  if (version < 0 || version > 1)
+    return 1;
   zebra.version = version;
 
+  return 0;
 }
 
 /*
index 95ecab3..71ba9ac 100644 (file)
  * Description        : header file for plugin.c
  * ------------------------------------------------------------------------- */
 
-int zplugin_redistribute(unsigned char);
-void zplugin_localpref(void);
-void zplugin_distance(unsigned char);
-void zplugin_exportroutes(unsigned char);
-void zplugin_sockpath(char *);
-void zplugin_port(unsigned int);
-void zplugin_version(char);
+int zplugin_redistribute(const char*, void*, set_plugin_parameter_addon);
+int zplugin_localpref(const char*, void*, set_plugin_parameter_addon);
+int zplugin_distance(const char*, void*, set_plugin_parameter_addon);
+int zplugin_exportroutes(const char*, void*, set_plugin_parameter_addon);
+int zplugin_sockpath(const char*, void*, set_plugin_parameter_addon);
+int zplugin_port(const char*, void*, set_plugin_parameter_addon);
+int zplugin_version(const char*, void*, set_plugin_parameter_addon);
 
 /*
  * Local Variables: