new plugin interface:
authorBruno Randolf <br1@einfach.org>
Sun, 29 May 2005 12:47:46 +0000 (12:47 +0000)
committerBruno Randolf <br1@einfach.org>
Sun, 29 May 2005 12:47:46 +0000 (12:47 +0000)
  - plugins can now directly access all olsrd data structures
  - a plugin only has to include "olsrd_plugin.h" and provide 3 interface functions:
      1. olsrd_plugin_interface_version()
      2. olsrd_plugin_register_param()
      3. olsrd_plugin_init()
    which are called in the above order
  - moved all plugins to the new interface

79 files changed:
lib/dot_draw/src/olsrd_dot_draw.c
lib/dot_draw/src/olsrd_dot_draw.h
lib/dot_draw/src/olsrd_plugin.c
lib/dot_draw/src/olsrd_plugin.h [deleted file]
lib/dot_draw/version-script.txt
lib/dyn_gw/src/olsrd_dyn_gw.c
lib/dyn_gw/src/olsrd_dyn_gw.h
lib/dyn_gw/src/olsrd_plugin.c
lib/dyn_gw/src/olsrd_plugin.h [deleted file]
lib/dyn_gw/version-script.txt
lib/httpinfo/src/admin_interface.c
lib/httpinfo/src/olsrd_httpinfo.c
lib/httpinfo/src/olsrd_httpinfo.h
lib/httpinfo/src/olsrd_plugin.c
lib/httpinfo/src/olsrd_plugin.h
lib/httpinfo/version-script.txt
lib/mini/src/olsrd_plugin.c
lib/mini/version-script.txt
lib/nameservice/src/compat.c [new file with mode: 0644]
lib/nameservice/src/compat.h [new file with mode: 0644]
lib/nameservice/src/nameservice.c
lib/nameservice/src/nameservice.h
lib/nameservice/src/olsrd_copy.c
lib/nameservice/src/olsrd_copy.h
lib/nameservice/src/olsrd_plugin.c
lib/nameservice/src/olsrd_plugin.h [deleted file]
lib/nameservice/version-script.txt
lib/powerinfo/src/olsr_plugin_io.h [deleted file]
lib/powerinfo/src/olsrd_plugin.c
lib/powerinfo/src/olsrd_plugin.h [deleted file]
lib/powerinfo/src/olsrd_power.c
lib/powerinfo/src/olsrd_power.h
lib/powerinfo/version-script.txt
lib/secure/src/olsrd_plugin.c
lib/secure/src/olsrd_plugin.h [deleted file]
lib/secure/src/olsrd_secure.c
lib/secure/src/olsrd_secure.h
lib/secure/src/secure_messages.h [new file with mode: 0644]
lib/secure/version-script.txt
lib/tas/src/http.c
lib/tas/src/os_unix.c
lib/tas/src/os_unix.h
lib/tas/src/plugin.c
lib/tas/version-script.txt
src/apm.h
src/defs.c [new file with mode: 0644]
src/defs.h
src/hna_set.c
src/hna_set.h
src/interfaces.c
src/interfaces.h
src/link_set.c
src/link_set.h
src/mantissa.h
src/mid_set.c
src/mid_set.h
src/mpr_selector_set.h
src/neighbor_table.c
src/neighbor_table.h
src/olsr.c
src/olsr.h
src/olsr_plugin_io.h [deleted file]
src/olsrd_plugin.h [moved from lib/mini/src/olsrd_plugin.h with 78% similarity]
src/packet.h
src/parser.c
src/parser.h
src/plugin.c [deleted file]
src/plugin_loader.c
src/plugin_loader.h
src/process_routes.c
src/process_routes.h
src/routing_table.c
src/routing_table.h
src/socket_parser.c
src/socket_parser.h
src/tc_set.c
src/tc_set.h
src/two_hop_neighbor_table.c
src/two_hop_neighbor_table.h

index c588c9d..4a8b9ec 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_dot_draw.c,v 1.13 2005/05/25 16:33:24 br1 Exp $
+ * $Id: olsrd_dot_draw.c,v 1.14 2005/05/29 12:47:40 br1 Exp $
  */
 
 /*
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
-#include "olsrd_dot_draw.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <sys/time.h>
+#include <time.h>
+#include <math.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <errno.h>
+
+#include "olsr.h"
+#include "olsr_types.h"
+#include "neighbor_table.h"
+#include "two_hop_neighbor_table.h"
+#include "tc_set.h"
+#include "hna_set.h"
+#include "mid_set.h"
+#include "link_set.h"
+#include "socket_parser.h"
+
+#include "olsrd_dot_draw.h"
+#include "olsrd_plugin.h"
+
+
 #ifdef WIN32
 #define close(x) closesocket(x)
 #endif
 
+
 int ipc_socket;
 int ipc_open;
 int ipc_connection;
 int ipc_socket_up;
 
+
+/* IPC initialization function */
+static int
+plugin_ipc_init(void);
+
+static char*
+olsr_netmask_to_string(union hna_netmask *mask);
+
+/* Event function to register with the sceduler */
+static int
+pcf_event(int, int, int);
+
+static void
+ipc_action(int);
+
+static void inline
+ipc_print_neigh_link(struct neighbor_entry *neighbor);
+
+static void inline
+ipc_print_tc_link(struct tc_entry *entry, struct topo_dst *dst_entry);
+
+static void inline
+ipc_print_net(union olsr_ip_addr *, union olsr_ip_addr *, union hna_netmask *);
+
+static int
+ipc_send(char *, int);
+
 static double 
 calc_etx(double, double);
 
@@ -66,6 +116,35 @@ static void inline
 ipc_print_neigh_link(struct neighbor_entry *);
 
 
+/**
+ *Do initialization here
+ *
+ *This function is called by the my_init
+ *function in uolsrd_plugin.c
+ */
+int
+olsrd_plugin_init()
+{
+  /* Initial IPC value */
+  ipc_open = 0;
+  ipc_socket_up = 0;
+
+  /* Register the "ProcessChanges" function */
+  register_pcf(&pcf_event);
+
+  return 1;
+}
+
+
+/**
+ * destructor - called at unload
+ */
+void
+olsr_plugin_exit()
+{
+  if(ipc_open)
+    close(ipc_socket);
+}
 
 
 static void inline
@@ -77,7 +156,7 @@ ipc_print_neigh_link(struct neighbor_entry *neighbor)
   double etx=0.0;
   char* style = "solid";
   struct link_entry* link;
-  adr = olsr_ip_to_string(main_addr);
+  adr = olsr_ip_to_string(&main_addr);
   len = sprintf( buf, "\"%s\" -> ", adr );
   ipc_send(buf, len);
   
@@ -86,17 +165,11 @@ ipc_print_neigh_link(struct neighbor_entry *neighbor)
   if (neighbor->status == 0) { // non SYM
        style = "dashed";
   }
-  else {
-    /* find best link to neighbor for the ETX */
-    //? why cant i just get it one time at fetch_olsrd_data??? (br1)
-    if(olsr_plugin_io(GETD__LINK_SET, &link, sizeof(link)) && link)
-    {
-      link_set = link; // for olsr_neighbor_best_link    
-      link = olsr_neighbor_best_link(&neighbor->neighbor_main_addr);
+  else {   
+      link = get_best_link_to_neighbor(&neighbor->neighbor_main_addr);
       if (link) {
         etx = calc_etx( link->loss_link_quality, link->neigh_link_quality);
       }
-    }
   }
     
   len = sprintf( buf, "\"%s\"[label=\"%.2f\", style=%s];\n", adr, etx, style );
@@ -108,27 +181,8 @@ ipc_print_neigh_link(struct neighbor_entry *neighbor)
   }
 }
 
-/**
- *Do initialization here
- *
- *This function is called by the my_init
- *function in uolsrd_plugin.c
- */
-int
-olsr_plugin_init()
-{
 
-  /* Initial IPC value */
-  ipc_open = 0;
-  ipc_socket_up = 0;
-
-  /* Register the "ProcessChanges" function */
-  register_pcf(&pcf_event);
-
-  return 1;
-}
-
-int
+static int
 plugin_ipc_init()
 {
   struct sockaddr_in sin;
@@ -187,7 +241,8 @@ plugin_ipc_init()
   return 1;
 }
 
-void
+
+static void
 ipc_action(int fd)
 {
   struct sockaddr_in pin;
@@ -217,42 +272,13 @@ ipc_action(int fd)
          pcf_event(1, 1, 1);
        }
     }
-
-}
-
-/*
- * destructor - called at unload
- */
-void
-olsr_plugin_exit()
-{
-  if(ipc_open)
-    close(ipc_socket);
-}
-
-
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int cmd, void *data, size_t size)
-{
-
-  switch(cmd)
-    {
-    default:
-      return 0;
-    }
-  
-  return 1;
 }
 
 
-
-
 /**
  *Scheduled event
  */
-int
+static int
 pcf_event(int changes_neighborhood,
          int changes_topology,
          int changes_hna)
@@ -338,6 +364,7 @@ pcf_event(int changes_neighborhood,
   return res;
 }
 
+
 #define MIN_LINK_QUALITY 0.01
 static double 
 calc_etx(double loss, double neigh_loss) 
@@ -366,6 +393,7 @@ ipc_print_tc_link(struct tc_entry *entry, struct topo_dst *dst_entry)
   ipc_send(buf, len);
 }
 
+
 static void inline
 ipc_print_net(union olsr_ip_addr *gw, union olsr_ip_addr *net, union hna_netmask *mask)
 {
@@ -392,8 +420,7 @@ ipc_print_net(union olsr_ip_addr *gw, union olsr_ip_addr *net, union hna_netmask
 }
 
 
-
-int
+static int
 ipc_send(char *data, int size)
 {
   if(!ipc_open)
@@ -415,57 +442,15 @@ ipc_send(char *data, int size)
 }
 
 
+static char netmask[5];
 
-
-
-/**
- *Converts a olsr_ip_addr to a string
- *Goes for both IPv4 and IPv6
- *
- *@param the IP to convert
- *@return a pointer to a static string buffer
- *representing the address in "dots and numbers"
- *
- */
-char *
-olsr_ip_to_string(union olsr_ip_addr *addr)
-{
-  static int index = 0;
-  static char buff[4][100];
-  char *ret;
-  struct in_addr in;
-  if(ipversion == AF_INET)
-    {
-      in.s_addr=addr->v4;
-      ret = inet_ntoa(in);
-    }
-  else
-    {
-      /* IPv6 */
-      ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
-    }
-
-  strncpy(buff[index], ret, 100);
-
-  ret = buff[index];
-
-  index = (index + 1) & 3;
-
-  return ret;
-}
-
-
-/**
- *This function is just as bad as the previous one :-(
- */
-char *
+static char*
 olsr_netmask_to_string(union hna_netmask *mask)
 {
   char *ret;
   struct in_addr in;
-  
-  if(ipversion == AF_INET)
+
+  if(olsr_cnf->ip_version == AF_INET)
     {
       in.s_addr = mask->v4;
       ret = inet_ntoa(in);
@@ -481,33 +466,3 @@ olsr_netmask_to_string(union hna_netmask *mask)
 
   return ret;
 }
-
-#define COMP_IP(ip1, ip2) (!memcmp(ip1, ip2, ipsize))
-struct link_entry *olsr_neighbor_best_link(union olsr_ip_addr *main)
-{
-  struct link_entry *walker;
-  double best = 0.0;
-  double curr;
-  struct link_entry *res = NULL;
-
-  // loop through all links
-
-  for (walker = link_set; walker != NULL; walker = walker->next)
-  {
-    // check whether it's a link to the requested neighbor and
-    // whether the link's quality is better than what we have
-    if(COMP_IP(main, &walker->neighbor->neighbor_main_addr))
-    {
-      curr = walker->loss_link_quality * walker->neigh_link_quality;
-
-      if (curr >= best)
-      {
-        best = curr;
-        res = walker;
-      }
-    }
-  }
-
-  return res;
-}
-
index 05eb419..07bf0f5 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_dot_draw.h,v 1.6 2005/02/20 15:51:15 kattemat Exp $
+ * $Id: olsrd_dot_draw.h,v 1.7 2005/05/29 12:47:40 br1 Exp $
  */
 
 /*
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
-#ifndef _OLSRD_PLUGIN_TEST
-#define _OLSRD_PLUGIN_TEST
+#ifndef _OLSRD_DOT_DRAW
+#define _OLSRD_DOT_DRAW
 
-#include "olsrd_plugin.h"
 
+extern struct in_addr ipc_accept_ip;
+extern int ipc_port;
 
-char netmask[5];
 
-/* Event function to register with the sceduler */
 int
-pcf_event(int, int, int);
+olsrd_plugin_init(void);
 
 void
-ipc_action(int);
-
-static void inline
-ipc_print_neigh_link(struct neighbor_entry *neighbor);
-
-static void inline
-ipc_print_tc_link(struct tc_entry *entry, struct topo_dst *dst_entry);
-
-static void inline
-ipc_print_net(union olsr_ip_addr *, union olsr_ip_addr *, union hna_netmask *);
-
-int
-ipc_send(char *, int);
-
-char *
-olsr_ip_to_string(union olsr_ip_addr *);
-
-char *
-olsr_netmask_to_string(union hna_netmask *);
-
-struct link_entry *olsr_neighbor_best_link(union olsr_ip_addr *main);
+olsr_plugin_exit(void);
 
 #endif
index 914a4c4..1101055 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_plugin.c,v 1.10 2005/02/25 22:43:21 kattemat Exp $
+ * $Id: olsrd_plugin.c,v 1.11 2005/05/29 12:47:40 br1 Exp $
  */
 
 /*
  */
 
 
-#include "olsrd_plugin.h"
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include "plugin_loader.h"
+#include <arpa/inet.h>
 
+#include "olsrd_plugin.h"
+#include "olsrd_dot_draw.h"
 
-void __attribute__ ((constructor)) 
-my_init(void);
 
-void __attribute__ ((destructor)) 
-my_fini(void);
+#define PLUGIN_NAME    "OLSRD dot draw plugin"
+#define PLUGIN_VERSION "0.3"
+#define PLUGIN_AUTHOR   "Andreas Tønnesen"
+#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
+#define PLUGIN_INTERFACE_VERSION 4
 
-int
-register_olsr_data(struct olsr_plugin_data *);
 
-int
-fetch_olsrd_data(void);
+struct in_addr ipc_accept_ip;
+int ipc_port;
 
 
-/*
- * Defines the version of the plugin interface that is used
- * THIS IS NOT THE VERSION OF YOUR PLUGIN!
- * Do not alter unless you know what you are doing!
- */
-int 
-get_plugin_interface_version()
-{
-  return PLUGIN_INTERFACE_VERSION;
-}
+static void __attribute__ ((constructor)) 
+my_init(void);
 
+static void __attribute__ ((destructor)) 
+my_fini(void);
 
 
 /**
  *Constructor
  */
-void
+static void
 my_init()
 {
   /* Print plugin info to stdout */
@@ -89,17 +83,15 @@ my_init()
   /* defaults for parameters */
   ipc_port = 2004;
   ipc_accept_ip.s_addr = htonl(INADDR_LOOPBACK);
-  
-  return;
 }
 
+
 /**
  *Destructor
  */
-void
+static void
 my_fini()
 {
-
   /* Calls the destruction function
    * olsr_plugin_exit()
    * This function should be present in your
@@ -107,12 +99,18 @@ my_fini()
    * should happen there - NOT HERE!
    */
   olsr_plugin_exit();
+}
+
 
-  return;
+int 
+olsrd_plugin_interface_version()
+{
+  return PLUGIN_INTERFACE_VERSION;
 }
 
+
 int
-register_olsr_param(char *key, char *value)
+olsrd_plugin_register_param(char *key, char *value)
 {
   if(!strcmp(key, "port"))
     {
@@ -127,156 +125,3 @@ register_olsr_param(char *key, char *value)
     }
   return 1;
 }
-
-/**
- *Register needed functions and pointers
- *
- *This function should not be changed!
- *
- */
-int
-register_olsr_data(struct olsr_plugin_data *data)
-{
-  /* IPversion */
-  ipversion = data->ipversion;
-  /* Main address */
-  main_addr = data->main_addr;
-
-  /* Multi-purpose function */
-  olsr_plugin_io = data->olsr_plugin_io;
-
-  /* Set size of IP address */
-  if(ipversion == AF_INET)
-    {
-      ipsize = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      ipsize = sizeof(struct in6_addr);
-    }
-
-  if(!fetch_olsrd_data())
-    {
-      fprintf(stderr, "Could not fetch the neccessary functions from olsrd!\n");
-      return 0;
-    }
-
-  /* Calls the initialization function
-   * olsr_plugin_init()
-   * This function should be present in your
-   * sourcefile and all data initialization
-   * should happen there - NOT HERE!
-   */
-  if(!olsr_plugin_init())
-    {
-      fprintf(stderr, "Could not initialize plugin!\n");
-      return 0;
-    }
-
-  if(!plugin_ipc_init())
-    {
-      fprintf(stderr, "Could not initialize plugin IPC!\n");
-      return 0;
-    }
-
-  return 1;
-
-}
-
-
-
-int
-fetch_olsrd_data()
-{
-  int retval = 1;
-
-  
-  /* Neighbor table */
-  if(!olsr_plugin_io(GETD__NEIGHBORTABLE, 
-                    &neighbortable, 
-                    sizeof(neighbortable)))
-  {
-    neighbortable = NULL;
-    retval = 0;
-  }
-  
-  /* Two hop neighbor table */
-  if(!olsr_plugin_io(GETD__TWO_HOP_NEIGHBORTABLE, 
-                    &two_hop_neighbortable, 
-                    sizeof(two_hop_neighbortable)))
-  {
-    two_hop_neighbortable = NULL;
-    retval = 0;
-  }
-
-  /* link set */
-  if(!olsr_plugin_io(GETD__LINK_SET, &link_set, sizeof(link_set))) {
-    link_set = NULL;
-    printf("********* err\n");
-    retval = 0;
-  }
-  
-  /* Topoloy table */
-  if(!olsr_plugin_io(GETD__TC_TABLE, 
-                    &tc_table, 
-                    sizeof(tc_table)))
-  {
-    tc_table = NULL;
-    retval = 0;
-  }
-
-  /* HNA table */
-  if(!olsr_plugin_io(GETD__HNA_SET, 
-                    &hna_set, 
-                    sizeof(hna_set)))
-  {
-    hna_set = NULL;
-    retval = 0;
-  }
-
-  /* Olsr debug output function */
-  if(!olsr_plugin_io(GETF__OLSR_PRINTF, 
-                    &olsr_printf, 
-                    sizeof(olsr_printf)))
-  {
-    olsr_printf = NULL;
-    retval = 0;
-  }
-
-  /* Olsr malloc wrapper */
-  if(!olsr_plugin_io(GETF__OLSR_MALLOC, 
-                    &olsr_malloc, 
-                    sizeof(olsr_malloc)))
-  {
-    olsr_malloc = NULL;
-    retval = 0;
-  }
-
-  /* "ProcessChanges" event registration */
-  if(!olsr_plugin_io(GETF__REGISTER_PCF, 
-                    &register_pcf, 
-                    sizeof(register_pcf)))
-  {
-    register_pcf = NULL;
-    retval = 0;
-  }
-
-
-
-  /* Add socket to OLSR select function */
-  if(!olsr_plugin_io(GETF__ADD_OLSR_SOCKET, &add_olsr_socket, sizeof(add_olsr_socket)))
-  {
-    add_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  /* Remove socket from OLSR select function */
-  if(!olsr_plugin_io(GETF__REMOVE_OLSR_SOCKET, &remove_olsr_socket, sizeof(remove_olsr_socket)))
-  {
-    remove_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  return retval;
-
-}
diff --git a/lib/dot_draw/src/olsrd_plugin.h b/lib/dot_draw/src/olsrd_plugin.h
deleted file mode 100644 (file)
index f5564d4..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
- * 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.
- *
- * $Id: olsrd_plugin.h,v 1.17 2005/05/25 16:33:24 br1 Exp $
- */
-
-/*
- * Dynamic linked library for the olsr.org olsr daemon
- */
-
-#ifndef _OLSRD_PLUGIN_DEFS
-#define _OLSRD_PLUGIN_DEFS
-
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/time.h>
-#include <time.h>
-#include <math.h>
-
-#include "olsr_plugin_io.h"
-
-#include "olsr_types.h"
-#include "neighbor_table.h"
-#include "two_hop_neighbor_table.h"
-#include "tc_set.h"
-#include "hna_set.h"
-#include "mid_set.h"
-#include "link_set.h"
-
-/*****************************************************************************
- *                               Plugin data                                 *
- *                       ALTER THIS TO YOUR OWN NEED                         *
- *****************************************************************************/
-
-#define PLUGIN_NAME    "OLSRD dot draw plugin"
-#define PLUGIN_VERSION "0.3"
-#define PLUGIN_AUTHOR   "Andreas Tønnesen"
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 3
-
-struct in_addr ipc_accept_ip;
-int ipc_port;
-
-/* The lists */
-
-struct neighbor_entry *neighbortable;
-struct neighbor_2_entry *two_hop_neighbortable;
-struct tc_entry *tc_table;
-struct hna_entry *hna_set;
-struct link_entry *link_set;
-
-/* Buffer for olsr_ip_to_string */
-
-char ipv6_buf[100]; /* buffer for IPv6 inet_htop */
-
-
-/****************************************************************************
- *                Function pointers to functions in olsrd                   *
- *              These allow direct access to olsrd functions                *
- ****************************************************************************/
-
-/* The multi-purpose funtion. All other functions are fetched trough this */
-int (*olsr_plugin_io)(int, void *, size_t);
-
-/* Register a "process changes" function */
-int (*register_pcf)(int (*)(int, int, int));
-
-/* Add a socket to the main olsrd select loop */
-void (*add_olsr_socket)(int, void(*)(int));
-
-/* Remove a socket from the main olsrd select loop */
-int (*remove_olsr_socket)(int, void(*)(int));
-
-/* get the link status to a neighbor */
-int (*check_neighbor_link)(union olsr_ip_addr *);
-
-/* olsrd printf wrapper */
-int (*olsr_printf)(int, char *, ...);
-
-/* olsrd malloc wrapper */
-void *(*olsr_malloc)(size_t, const char *);
-
-
-/****************************************************************************
- *                             Data from olsrd                              *
- *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
- *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
- *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
- ****************************************************************************/
-
-/* These two are set automatically by olsrd at load time */
-int                ipversion;  /* IPversion in use */
-union olsr_ip_addr *main_addr; /* Main address */
-
-
-size_t             ipsize;     /* Size of the ipadresses used */
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-
-/* Initialization function */
-int
-olsr_plugin_init(void);
-
-/* IPC initialization function */
-int
-plugin_ipc_init(void);
-
-int
-register_olsr_param(char *, char *);
-
-/* Destructor function */
-void
-olsr_plugin_exit(void);
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int, void *, size_t);
-
-int 
-get_plugin_interface_version(void);
-
-#endif
index 81f3f8e..3d09da3 100644 (file)
@@ -1,10 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
index ebf8593..7269bdf 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_dyn_gw.c,v 1.16 2005/05/25 16:33:24 br1 Exp $
+ * $Id: olsrd_dyn_gw.c,v 1.17 2005/05/29 12:47:40 br1 Exp $
  */
 
 /*
  * -HNA4 checking by bjoern riemer
  */
 
+#include <arpa/inet.h>
+
+#include "olsr_types.h"
 #include "olsrd_dyn_gw.h"
+#include "scheduler.h"
+#include "olsr.h"
+#include "local_hna_set.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -82,6 +89,7 @@ struct ThreadPara
 
 #endif
 
+
 /* set default interval, in case none is given in the config file */
 static int check_interval = 5;
 
@@ -98,7 +106,7 @@ add_to_ping_list(char *, struct ping_list *);
 
 struct hna_list {
   union olsr_ip_addr hna_net;
-  union hna_netmask hna_netmask;
+  union olsr_ip_addr hna_netmask;
   struct ping_list *ping_hosts;
   int hna_added;
   int probe_ok;
@@ -108,7 +116,7 @@ struct hna_list {
 static struct hna_list *
        add_to_hna_list(struct hna_list *,
                                union olsr_ip_addr *hna_net,
-                               union hna_netmask *hna_netmask );
+                               union olsr_ip_addr *hna_netmask );
 
 struct hna_list *the_hna_list = NULL;
 
@@ -116,7 +124,7 @@ static void *
 looped_checks(void *foo);
 
 static int
-check_gw(union olsr_ip_addr *, union hna_netmask *,struct ping_list *);
+check_gw(union olsr_ip_addr *, union olsr_ip_addr *,struct ping_list *);
 
 static int
 ping_is_possible(struct ping_list *);
@@ -128,14 +136,14 @@ ping_is_possible(struct ping_list *);
  * read config file parameters
  */  
 int
-register_olsr_param(char *key, char *value)
+olsrd_plugin_register_param(char *key, char *value)
 {
   /* foo_addr is only used for call to inet_aton */ 
   struct in_addr foo_addr;
   int retval = -1;
   int i;
   union olsr_ip_addr temp_net;
-  union hna_netmask temp_netmask;
+  union olsr_ip_addr temp_netmask;
   char s_netaddr[16];
   char s_mask[16];
  
@@ -188,7 +196,7 @@ register_olsr_param(char *key, char *value)
  *It is ran _after_ register_olsr_param
  */
 int
-olsr_plugin_init()
+olsrd_plugin_init()
 {
   pthread_t ping_thread;
   
@@ -214,40 +222,12 @@ olsr_plugin_init()
 }
 
 
-
-/*
- * destructor - called at unload
- */
-void
-olsr_plugin_exit()
-{
-
-}
-
-
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int cmd, void *data, size_t size)
-{
-
-  switch(cmd)
-    {
-    default:
-      return 0;
-    }
-  
-  return 1;
-}
-
-
-
 /**
  * Scheduled event to update the hna table,
  * called from olsrd main thread to keep the hna table thread-safe
  */
 void
-olsr_event_doing_hna()
+olsr_event_doing_hna(void *foo)
 {
        struct hna_list *li;
        /*
@@ -276,11 +256,6 @@ olsr_event_doing_hna()
                }
        }
 }
-  
-
-
-
-
 
 
 
@@ -308,7 +283,7 @@ looped_checks(void *foo)
     struct timespec remainder_spec;
     /* the time to wait in "Interval" sec (see connfig), default=5sec */
     struct timespec sleeptime_spec  = {(time_t) check_interval, 0L };
-    
+
     li=the_hna_list;
     while(li){
            /* check for gw in table entry and if Ping IPs are given also do pings */
@@ -325,7 +300,7 @@ looped_checks(void *foo)
 
 
 static int
-check_gw(union olsr_ip_addr *net, union hna_netmask *mask, struct ping_list *the_ping_list)
+check_gw(union olsr_ip_addr *net, union olsr_ip_addr *mask, struct ping_list *the_ping_list)
 {
     char buff[1024], iface[16];
     olsr_u32_t gate_addr, dest_addr, netmask;
@@ -435,7 +410,7 @@ add_to_ping_list(char *ping_address, struct ping_list *the_ping_list)
 
 
 static struct hna_list *
-add_to_hna_list(struct hna_list * list_root, union olsr_ip_addr *hna_net, union hna_netmask *hna_netmask )
+add_to_hna_list(struct hna_list * list_root, union olsr_ip_addr *hna_net, union olsr_ip_addr *hna_netmask )
 {
   struct hna_list *new = (struct hna_list *) malloc(sizeof(struct hna_list));
   if(new == NULL)
index dc8ae32..39eb100 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_dyn_gw.h,v 1.10 2005/02/19 17:56:05 kattemat Exp $
+ * $Id: olsrd_dyn_gw.h,v 1.11 2005/05/29 12:47:40 br1 Exp $
  */
 
 #ifndef _OLSRD_PLUGIN_TEST
@@ -57,6 +57,6 @@ olsr_timeout(void);
 
 /* Event function to register with the scheduler */
 void
-olsr_event_doing_hna(void);
+olsr_event_doing_hna(void *);
 
 #endif
index 20f6549..bbd28a7 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_plugin.c,v 1.11 2005/02/25 22:43:21 kattemat Exp $
+ * $Id: olsrd_plugin.c,v 1.12 2005/05/29 12:47:40 br1 Exp $
  */
 
 #include "olsrd_plugin.h"
-#include "plugin_loader.h"
 #include <stdio.h>
 
+#define PLUGIN_NAME    "OLSRD dynamic gateway plugin"
+#define PLUGIN_VERSION "0.4"
+#define PLUGIN_AUTHOR   "Various artists"
+#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
+#define PLUGIN_INTERFACE_VERSION 4
+
+
 /**
  * "Private" declarations
  */
 
-void __attribute__ ((constructor)) 
+static void __attribute__ ((constructor)) 
 my_init(void);
 
-void __attribute__ ((destructor)) 
-my_fini(void);
-
-int
-register_olsr_data(struct olsr_plugin_data *);
-
-int
-fetch_olsrd_data(void);
-
 
 /*
  * Defines the version of the plugin interface that is used
@@ -67,7 +64,7 @@ fetch_olsrd_data(void);
  * Do not alter unless you know what you are doing!
  */
 int 
-get_plugin_interface_version()
+olsrd_plugin_interface_version()
 {
   return PLUGIN_INTERFACE_VERSION;
 }
@@ -84,117 +81,3 @@ my_init()
 
   return;
 }
-
-/**
- *Destructor
- */
-void
-my_fini()
-{
-
-  /* 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();
-
-  return;
-}
-
-
-
-/**
- *Register needed functions and pointers
- *
- *This function should not be changed!
- *
- */
-int
-register_olsr_data(struct olsr_plugin_data *data)
-{
-  /* IPversion */
-  ipversion = data->ipversion;
-  /* Main address */
-  main_addr = data->main_addr;
-
-  /* Multi-purpose function */
-  olsr_plugin_io = data->olsr_plugin_io;
-
-  /* Set size of IP address */
-  if(ipversion == AF_INET)
-    {
-      ipsize = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      ipsize = sizeof(struct in6_addr);
-    }
-
-  if(!fetch_olsrd_data())
-    {
-      fprintf(stderr, "Could not fetch the neccessary functions from olsrd!\n");
-      return 0;
-    }
-
-  /* Calls the initialization function
-   * olsr_plugin_init()
-   * This function should be present in your
-   * sourcefile and all data initialization
-   * should happen there - NOT HERE!
-   */
-  if(!olsr_plugin_init())
-    {
-      fprintf(stderr, "Could not initialize plugin!\n");
-      return 0;
-    }
-
-  return 1;
-
-}
-
-
-
-int
-fetch_olsrd_data()
-{
-  int retval = 1;
-
-
-  /* Olsr debug output function */
-  if(!olsr_plugin_io(GETF__OLSR_PRINTF, 
-                    &olsr_printf, 
-                    sizeof(olsr_printf)))
-  {
-    olsr_printf = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler event registration */
-  if(!olsr_plugin_io(GETF__OLSR_REGISTER_SCHEDULER_EVENT, 
-                    &olsr_register_scheduler_event, 
-                    sizeof(olsr_register_scheduler_event)))
-  {
-    olsr_register_scheduler_event = NULL;
-    retval = 0;
-  }
-
-
-  /* Add hna net IPv4 */
-  if(!olsr_plugin_io(GETF__ADD_LOCAL_HNA4_ENTRY, &add_local_hna4_entry, sizeof(add_local_hna4_entry)))
-  {
-    add_local_hna4_entry = NULL;
-    retval = 0;
-  }
-
-  /* Remove hna net IPv4 */
-  if(!olsr_plugin_io(GETF__REMOVE_LOCAL_HNA4_ENTRY, &remove_local_hna4_entry, sizeof(remove_local_hna4_entry)))
-  {
-    remove_local_hna4_entry = NULL;
-    retval = 0;
-  }
-
-  return retval;
-
-}
diff --git a/lib/dyn_gw/src/olsrd_plugin.h b/lib/dyn_gw/src/olsrd_plugin.h
deleted file mode 100644 (file)
index e7996a2..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
- * 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.
- *
- * $Id: olsrd_plugin.h,v 1.15 2005/05/25 16:33:24 br1 Exp $
- */
-
-#ifndef _OLSRD_PLUGIN_DEFS
-#define _OLSRD_PLUGIN_DEFS
-
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/time.h>
-#include <time.h>
-#include <math.h>
-
-#include "olsr_plugin_io.h"
-#include "olsr_types.h"
-
-#define PLUGIN_NAME    "OLSRD dynamic gateway plugin"
-#define PLUGIN_VERSION "0.4"
-#define PLUGIN_AUTHOR   "Various artists"
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 3
-
-/****************************************************************************
- *                Function pointers to functions in olsrd                   *
- *              These allow direct access to olsrd functions                *
- ****************************************************************************/
-
-/* The multi-purpose funtion. All other functions are fetched trough this */
-int (*olsr_plugin_io)(int, void *, size_t);
-
-/* Register a scheduled event */
-int (*olsr_register_scheduler_event)(void (*)(void), void*, float, float, olsr_u8_t *);
-
-/* olsrd printf wrapper */
-int (*olsr_printf)(int, char *, ...);
-
-/* Add hna net IPv4 */
-void (*add_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
-
-/* Remove hna net IPv4 */
-int (*remove_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
-
-
-/****************************************************************************
- *                             Data from olsrd                              *
- *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
- *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
- *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
- ****************************************************************************/
-
-/* These two are set automatically by olsrd at load time */
-int                ipversion;  /* IPversion in use */
-union olsr_ip_addr *main_addr; /* Main address */
-
-
-size_t             ipsize;     /* Size of the ipadresses used */
-struct timeval     *now;       /* the olsrds schedulers idea of current time */
-
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-
-/* Initialization function */
-int
-olsr_plugin_init(void);
-
-/* Destructor function */
-void
-olsr_plugin_exit(void);
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int, void *, size_t);
-
-int
-register_olsr_param(char *, char *);
-
-int 
-get_plugin_interface_version(void);
-
-#endif
index 81f3f8e..3d09da3 100644 (file)
@@ -1,10 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
index 70b16c9..a86f176 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: admin_interface.c,v 1.5 2005/03/14 19:38:39 kattemat Exp $
+ * $Id: admin_interface.c,v 1.6 2005/05/29 12:47:41 br1 Exp $
  */
 
 /*
@@ -71,9 +71,9 @@ build_admin_body(char *buf, olsr_u32_t bufsize)
   size += sprintf(&buf[size], "<tr>\n");
 
   size += sprintf(&buf[size], admin_basic_setting_int,
-                 "Debug level:", "debug_level", 2, cfg->debug_level);
+                 "Debug level:", "debug_level", 2, olsr_cnf->debug_level);
   size += sprintf(&buf[size], admin_basic_setting_float,
-                 "Pollrate:", "pollrate", 4, cfg->pollrate);
+                 "Pollrate:", "pollrate", 4, olsr_cnf->pollrate);
   size += sprintf(&buf[size], admin_basic_setting_string,
                  "TOS:", "tos", 6, "TBD");
 
@@ -81,24 +81,24 @@ build_admin_body(char *buf, olsr_u32_t bufsize)
   size += sprintf(&buf[size], "<tr>\n");
 
   size += sprintf(&buf[size], admin_basic_setting_int,
-                 "TC redundancy:", "tc_redundancy", 1, cfg->tc_redundancy);
+                 "TC redundancy:", "tc_redundancy", 1, olsr_cnf->tc_redundancy);
   size += sprintf(&buf[size], admin_basic_setting_int,
-                 "MPR coverage:", "mpr_coverage", 1, cfg->mpr_coverage);
+                 "MPR coverage:", "mpr_coverage", 1, olsr_cnf->mpr_coverage);
   size += sprintf(&buf[size], admin_basic_setting_int,
-                 "Willingness:", "willingness", 1, cfg->willingness);
+                 "Willingness:", "willingness", 1, olsr_cnf->willingness);
 
   size += sprintf(&buf[size], "</tr>\n");
   size += sprintf(&buf[size], "<tr>\n");
 
-  if(cfg->use_hysteresis)
+  if(olsr_cnf->use_hysteresis)
     {
       size += sprintf(&buf[size], admin_basic_setting_float,
-                     "Hyst scaling:", "hyst_scaling", 4, cfg->hysteresis_param.scaling);
+                     "Hyst scaling:", "hyst_scaling", 4, olsr_cnf->hysteresis_param.scaling);
 
       size += sprintf(&buf[size], admin_basic_setting_float,
-                     "Lower thr:", "hyst_lower", 4, cfg->hysteresis_param.thr_low);
+                     "Lower thr:", "hyst_lower", 4, olsr_cnf->hysteresis_param.thr_low);
       size += sprintf(&buf[size], admin_basic_setting_float,
-                     "Upper thr:", "hyst_upper", 4, cfg->hysteresis_param.thr_high);
+                     "Upper thr:", "hyst_upper", 4, olsr_cnf->hysteresis_param.thr_high);
     }
   else
     {
@@ -108,12 +108,12 @@ build_admin_body(char *buf, olsr_u32_t bufsize)
   size += sprintf(&buf[size], "</tr>\n");
   size += sprintf(&buf[size], "<tr>\n");
   
-  if(cfg->lq_level)
+  if(olsr_cnf->lq_level)
     {
       size += sprintf(&buf[size], admin_basic_setting_int,
-                     "LQ level:", "lq_level", 1, cfg->lq_level);
+                     "LQ level:", "lq_level", 1, olsr_cnf->lq_level);
       size += sprintf(&buf[size], admin_basic_setting_int,
-                     "LQ winsize:", "lq_wsize", 2, cfg->lq_wsize);
+                     "LQ winsize:", "lq_wsize", 2, olsr_cnf->lq_wsize);
     }
   else
     {
@@ -139,11 +139,11 @@ build_admin_body(char *buf, olsr_u32_t bufsize)
 
   i++;
 
-  if((cfg->ip_version == AF_INET) && (cfg->hna4_entries))
+  if((olsr_cnf->ip_version == AF_INET) && (olsr_cnf->hna4_entries))
     {
       struct hna4_entry *hna4;
       
-      for(hna4 = cfg->hna4_entries; hna4; hna4 = hna4->next)
+      for(hna4 = olsr_cnf->hna4_entries; hna4; hna4 = hna4->next)
        {
          size += sprintf(&buf[size], admin_frame[i], 
                          olsr_ip_to_string((union olsr_ip_addr *)&hna4->net),
@@ -152,11 +152,11 @@ build_admin_body(char *buf, olsr_u32_t bufsize)
                          olsr_ip_to_string((union olsr_ip_addr *)&hna4->netmask));
        }
     }
-  else if((cfg->ip_version == AF_INET6) && (cfg->hna6_entries))
+  else if((olsr_cnf->ip_version == AF_INET6) && (olsr_cnf->hna6_entries))
     {
       struct hna6_entry *hna6;
        
-      for(hna6 = cfg->hna6_entries; hna6; hna6 = hna6->next)
+      for(hna6 = olsr_cnf->hna6_entries; hna6; hna6 = hna6->next)
        {
          size += sprintf(&buf[size], admin_frame[i], 
                          olsr_ip_to_string((union olsr_ip_addr *)&hna6->net),
@@ -190,7 +190,7 @@ process_param(char *key, char *value)
       if((ival < 0) || (ival > 9))
        return -1;
 
-      cfg->debug_level = ival;
+      olsr_cnf->debug_level = ival;
       return 1;
     }
 
@@ -200,7 +200,7 @@ process_param(char *key, char *value)
       if((ival < 0) || (ival > 3))
        return -1;
 
-      cfg->tc_redundancy = ival;
+      olsr_cnf->tc_redundancy = ival;
       return 1;
     }
 
@@ -210,7 +210,7 @@ process_param(char *key, char *value)
       if(ival < 0)
        return -1;
 
-      cfg->mpr_coverage = ival;
+      olsr_cnf->mpr_coverage = ival;
       return 1;
     }
 
@@ -220,7 +220,7 @@ process_param(char *key, char *value)
       if((ival < 0) || (ival > 7))
        return -1;
 
-      cfg->willingness = ival;
+      olsr_cnf->willingness = ival;
       return 1;
     }
 
@@ -230,7 +230,7 @@ process_param(char *key, char *value)
       if((ival < 0) || (ival > 2))
        return -1;
 
-      cfg->lq_level = ival;
+      olsr_cnf->lq_level = ival;
       return 1;
     }
 
@@ -240,7 +240,7 @@ process_param(char *key, char *value)
       if((ival < 0) || (ival > 10))
        return -1;
 
-      cfg->lq_wsize = ival;
+      olsr_cnf->lq_wsize = ival;
       return 1;
     }
 
@@ -252,7 +252,7 @@ process_param(char *key, char *value)
        return -1;
 
       printf("HYST SCALING: %f\n", fval);
-      cfg->hysteresis_param.scaling = fval;
+      olsr_cnf->hysteresis_param.scaling = fval;
       return 1;
     }
 
@@ -263,7 +263,7 @@ process_param(char *key, char *value)
       if((fval < 0.0) || (fval > 1.0))
        return -1;
 
-      cfg->hysteresis_param.scaling = fval;
+      olsr_cnf->hysteresis_param.scaling = fval;
       return 1;
     }
 
@@ -274,7 +274,7 @@ process_param(char *key, char *value)
       if((fval < 0.0) || (fval > 1.0))
        return -1;
 
-      cfg->hysteresis_param.thr_low = fval;
+      olsr_cnf->hysteresis_param.thr_low = fval;
       return 1;
     }
 
@@ -285,7 +285,7 @@ process_param(char *key, char *value)
       if((fval < 0.0) || (fval > 1.0))
        return -1;
 
-      cfg->hysteresis_param.thr_high = fval;
+      olsr_cnf->hysteresis_param.thr_high = fval;
       return 1;
     }
 
@@ -296,7 +296,7 @@ process_param(char *key, char *value)
       if((fval < 0.0) || (fval > 1.0))
        return -1;
 
-      cfg->pollrate = fval;
+      olsr_cnf->pollrate = fval;
       return 1;
     }
 
index 5a01c0d..5fba5c2 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_httpinfo.c,v 1.52 2005/04/20 17:52:11 br1 Exp $
+ * $Id: olsrd_httpinfo.c,v 1.53 2005/05/29 12:47:41 br1 Exp $
  */
 
 /*
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
-#include "olsrd_httpinfo.h"
-#include "olsr_cfg.h"
-#include "link_set.h"
-#include "gfx.h"
-#include "html.h"
-#include "admin_interface.h"
-#include "interfaces.h"
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <errno.h>
+
+#include "olsr.h"
+#include "olsr_cfg.h"
+#include "interfaces.h"
 #include "olsr_protocol.h"
+#include "net_olsr.h"
+#include "link_set.h"
+#include "socket_parser.h"
+
+#include "olsrd_httpinfo.h"
+#include "admin_interface.h"
+#include "html.h"
+#include "gfx.h"
 
 #ifdef OS
 #undef OS
@@ -121,6 +126,7 @@ struct dynamic_file_entry
   int(*process_data_cb)(char *, olsr_u32_t, char *, olsr_u32_t);
 };
 
+
 static int
 get_http_socket(int);
 
@@ -228,7 +234,7 @@ struct dynamic_file_entry dynamic_files[] =
  *function in uolsrd_plugin.c
  */
 int
-olsr_plugin_init()
+olsrd_plugin_init()
 {
   get_copyright_string();
   /* Get start time */
@@ -652,22 +658,6 @@ olsr_plugin_exit()
 }
 
 
-/* Mulitpurpose funtion */
-int
-plugin_io(int cmd, void *data, size_t size)
-{
-
-  switch(cmd)
-    {
-    default:
-      return 0;
-    }
-  
-  return 1;
-
-}
-
-
 static int
 build_frame(char *title, 
            char *link, 
@@ -706,8 +696,8 @@ build_routes_body(char *buf, olsr_u32_t bufsize)
   /* Neighbors */
   for(index = 0;index < HASHSIZE;index++)
     {
-      for(routes = host_routes[index].next;
-         routes != &host_routes[index];
+      for(routes = routingtable[index].next;
+         routes != &routingtable[index];
          routes = routes->next)
        {
          size += sprintf(&buf[size], "<tr><td>%s</td><td>%s</td><td>%d</td><td>%.2f</td><td>%s</td><td>HOST</td></tr>\n",
@@ -781,37 +771,37 @@ build_config_body(char *buf, olsr_u32_t bufsize)
 
     size += sprintf(&buf[size], "<table width=\"100%%\" border=0>\n<tr>");
 
-    size += sprintf(&buf[size], "<td>Main address: <b>%s</b></td>\n", olsr_ip_to_string(main_addr));
+    size += sprintf(&buf[size], "<td>Main address: <b>%s</b></td>\n", olsr_ip_to_string(&main_addr));
     
-    size += sprintf(&buf[size], "<td>IP version: %d</td>\n", cfg->ip_version == AF_INET ? 4 : 6);
+    size += sprintf(&buf[size], "<td>IP version: %d</td>\n", olsr_cnf->ip_version == AF_INET ? 4 : 6);
 
-    size += sprintf(&buf[size], "<td>Debug level: %d</td>\n", cfg->debug_level);
+    size += sprintf(&buf[size], "<td>Debug level: %d</td>\n", olsr_cnf->debug_level);
 
     size += sprintf(&buf[size], "</tr>\n<tr>\n");
 
-    size += sprintf(&buf[size], "<td>Pollrate: %0.2f</td>\n", cfg->pollrate);
-    size += sprintf(&buf[size], "<td>TC redundancy: %d</td>\n", cfg->tc_redundancy);
-    size += sprintf(&buf[size], "<td>MPR coverage: %d</td>\n", cfg->mpr_coverage);
+    size += sprintf(&buf[size], "<td>Pollrate: %0.2f</td>\n", olsr_cnf->pollrate);
+    size += sprintf(&buf[size], "<td>TC redundancy: %d</td>\n", olsr_cnf->tc_redundancy);
+    size += sprintf(&buf[size], "<td>MPR coverage: %d</td>\n", olsr_cnf->mpr_coverage);
 
 
     size += sprintf(&buf[size], "</tr>\n<tr>\n");
 
-    size += sprintf(&buf[size], "<td>TOS: 0x%04x</td>\n", cfg->tos);
+    size += sprintf(&buf[size], "<td>TOS: 0x%04x</td>\n", olsr_cnf->tos);
 
-    size += sprintf(&buf[size], "<td>Willingness: %d %s</td>\n", cfg->willingness, cfg->willingness_auto ? "(auto)" : "");
+    size += sprintf(&buf[size], "<td>Willingness: %d %s</td>\n", olsr_cnf->willingness, olsr_cnf->willingness_auto ? "(auto)" : "");
     
     size += sprintf(&buf[size], "</tr>\n<tr>\n");
 
-    size += sprintf(&buf[size], "<td>Hysteresis: %s</td>\n", cfg->use_hysteresis ? "Enabled" : "Disabled");
+    size += sprintf(&buf[size], "<td>Hysteresis: %s</td>\n", olsr_cnf->use_hysteresis ? "Enabled" : "Disabled");
        
-    size += sprintf(&buf[size], "<td>Hyst scaling: %0.2f</td>\n", cfg->hysteresis_param.scaling);
-    size += sprintf(&buf[size], "<td>Hyst lower/upper: %0.2f/%0.2f</td>\n", cfg->hysteresis_param.thr_low, cfg->hysteresis_param.thr_high);
+    size += sprintf(&buf[size], "<td>Hyst scaling: %0.2f</td>\n", olsr_cnf->hysteresis_param.scaling);
+    size += sprintf(&buf[size], "<td>Hyst lower/upper: %0.2f/%0.2f</td>\n", olsr_cnf->hysteresis_param.thr_low, olsr_cnf->hysteresis_param.thr_high);
 
     size += sprintf(&buf[size], "</tr>\n<tr>\n");
 
-    size += sprintf(&buf[size], "<td>LQ extention: %s</td>\n", cfg->lq_level ? "Enabled" : "Disabled");
-    size += sprintf(&buf[size], "<td>LQ level: %d</td>\n", cfg->lq_level);
-    size += sprintf(&buf[size], "<td>LQ winsize: %d</td>\n", cfg->lq_wsize);
+    size += sprintf(&buf[size], "<td>LQ extention: %s</td>\n", olsr_cnf->lq_level ? "Enabled" : "Disabled");
+    size += sprintf(&buf[size], "<td>LQ level: %d</td>\n", olsr_cnf->lq_level);
+    size += sprintf(&buf[size], "<td>LQ winsize: %d</td>\n", olsr_cnf->lq_wsize);
     size += sprintf(&buf[size], "<td></td>\n");
 
     size += sprintf(&buf[size], "</tr></table>\n");
@@ -822,7 +812,7 @@ build_config_body(char *buf, olsr_u32_t bufsize)
     size += sprintf(&buf[size], "<table width=\"100%%\" border=0>\n");
 
 
-    for(ifs = cfg->interfaces; ifs; ifs = ifs->next)
+    for(ifs = olsr_cnf->interfaces; ifs; ifs = ifs->next)
       {
        struct interface *rifs = ifs->interf;
 
@@ -833,7 +823,7 @@ build_config_body(char *buf, olsr_u32_t bufsize)
            continue;
          }
        
-       if(cfg->ip_version == AF_INET)
+       if(olsr_cnf->ip_version == AF_INET)
          {
            size += sprintf(&buf[size], "<tr><td>IP: %s</td>\n", 
                            sockaddr_to_string(&rifs->int_addr));
@@ -859,7 +849,7 @@ build_config_body(char *buf, olsr_u32_t bufsize)
 
     size += sprintf(&buf[size], "</table>\n");
 
-    if(cfg->allow_no_interfaces)
+    if(olsr_cnf->allow_no_interfaces)
       size += sprintf(&buf[size], "<i>Olsrd is configured to run even if no interfaces are available</i><br>\n");
     else
       size += sprintf(&buf[size], "<i>Olsrd is configured to halt if no interfaces are available</i><br>\n");
@@ -868,7 +858,7 @@ build_config_body(char *buf, olsr_u32_t bufsize)
 
     size += sprintf(&buf[size], "<table width=\"100%%\" border=0><tr><th>Name</th><th>Parameters</th></tr>\n");
 
-    for(pentry = cfg->plugins; pentry; pentry = pentry->next)
+    for(pentry = olsr_cnf->plugins; pentry; pentry = pentry->next)
       {
        size += sprintf(&buf[size], "<tr><td>%s</td>\n", pentry->name);
 
@@ -888,14 +878,14 @@ build_config_body(char *buf, olsr_u32_t bufsize)
     size += sprintf(&buf[size], "</table>\n");
 
 
-    if((cfg->ip_version == AF_INET) && (cfg->hna4_entries))
+    if((olsr_cnf->ip_version == AF_INET) && (olsr_cnf->hna4_entries))
       {
        struct hna4_entry *hna4;
        
        size += sprintf(&buf[size], "<h2>Announced HNA entries</h2>\n");
        size += sprintf(&buf[size], "<table width=\"100%%\" BORDER=0 CELLSPACING=0 CELLPADDING=0 ALIGN=center><tr><th>Network</th><th>Netmask</th></tr>\n");
        
-       for(hna4 = cfg->hna4_entries; hna4; hna4 = hna4->next)
+       for(hna4 = olsr_cnf->hna4_entries; hna4; hna4 = hna4->next)
          {
            size += sprintf(&buf[size], "<tr><td>%s</td><td>%s</td></tr>\n", 
                            olsr_ip_to_string((union olsr_ip_addr *)&hna4->net),
@@ -904,14 +894,14 @@ build_config_body(char *buf, olsr_u32_t bufsize)
        
        size += sprintf(&buf[size], "</table>\n");
       }
-    else if((cfg->ip_version == AF_INET6) && (cfg->hna6_entries))
+    else if((olsr_cnf->ip_version == AF_INET6) && (olsr_cnf->hna6_entries))
       {
        struct hna6_entry *hna6;
        
        size += sprintf(&buf[size], "<h2>Announced HNA entries</h2>\n");
        size += sprintf(&buf[size], "<table width=\"100%%\" BORDER=0 CELLSPACING=0 CELLPADDING=0 ALIGN=center><tr><th>Network</th><th>Prefix length</th></tr>\n");
        
-       for(hna6 = cfg->hna6_entries; hna6; hna6 = hna6->next)
+       for(hna6 = olsr_cnf->hna6_entries; hna6; hna6 = hna6->next)
          {
            size += sprintf(&buf[size], "<tr><td>%s</td><td>%d</td></tr>\n", 
                            olsr_ip_to_string((union olsr_ip_addr *)&hna6->net),
@@ -939,8 +929,7 @@ build_neigh_body(char *buf, olsr_u32_t bufsize)
   size += sprintf(&buf[size], "<table width=\"100%%\" BORDER=0 CELLSPACING=0 CELLPADDING=0 ALIGN=center><tr><th>Local IP</th><th>remote IP</th><th>Hysteresis</th><th>LinkQuality</th><th>lost</th><th>total</th><th>NLQ</th><th>ETX</th></tr>\n");
 
   /* Link set */
-  if(olsr_plugin_io(GETD__LINK_SET, &link, sizeof(link)) && link)
-  {
+  link = link_set;
     while(link)
       {
        size += sprintf(&buf[size], "<tr><td>%s</td><td>%s</td><td>%0.2f</td><td>%0.2f</td><td>%d</td><td>%d</td><td>%0.2f</td><td>%0.2f</td></tr>\n",
@@ -955,7 +944,6 @@ build_neigh_body(char *buf, olsr_u32_t bufsize)
 
        link = link->next;
       }
-  }
 
   size += sprintf(&buf[size], "</table>\n");
 
@@ -1181,7 +1169,7 @@ build_cfgfile_body(char *buf, olsr_u32_t bufsize)
       i++;
     }
 
-  size += olsrd_write_cnf_buf(cfg, &buf[size], bufsize-size);
+  size += olsrd_write_cnf_buf(olsr_cnf, &buf[size], bufsize-size);
   
   if(size < 0)
     {
@@ -1228,46 +1216,6 @@ check_allowed_ip(union olsr_ip_addr *addr)
 }
 
 
-/**
- *Converts a olsr_ip_addr to a string
- *Goes for both IPv4 and IPv6
- *
- *@param the IP to convert
- *@return a pointer to a static string buffer
- *representing the address in "dots and numbers"
- *
- */
-char *
-olsr_ip_to_string(union olsr_ip_addr *addr)
-{
-  static int index = 0;
-  static char buff[4][100];
-  char *ret;
-  struct in_addr in;
-  if(ipversion == AF_INET)
-    {
-      in.s_addr=addr->v4;
-      ret = inet_ntoa(in);
-    }
-  else
-    {
-      /* IPv6 */
-      ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
-    }
-
-  strncpy(buff[index], ret, 100);
-
-  ret = buff[index];
-
-  index = (index + 1) & 3;
-
-  return ret;
-}
-
-
-
-
 /**
  *This function is just as bad as the previous one :-(
  */
@@ -1278,7 +1226,7 @@ olsr_netmask_to_string(union hna_netmask *mask)
   struct in_addr in;
   static char netmask[5];
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
       in.s_addr = mask->v4;
       ret = inet_ntoa(in);
@@ -1298,17 +1246,6 @@ olsr_netmask_to_string(union hna_netmask *mask)
 
 
 
-char *
-sockaddr_to_string(struct sockaddr *address_to_convert)
-{
-  struct sockaddr_in           *address;
-  
-  address=(struct sockaddr_in *)address_to_convert; 
-  return(inet_ntoa(address->sin_addr));
-  
-}
-
-
 static char *
 get_copyright_string()
 {
index 7c8a504..62d611f 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_httpinfo.h,v 1.27 2005/01/24 07:55:35 kattemat Exp $
+ * $Id: olsrd_httpinfo.h,v 1.28 2005/05/29 12:47:41 br1 Exp $
  */
 
 /*
@@ -77,11 +77,18 @@ struct http_stats
   olsr_u32_t ill_hits;
 };
 
+
+extern struct olsrd_config *olsr_cfg;
+
+
 char *
 olsr_ip_to_string(union olsr_ip_addr *);
 
 char *
 olsr_netmask_to_string(union hna_netmask *);
 
+/* Destructor function */
+void
+olsr_plugin_exit(void);
 
 #endif
index d816dfa..4868834 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_plugin.c,v 1.11 2005/05/25 16:33:24 br1 Exp $
+ * $Id: olsrd_plugin.c,v 1.12 2005/05/29 12:47:41 br1 Exp $
  */
 
 /*
  * Dynamic linked library for the olsr.org olsr daemon
  */
 
-
+#include "olsr.h"
 #include "olsrd_plugin.h"
 #include "olsr_cfg.h"
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include "plugin_loader.h"
+#include "olsrd_httpinfo.h"
 
-void __attribute__ ((constructor)) 
+static void __attribute__ ((constructor)) 
 my_init(void);
 
-void __attribute__ ((destructor)) 
+static void __attribute__ ((destructor)) 
 my_fini(void);
 
-int
-register_olsr_data(struct olsr_plugin_data *);
-
-int
-fetch_olsrd_data(void);
-
 
 /*
  * Defines the version of the plugin interface that is used
@@ -70,7 +64,7 @@ fetch_olsrd_data(void);
  * Do not alter unless you know what you are doing!
  */
 int 
-get_plugin_interface_version()
+olsrd_plugin_interface_version()
 {
   return PLUGIN_INTERFACE_VERSION;
 }
@@ -80,7 +74,7 @@ get_plugin_interface_version()
 /**
  *Constructor
  */
-void
+static void
 my_init()
 {
   /* Print plugin info to stdout */
@@ -92,7 +86,7 @@ my_init()
 /**
  *Destructor
  */
-void
+static void
 my_fini()
 {
 
@@ -107,8 +101,9 @@ my_fini()
   return;
 }
 
+
 int
-register_olsr_param(char *key, char *value)
+olsrd_plugin_register_param(char *key, char *value)
 {
   if(!strcmp(key, "port") || !strcmp(key, "Port"))
     {
@@ -172,185 +167,3 @@ register_olsr_param(char *key, char *value)
 
   return 1;
 }
-
-/**
- *Register needed functions and pointers
- *
- *This function should not be changed!
- *
- */
-int
-register_olsr_data(struct olsr_plugin_data *data)
-{
-  /* IPversion */
-  ipversion = data->ipversion;
-  /* Main address */
-  main_addr = data->main_addr;
-
-  /* Multi-purpose function */
-  olsr_plugin_io = data->olsr_plugin_io;
-
-  /* Set size of IP address */
-  if(ipversion == AF_INET)
-    {
-      ipsize = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      ipsize = sizeof(struct in6_addr);
-    }
-
-  if(!fetch_olsrd_data())
-    {
-      fprintf(stderr, "Could not fetch the neccessary functions from olsrd!\n");
-      return 0;
-    }
-
-  /* Calls the initialization function
-   * olsr_plugin_init()
-   * This function should be present in your
-   * sourcefile and all data initialization
-   * should happen there - NOT HERE!
-   */
-  if(!olsr_plugin_init())
-    {
-      fprintf(stderr, "Could not initialize plugin!\n");
-      return 0;
-    }
-
-  return 1;
-
-}
-
-
-
-int
-fetch_olsrd_data()
-{
-  int retval = 1;
-
-  
-  /* Neighbor table */
-  if(!olsr_plugin_io(GETD__NEIGHBORTABLE, 
-                    &neighbortable, 
-                    sizeof(neighbortable)))
-  {
-    neighbortable = NULL;
-    retval = 0;
-  }
-  
-  /* Two hop neighbor table */
-  if(!olsr_plugin_io(GETD__TWO_HOP_NEIGHBORTABLE, 
-                    &two_hop_neighbortable, 
-                    sizeof(two_hop_neighbortable)))
-  {
-    two_hop_neighbortable = NULL;
-    retval = 0;
-  }
-
-  /* Topoloy table */
-  if(!olsr_plugin_io(GETD__TC_TABLE, 
-                    &tc_table, 
-                    sizeof(tc_table)))
-  {
-    tc_table = NULL;
-    retval = 0;
-  }
-
-  /* HNA table */
-  if(!olsr_plugin_io(GETD__HNA_SET, 
-                    &hna_set, 
-                    sizeof(hna_set)))
-  {
-    hna_set = NULL;
-    retval = 0;
-  }
-
-  /* MID table */
-  if(!olsr_plugin_io(GETD__MID_SET, 
-                    &mid_set, 
-                    sizeof(mid_set)))
-  {
-    mid_set = NULL;
-    retval = 0;
-  }
-
-
-  if(!olsr_plugin_io(GETD__ROUTINGTABLE,
-                    &host_routes,
-                    sizeof(host_routes)))
-  {
-    host_routes = NULL;
-    retval = 0;
-  }
-
-  if(!olsr_plugin_io(GETD__HNA_ROUTES,
-                    &hna_routes,
-                    sizeof(hna_routes)))
-  {
-    hna_routes = NULL;
-    retval = 0;
-  }
-
-
-  /* Configuration */
-  if(!olsr_plugin_io(GETD__OLSR_CNF, 
-                    &cfg, 
-                    sizeof(cfg)))
-    {
-      cfg = NULL;
-      retval = 0;
-    }
-
-  if(!olsr_plugin_io(GETF__OLSR_LOOKUP_MPRS_SET, 
-                    &olsr_lookup_mprs_set, 
-                    sizeof(olsr_lookup_mprs_set)))
-  {
-    olsr_lookup_mprs_set = NULL;
-    retval = 0;
-  }
-
-  /* Olsr debug output function */
-  if(!olsr_plugin_io(GETF__OLSR_PRINTF, 
-                    &olsr_printf, 
-                    sizeof(olsr_printf)))
-  {
-    olsr_printf = NULL;
-    retval = 0;
-  }
-
-  /* Olsr malloc wrapper */
-  if(!olsr_plugin_io(GETF__OLSR_MALLOC, 
-                    &olsr_malloc, 
-                    sizeof(olsr_malloc)))
-  {
-    olsr_malloc = NULL;
-    retval = 0;
-  }
-
-  /* Add socket to OLSR select function */
-  if(!olsr_plugin_io(GETF__ADD_OLSR_SOCKET, 
-                    &add_olsr_socket, 
-                    sizeof(add_olsr_socket)))
-  {
-    add_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  /* Add hna net IPv4 */
-  if(!olsr_plugin_io(GETF__ADD_LOCAL_HNA4_ENTRY, &add_local_hna4_entry, sizeof(add_local_hna4_entry)))
-  {
-    add_local_hna4_entry = NULL;
-    retval = 0;
-  }
-
-  /* Remove hna net IPv4 */
-  if(!olsr_plugin_io(GETF__REMOVE_LOCAL_HNA4_ENTRY, &remove_local_hna4_entry, sizeof(remove_local_hna4_entry)))
-  {
-    remove_local_hna4_entry = NULL;
-    retval = 0;
-  }
-
-  return retval;
-
-}
index 1d5977b..8aab0cd 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsrd_plugin.h,v 1.19 2005/05/25 16:33:24 br1 Exp $
+ * $Id: olsrd_plugin.h,v 1.20 2005/05/29 12:47:41 br1 Exp $
  */
 
 /*
@@ -56,7 +56,6 @@
 #include <time.h>
 #include <math.h>
 
-#include "olsr_plugin_io.h"
 #include "olsr_types.h"
 #include "neighbor_table.h"
 #include "two_hop_neighbor_table.h"
@@ -70,7 +69,7 @@
 #define PLUGIN_VERSION "0.1"
 #define PLUGIN_AUTHOR   "Andreas Tønnesen"
 #define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 3
+#define PLUGIN_INTERFACE_VERSION 4
 
 int http_port;
 
@@ -92,64 +91,6 @@ struct allowed_net
 struct allowed_host   *allowed_hosts;
 struct allowed_net    *allowed_nets;
 
-/* The lists */
-struct neighbor_entry *neighbortable;
-struct neighbor_2_entry *two_hop_neighbortable;
-struct link_entry *link_set;
-struct tc_entry *tc_table;
-struct hna_entry *hna_set;
-struct mid_entry *mid_set;
-struct rt_entry *host_routes;
-struct rt_entry *hna_routes;
-
-
-/* Buffer for olsr_ip_to_string */
-
-char ipv6_buf[100]; /* buffer for IPv6 inet_htop */
-
-/* Global config pointer */
-struct olsrd_config *cfg;
-
-/****************************************************************************
- *                Function pointers to functions in olsrd                   *
- *              These allow direct access to olsrd functions                *
- ****************************************************************************/
-
-/* The multi-purpose funtion. All other functions are fetched trough this */
-int (*olsr_plugin_io)(int, void *, size_t);
-
-/* Add a socket to the main olsrd select loop */
-void (*add_olsr_socket)(int, void(*)(int));
-
-/* Lookup MPR entry */
-struct mpr_selector *(*olsr_lookup_mprs_set)(union olsr_ip_addr *);
-
-
-/* olsrd printf wrapper */
-int (*olsr_printf)(int, char *, ...);
-
-/* olsrd malloc wrapper */
-void *(*olsr_malloc)(size_t, const char *);
-
-/* Add hna net IPv4 */
-void (*add_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
-
-/* Remove hna net IPv4 */
-int (*remove_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
-
-/****************************************************************************
- *                             Data from olsrd                              *
- *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
- *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
- *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
- ****************************************************************************/
-
-/* These two are set automatically by olsrd at load time */
-int                ipversion;  /* IPversion in use */
-union olsr_ip_addr *main_addr; /* Main address */
-
-
-size_t             ipsize;     /* Size of the ipadresses used */
 
 /****************************************************************************
  *                Functions that the plugin MUST provide                    *
@@ -158,24 +99,12 @@ size_t             ipsize;     /* Size of the ipadresses used */
 
 /* Initialization function */
 int
-olsr_plugin_init(void);
-
-/* IPC initialization function */
-int
-plugin_ipc_init(void);
-
-int
-register_olsr_param(char *, char *);
-
-/* Destructor function */
-void
-olsr_plugin_exit(void);
+olsrd_plugin_init(void);
 
-/* Mulitpurpose funtion */
 int
-plugin_io(int, void *, size_t);
+olsrd_plugin_register_param(char *, char *);
 
 int 
-get_plugin_interface_version(void);
+olsrd_plugin_interface_version(void);
 
 #endif
index 81f3f8e..3d09da3 100644 (file)
@@ -1,10 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
index 797c5df..914ee51 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_plugin.c,v 1.1 2005/05/26 16:09:25 br1 Exp $ */
+/* $Id: olsrd_plugin.c,v 1.2 2005/05/29 12:47:41 br1 Exp $ */
 
  /*
  * Example plugin for olsrd.org OLSR daemon
@@ -53,9 +53,9 @@
  * Used by main olsrd to check plugin interface version
  */
 int 
-get_plugin_interface_version()
+olsrd_plugin_interface_version()
 {
-       return PLUGIN_INTERFACE_VERSION;
+       return OLSRD_PLUGIN_INTERFACE_VERSION;
 }
 
 
@@ -64,7 +64,7 @@ get_plugin_interface_version()
  * Called for all plugin parameters
  */
 int
-register_olsr_param(char *key, char *value)
+olsrd_plugin_register_param(char *key, char *value)
 {
        if(!strcmp(key, "test")) {
                printf("\n*** MINI: parameter test: %s\n", value);
@@ -79,7 +79,7 @@ register_olsr_param(char *key, char *value)
  * Called after all parameters are passed
  */
 int
-plugin_init()
+olsrd_plugin_init()
 {
        printf("*** MINI: plugin_init\n");
        
@@ -96,6 +96,13 @@ plugin_init()
 
 /* attention: make static to avoid name clashes */
 
+static void __attribute__ ((constructor)) 
+my_init(void);
+
+static void __attribute__ ((destructor)) 
+my_fini(void);
+
+
 /**
  * Optional Private Constructor
  */
index fe41c91..3d09da3 100644 (file)
@@ -1,5 +1,10 @@
 VERS_1.0
 {
   global:
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
+
+  local:
     *;
 };
diff --git a/lib/nameservice/src/compat.c b/lib/nameservice/src/compat.c
new file mode 100644 (file)
index 0000000..4da7d77
--- /dev/null
@@ -0,0 +1,30 @@
+#include "compat.h"
+
+#ifndef linux
+#include <stdlib.h>
+
+/* strndup() is a GNU extention */
+char *
+strndup(const char *ptr, size_t size)
+{
+  int len = strlen(ptr);
+  char *ret = NULL;
+
+  if(!len)
+    return NULL;
+
+  if(len > size)
+    len = size;
+
+  ret = malloc(len + 1);
+  
+  if(!ret)
+    return NULL;
+
+  strncpy(ret, ptr, len);
+  ret[len] = '\0';
+
+  return ret;
+}
+
+#endif
diff --git a/lib/nameservice/src/compat.h b/lib/nameservice/src/compat.h
new file mode 100644 (file)
index 0000000..a771001
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef _NAMESERVICE_COMPAT
+#define _NAMESERVICE_COMPAT
+
+#include <sys/types.h>
+
+char *
+strndup(const char *ptr, size_t size);
+
+#endif
index 302ca3b..6329277 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: nameservice.c,v 1.13 2005/05/25 13:43:30 kattemat Exp $ */
+/* $Id: nameservice.c,v 1.14 2005/05/29 12:47:42 br1 Exp $ */
 
 /*
  * Dynamic linked library for UniK OLSRd
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include "nameservice.h"
-#include "olsrd_copy.h"
 
+#include "olsr.h"
+#include "net_olsr.h"
 #include "routing_table.h"
 #include "mantissa.h"
+#include "scheduler.h"
+#include "parser.h"
+#include "duplicate_set.h"
+#include "link_set.h"
+
+#include "nameservice.h"
+#include "olsrd_copy.h"
+#include "compat.h"
 
 /* send buffer: huge */
 static char buffer[10240];
@@ -104,7 +112,7 @@ name_constructor()
  * called for all plugin parameters
  */
 int
-register_olsr_param(char *key, char *value)
+olsrd_plugin_register_param(char *key, char *value)
 {
        if(!strcmp(key, "interval")) {
                my_interval = atoi(value);
@@ -199,7 +207,7 @@ register_olsr_param(char *key, char *value)
  *   - register_olsr_data() then then finally calls this function
  */
 int
-olsr_plugin_init()
+name_init()
 {
        struct name_entry *name;
        struct name_entry *prev=NULL;
@@ -208,7 +216,7 @@ olsr_plugin_init()
        for (name = my_names; name != NULL; name = name->next) {
                if (name->ip.v4 == 0) {
                        // insert main_addr
-                       memcpy(&name->ip, main_addr, ipsize);
+                       memcpy(&name->ip, &main_addr, ipsize);
                        prev = name;
                } else {
                        // IP from config file
@@ -231,7 +239,7 @@ olsr_plugin_init()
                
        if (have_dns_server) {
                if (my_dns_server.v4 == 0) {
-                       memcpy(&my_dns_server, main_addr, ipsize);
+                       memcpy(&my_dns_server, &main_addr, ipsize);
                        printf("\nNAME PLUGIN: announcing upstream DNS server: %s\n", 
                                olsr_ip_to_string(&my_dns_server));
                }
@@ -260,7 +268,7 @@ olsr_plugin_init()
  * called at unload: free everything
  */
 void
-olsr_plugin_exit()
+name_destructor()
 {
        int i;
        struct db_entry **tmp;
@@ -336,17 +344,17 @@ olsr_event(void *foo)
        int namesize;
   
        /* looping trough interfaces */
-       for (ifn = ifs; ifn ; ifn = ifn->int_next) 
+       for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
        {
                olsr_printf(3, "NAME PLUGIN: Generating packet - [%s]\n", ifn->int_name);
 
                /* fill message */
-               if(ipversion == AF_INET)
+               if(olsr_cnf->ip_version == AF_INET)
                {
                        /* IPv4 */
                        message->v4.olsr_msgtype = MESSAGE_TYPE;
                        message->v4.olsr_vtime = double_to_me(my_timeout);
-                       memcpy(&message->v4.originator, main_addr, ipsize);
+                       memcpy(&message->v4.originator, &main_addr, ipsize);
                        message->v4.ttl = MAX_TTL;
                        message->v4.hopcnt = 0;
                        message->v4.seqno = htons(get_msg_seqno());
@@ -361,7 +369,7 @@ olsr_event(void *foo)
                        /* IPv6 */
                        message->v6.olsr_msgtype = MESSAGE_TYPE;
                        message->v6.olsr_vtime = double_to_me(my_timeout);
-                       memcpy(&message->v6.originator, main_addr, ipsize);
+                       memcpy(&message->v6.originator, &main_addr, ipsize);
                        message->v6.ttl = MAX_TTL;
                        message->v6.hopcnt = 0;
                        message->v6.seqno = htons(get_msg_seqno());
@@ -398,7 +406,7 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
        memcpy(&originator, &m->v4.originator, ipsize);
                
        /* Fetch the message based on IP version */
-       if(ipversion == AF_INET) {
+       if(olsr_cnf->ip_version == AF_INET) {
                vtime = ME_TO_DOUBLE(m->v4.olsr_vtime);
                size = ntohs(m->v4.olsr_msgsize);
                namemessage = (struct namemsg*)&m->v4.message;
@@ -411,7 +419,7 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
 
        /* Check if message originated from this node. 
        If so - back off */
-       if(memcmp(&originator, main_addr, ipsize) == 0)
+       if(memcmp(&originator, &main_addr, ipsize) == 0)
                return;
 
        /* Check that the neighbor this message was received from is symmetric. 
@@ -425,7 +433,7 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
        * Remeber that this also registeres the message as
        * processed if nessecary
        */
-       if(!check_dup_proc(&originator, ntohs(m->v4.seqno))) {
+       if(!olsr_check_dup_table_proc(&originator, ntohs(m->v4.seqno))) {
                /* If so - do not process */
                goto forward;
        }
@@ -435,7 +443,7 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
 forward:
        /* Forward the message if nessecary
        * default_fwd does all the work for us! */
-       default_fwd(m, &originator, ntohs(m->v4.seqno), in_if, in_addr);
+       olsr_forward_message(m, &originator, ntohs(m->v4.seqno), in_if, in_addr);
 }
 
 
@@ -581,6 +589,7 @@ update_name_entry(union olsr_ip_addr *originator, struct namemsg *msg, int msg_s
                
        /* insert a new entry */
        entry = olsr_malloc(sizeof(struct db_entry), "new db_entry");
+       
        memcpy(&entry->originator, originator, ipsize);
        olsr_get_timestamp(vtime * 1000, &entry->timer);
        entry->names = NULL;
@@ -800,7 +809,7 @@ allowed_ip(union olsr_ip_addr *addr)
        
        olsr_printf(6, "checking %s\n", olsr_ip_to_string(addr));
        
-       for(iface = ifs; iface; iface = iface->int_next)
+       for(iface = ifnet; iface; iface = iface->int_next)
        {
                olsr_printf(6, "interface %s\n", olsr_ip_to_string(&iface->ip_addr));
                if (COMP_IP(&iface->ip_addr, addr)) {
@@ -809,7 +818,7 @@ allowed_ip(union olsr_ip_addr *addr)
                }
        }
        
-       for (hna4 = cfg->hna4_entries; hna4; hna4 = hna4->next)
+       for (hna4 = olsr_cnf->hna4_entries; hna4; hna4 = hna4->next)
        {
                olsr_printf(6, "HNA %s/%s\n", 
                        olsr_ip_to_string(&hna4->net),
index 9d2a8d5..61e3c30 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: nameservice.h,v 1.7 2005/03/17 21:41:30 br1 Exp $ */
+/* $Id: nameservice.h,v 1.8 2005/05/29 12:47:42 br1 Exp $ */
  
 /*
  * Dynamic linked library for UniK OLSRd
 #ifndef _NAMESERVICE_PLUGIN
 #define _NAMESERVICE_PLUGIN
 
+#include "olsr_types.h"
+#include "interfaces.h"
+#include "olsr_protocol.h"
+
 #include "olsrd_plugin.h"
 #include "nameservice_msg.h"
 
@@ -116,4 +120,10 @@ allowed_ip(union olsr_ip_addr *addr);
 void
 name_constructor(void);
 
+void
+name_destructor(void);
+
+int
+name_init(void);
+
 #endif
index d4e16ee..665557f 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
  
-/* $Id: olsrd_copy.c,v 1.3 2005/04/20 17:57:00 br1 Exp $ */
+/* $Id: olsrd_copy.c,v 1.4 2005/05/29 12:47:42 br1 Exp $ */
  
 /*
  * Dynamic linked library for UniK OLSRd
 #include "olsrd_plugin.h"
 #include "olsrd_copy.h"
 
-/**
- *Hashing function. Creates a key based on
- *an 32-bit address.
- *@param address the address to hash
- *@return the hash(a value in the 0-31 range)
- */
-olsr_u32_t
-olsr_hashing(union olsr_ip_addr *address)
-{
-  olsr_u32_t hash;
-  char *tmp;
-
-  if(ipversion == AF_INET)
-    /* IPv4 */  
-    hash = (ntohl(address->v4));
-  else
-    {
-      /* IPv6 */
-      tmp = (char *) &address->v6;
-      hash = (ntohl(*tmp));
-    }
-
-  //hash &= 0x7fffffff; 
-  hash &= HASHMASK;
-
-  return hash;
-}
-
-
+#include "defs.h"
 
 /**
  *Checks if a timer has times out. That means
@@ -87,11 +59,10 @@ olsr_hashing(union olsr_ip_addr *address)
 int
 olsr_timed_out(struct timeval *timer)
 {
-  return(timercmp(timer, now, <));
+  return(timercmp(timer, &now, <));
 }
 
 
-
 /**
  *Initiates a "timer", wich is a timeval structure,
  *with the value given in time_value.
@@ -113,11 +84,8 @@ olsr_init_timer(olsr_u32_t time_value, struct timeval *hold_timer)
 }
 
 
-
-
-
 /**
- *Generaties a timestamp a certain number of milliseconds
+ *Generates a timestamp a certain number of milliseconds
  *into the future.
  *
  *@param time_value how many milliseconds from now
@@ -132,74 +100,7 @@ olsr_get_timestamp(olsr_u32_t delay, struct timeval *hold_timer)
 
   time_value_sec = delay/1000;
   time_value_msec= delay - (delay*1000);
-
-  hold_timer->tv_sec = now->tv_sec + time_value_sec;
-  hold_timer->tv_usec = now->tv_usec + (time_value_msec*1000);   
-}
-
-
-/**
- *Converts a olsr_ip_addr to a string
- *Goes for both IPv4 and IPv6
- *
- *NON REENTRANT! If you need to use this
- *function twice in e.g. the same printf
- *it will not work.
- *You must use it in different calls e.g.
- *two different printfs
- *
- *@param the IP to convert
- *@return a pointer to a static string buffer
- *representing the address in "dots and numbers"
- *
- */
-char *
-olsr_ip_to_string(union olsr_ip_addr *addr)
-{
-
-  char *ret;
-  struct in_addr in;
   
-  if(ipversion == AF_INET)
-    {
-      in.s_addr=addr->v4;
-      ret = inet_ntoa(in);
-    }
-  else
-    {
-      /* IPv6 */
-      ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
-    }
-
-  return ret;
-}
-
-
-/**
- *Look up an entry in the routing table.
- *
- *@param dst the address of the entry
- *
- *@return a pointer to a rt_entry struct 
- *representing the route entry.
- */
-struct rt_entry *
-olsr_lookup_routing_table(union olsr_ip_addr *dst)
-{
-
-  struct rt_entry *rt_table;
-  olsr_u32_t      hash;
-
-  hash = olsr_hashing(dst);
-
-  for(rt_table = routingtable[hash].next;
-      rt_table != &routingtable[hash];
-      rt_table = rt_table->next)
-    {
-      if (COMP_IP(&rt_table->rt_dst, dst))
-       {
-         return(rt_table);
-       }
-    }
-  return(NULL); 
+  hold_timer->tv_sec = now.tv_sec + time_value_sec;
+  hold_timer->tv_usec = now.tv_usec + (time_value_msec*1000);   
 }
index 235b24c..7789a88 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_copy.h,v 1.4 2005/04/20 17:57:00 br1 Exp $ */
+/* $Id: olsrd_copy.h,v 1.5 2005/05/29 12:47:42 br1 Exp $ */
  
 /*
  * Dynamic linked library for UniK OLSRd
 #ifndef _OLSRD_COPY
 #define _OLSRD_COPY
 
-// these functions are copied from the main olsrd source
-// TODO: there must be a better way!!!
+#include <sys/time.h>
+#include <time.h>
 
-olsr_u32_t olsr_hashing(union olsr_ip_addr *address);
+#include "olsr_types.h"
 
 int olsr_timed_out(struct timeval *timer);
 
@@ -49,9 +49,5 @@ void olsr_init_timer(olsr_u32_t time_value, struct timeval *hold_timer);
 
 void olsr_get_timestamp(olsr_u32_t delay, struct timeval *hold_timer);
 
-char * olsr_ip_to_string(union olsr_ip_addr *addr);
-
-struct rt_entry *
-olsr_lookup_routing_table(union olsr_ip_addr *dst);
 
 #endif
index 171a834..0c48eed 100644 (file)
  *
  */
 
-/* $Id: olsrd_plugin.c,v 1.10 2005/05/25 13:43:30 kattemat Exp $ */
+/* $Id: olsrd_plugin.c,v 1.11 2005/05/29 12:47:42 br1 Exp $ */
 
 /*
- * Dynamic linked library for UniK OLSRd
+ * Dynamic linked library for olsr.org olsrd
  */
 
 #include <stdio.h>
 
 #include "olsrd_plugin.h"
 #include "nameservice.h"
-#include "plugin_loader.h"
 
-#ifndef linux
 
-/* strndup() is a GNU extention */
-char *
-strndup(const char *ptr, size_t size)
-{
-  int len = strlen(ptr);
-  char *ret = NULL;
-
-  if(!len)
-    return NULL;
-
-  if(len > size)
-    len = size;
-
-  ret = malloc(len + 1);
-  
-  if(!ret)
-    return NULL;
-
-  strncpy(ret, ptr, len);
-  ret[len] = '\0';
-
-  return ret;
-}
+#define PLUGIN_NAME    "OLSRD nameservice plugin"
+#define PLUGIN_VERSION "0.2"
+#define PLUGIN_AUTHOR   "Bruno Randolf"
+#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION
 
-#endif
 
-void __attribute__ ((constructor)) 
+static void __attribute__ ((constructor)) 
 my_init(void);
 
-void __attribute__ ((destructor)) 
+static void __attribute__ ((destructor)) 
 my_fini(void);
 
-int
-register_olsr_data(struct olsr_plugin_data *);
 
-int
-fetch_olsrd_data(void);
-
-/*
- * Returns the version of the plugin interface that is used
- * THIS IS NOT THE VERSION OF YOUR PLUGIN!
- */
 int 
-get_plugin_interface_version()
-{
-  return PLUGIN_INTERFACE_VERSION;
-}
-
-/**
- *Constructor
- */
-void
-my_init()
+olsrd_plugin_interface_version()
 {
-  /* Print plugin info to stdout */
-  printf("%s\n", MOD_DESC);
-
-  ifs = NULL;
-
-  name_constructor();
-  
-  return;
+       return OLSRD_PLUGIN_INTERFACE_VERSION;
 }
 
-/**
- *Destructor
- */
-void
-my_fini()
-{
-
-  /* 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();
 
-  return;
-}
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int cmd, void *data, size_t size)
+int olsrd_plugin_init()
 {
-
-  switch(cmd)
-    {
-    default:
-      return 0;
-    }
-  
-  return 1;
+       return name_init();
 }
 
 
-/**
- *Register needed functions and pointers
- *
- *This function should not be changed!
- *
- */
-int
-register_olsr_data(struct olsr_plugin_data *data)
+static void
+my_init()
 {
-  /* IPversion */
-  ipversion = data->ipversion;
-  /* Main address */
-  main_addr = data->main_addr;
-
-  /* Multi-purpose function */
-  olsr_plugin_io = data->olsr_plugin_io;
-
-  /* Set size of IP address */
-  if(ipversion == AF_INET)
-    {
-      ipsize = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      ipsize = sizeof(struct in6_addr);
-    }
-
-  if(!fetch_olsrd_data())
-    {
-      fprintf(stderr, "Could not fetch the neccessary functions from olsrd!\n");
-      return 0;
-    }
+       /* Print plugin info to stdout */
+       printf("%s\n", MOD_DESC);
 
-  /* Calls the initialization function
-   * olsr_plugin_init()
-   * This function should be present in your
-   * sourcefile and all data initialization
-   * should happen there - NOT HERE!
-   */
-  if(!olsr_plugin_init())
-    {
-      fprintf(stderr, "Could not initialize plugin!\n");
-      return 0;
-    }
-
-  return 1;
+       name_constructor();
+  
+       return;
 }
 
 
-
-int
-fetch_olsrd_data()
+static void
+my_fini()
 {
-  int retval = 1;
-
-
-  /* Packet buffer */
-  if(!olsr_plugin_io(GETF__NET_OUTBUFFER_PUSH, &net_outbuffer_push, sizeof(net_outbuffer_push)))
-  {
-    net_outbuffer_push = NULL;
-    retval = 0;
-  }
-
-  /* Olsr debug output function */
-  if(!olsr_plugin_io(GETF__OLSR_PRINTF, 
-                    &olsr_printf, 
-                    sizeof(olsr_printf)))
-  {
-    olsr_printf = NULL;
-    retval = 0;
-  }
-
-
-  /* Olsr malloc wrapper */
-  if(!olsr_plugin_io(GETF__OLSR_MALLOC, 
-                    &olsr_malloc, 
-                    sizeof(olsr_malloc)))
-  {
-    olsr_malloc = NULL;
-    retval = 0;
-  }
-
-  /* Parser registration */
-  if(!olsr_plugin_io(GETF__OLSR_PARSER_ADD_FUNCTION, 
-                    &olsr_parser_add_function, 
-                    sizeof(olsr_parser_add_function)))
-  {
-    olsr_parser_add_function = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler timeout registration */
-  if(!olsr_plugin_io(GETF__OLSR_REGISTER_TIMEOUT_FUNCTION, 
-                    &olsr_register_timeout_function, 
-                    sizeof(olsr_register_timeout_function)))
-  {
-    olsr_register_timeout_function = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler event registration */
-  if(!olsr_plugin_io(GETF__OLSR_REGISTER_SCHEDULER_EVENT, 
-                    &olsr_register_scheduler_event, 
-                    sizeof(olsr_register_scheduler_event)))
-  {
-    olsr_register_scheduler_event = NULL;
-    retval = 0;
-  }
-
-  /* Double to mantissa/exponent */
-  if(!olsr_plugin_io(GETF__DOUBLE_TO_ME, 
-                    &double_to_me, 
-                    sizeof(double_to_me)))
-  {
-    double_to_me = NULL;
-    retval = 0;
-  }
-
-  /* Interface list */
-  if(!olsr_plugin_io(GETD__IFNET, &ifs, sizeof(ifs)))
-  {
-    ifs = NULL;
-    retval = 0;
-  }
-
-  /* Messageseqno fetch function */
-  if(!olsr_plugin_io(GETF__GET_MSG_SEQNO, &get_msg_seqno, sizeof(get_msg_seqno)))
-  {
-    get_msg_seqno = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler maintained timestamp */
-  if(!olsr_plugin_io(GETD__NOW, &now, sizeof(now)))
-  {
-    now = NULL;
-    retval = 0;
-  }
-
-  /* Output function */
-  if(!olsr_plugin_io(GETF__NET_OUTPUT, &net_output, sizeof(net_output)))
-  {
-    net_output = NULL;
-    retval = 0;
-  }
-
-  /* Duplicate check (for processing) */
-  if(!olsr_plugin_io(GETF__OLSR_CHECK_DUP_TABLE_PROC, &check_dup_proc, sizeof(check_dup_proc)))
-  {
-    check_dup_proc = NULL;
-    retval = 0;
-  }
-
-  /* Default forward function */
-  if(!olsr_plugin_io(GETF__OLSR_FORWARD_MESSAGE, &default_fwd, sizeof(default_fwd)))
-  {
-    default_fwd = NULL;
-    retval = 0;
-  }
-
-
-  /* Add socket to OLSR select function */
-  if(!olsr_plugin_io(GETF__ADD_OLSR_SOCKET, &add_olsr_socket, sizeof(add_olsr_socket)))
-  {
-    add_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  /* Neighbor link status lookup */
-  if(!olsr_plugin_io(GETF__CHECK_NEIGHBOR_LINK, &check_neighbor_link, sizeof(check_neighbor_link)))
-  {
-    check_neighbor_link = NULL;
-    retval = 0;
-  }
-
-  /* Configuration */
-  if(!olsr_plugin_io(GETD__OLSR_CNF, &cfg, sizeof(cfg))) {
-      cfg = NULL;
-      retval = 0;
-  }
-  
-  if(!olsr_plugin_io(GETD__ROUTINGTABLE, &routingtable, sizeof(routingtable))) {
-    routingtable = NULL;
-    retval = 0;
-  }
-  
-  return retval;
+       name_destructor();
 }
diff --git a/lib/nameservice/src/olsrd_plugin.h b/lib/nameservice/src/olsrd_plugin.h
deleted file mode 100644 (file)
index b583ba6..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 2005, Bruno Randolf <bruno.randolf@4g-systems.biz>
- * Copyright (c) 2004, Andreas Tønnesen(andreto-at-olsr.org)
- * 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 the UniK olsr daemon 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.
- *
- */
-
-/* $Id: olsrd_plugin.h,v 1.9 2005/05/25 16:33:24 br1 Exp $ */
-
-/*
- * Dynamic linked library for UniK OLSRd
- */
-
-#ifndef _OLSRD_PLUGIN_DEFS
-#define _OLSRD_PLUGIN_DEFS
-
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/time.h>
-#include <time.h>
-#include <math.h>
-
-#include "olsr_plugin_io.h"
-#include "olsr_types.h"
-#include "olsr_protocol.h"
-#include "olsr_cfg.h"
-#include "hashing.h"
-#include "interfaces.h"
-#include "routing_table.h"
-
-char *
-strndup(const char *ptr, size_t size);
-
-#ifndef linux
-#include <stdlib.h>
-#endif
-
-/* Use this as PARSER_TYPE to receive ALL messages! */
-#define PROMISCUOUS 0xffffffff
-
-/* Global config pointer */
-struct olsrd_config *cfg;
-struct rt_entry *routingtable;
-
-/****************************************************************************
- *           Various datastructures and definitions from olsrd              *
- ****************************************************************************/
-
-#define MAX_TTL               0xff
-
-
-/*
- *Link Types
- */
-
-#define UNSPEC_LINK           0
-#define ASYM_LINK             1
-#define SYM_LINK              2
-#define LOST_LINK             3
-#define HIDE_LINK             4
-#define MAX_LINK              4
-
-
-#define MAXIFS         8 /* Maximum number of interfaces (from defs.h) in uOLSRd */
-
-
-
-/***************************************************************************
- *                 Functions provided by uolsrd_plugin.c                   *
- *                  Similar to their siblings in olsrd                     *
- ***************************************************************************/
-
-char ipv6_buf[100]; /* buffer for IPv6 inet_htop */
-
-/* All these could optionally be fetched from olsrd */
-
-olsr_u32_t
-olsr_hashing(union olsr_ip_addr *);
-
-void
-olsr_get_timestamp(olsr_u32_t, struct timeval *);
-
-void
-olsr_init_timer(olsr_u32_t, struct timeval *);
-
-int
-olsr_timed_out(struct timeval *);
-
-char *
-olsr_ip_to_string(union olsr_ip_addr *);
-
-
-
-/****************************************************************************
- *                Function pointers to functions in olsrd                   *
- *              These allow direct access to olsrd functions                *
- ****************************************************************************/
-
-/* The multi-purpose funtion. All other functions are fetched trough this */
-int (*olsr_plugin_io)(int, void *, size_t);
-
-/* add a prser function */
-void (*olsr_parser_add_function)(void (*)(union olsr_message *, struct interface *, union olsr_ip_addr *), int, int);
-
-/* Register a timeout function */
-int (*olsr_register_timeout_function)(void (*)(void));
-
-/* Register a scheduled event */
-int (*olsr_register_scheduler_event)(void (*)(void *), void *, float, float, olsr_u8_t *);
-
-/* Get the next message seqno in line */
-olsr_u16_t (*get_msg_seqno)(void);
-
-int (*net_outbuffer_push)(struct interface *, olsr_u8_t *, olsr_u16_t);
-
-/* Transmit package */
-int (*net_output)(struct interface*);
-
-/* Check the duplicate table for prior processing */
-int (*check_dup_proc)(union olsr_ip_addr *, olsr_u16_t);
-
-/* Default forward algorithm */
-int (*default_fwd)(union olsr_message *, 
-                  union olsr_ip_addr *, 
-                  olsr_u16_t,  
-                  struct interface *, 
-                  union olsr_ip_addr *);
-
-/* Add a socket to the main olsrd select loop */
-void (*add_olsr_socket)(int, void(*)(int));
-
-/* get the link status to a neighbor */
-int (*check_neighbor_link)(union olsr_ip_addr *);
-
-/* Mantissa/exponent conversions */
-olsr_u8_t (*double_to_me)(double);
-
-/* olsrd printf wrapper */
-int (*olsr_printf)(int, char *, ...);
-
-/* olsrd malloc wrapper */
-void *(*olsr_malloc)(size_t, const char *);
-
-
-/****************************************************************************
- *                             Data from olsrd                              *
- *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
- *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
- *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
- ****************************************************************************/
-/**
- * The interface list from olsrd
- */
-
-struct interface   *ifs;
-
-/* These two are set automatically by olsrd at load time */
-int                ipversion;  /* IPversion in use */
-union olsr_ip_addr *main_addr; /* Main address */
-
-
-size_t             ipsize;     /* Size of the ipadresses used */
-struct timeval     *now;       /* the olsrds schedulers idea of current time */
-
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-
-/* Initialization function */
-int
-olsr_plugin_init(void);
-
-/* Destructor function */
-void
-olsr_plugin_exit(void);
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int, void *, size_t);
-
-/* Plugin interface version */
-int 
-get_plugin_interface_version(void);
-
-
-/*****************************************************************************
- *                               Plugin data                                 *
- *****************************************************************************/
-
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION
-#define PLUGIN_INTERFACE_VERSION 3
-
-#endif
index 81f3f8e..3d09da3 100644 (file)
@@ -1,10 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
diff --git a/lib/powerinfo/src/olsr_plugin_io.h b/lib/powerinfo/src/olsr_plugin_io.h
deleted file mode 100644 (file)
index 3b906b0..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
- * 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.
- *
- * $Id: olsr_plugin_io.h,v 1.5 2004/12/03 20:54:33 kattemat Exp $
- */
-
-
-/*
- * REVISIONS(starting from 0.4.6):
- * 0.4.5 - 0.4.6 : GETD_S removed. The socket entries now reside within the 
- *                 interface struct.
- *                 Added GETF__ADD_IFCHGF and GETF__DEL_IFCHGF.
- *                 - Andreas
- *         0.4.8 : GETF__APM_READ added
- *                 GETD__OLSR_CNF added
- *                 GETD_PACKET removed
- *                 GETD_MAXMESSAGESIZE removed
- *                 GETD_OUTPUTSIZE removed
- *                 GETF__NET_OUTBUFFER_PUSH added
- *                 GETD__ROUTINGTABLE added
- *                 GETD__HNA_ROUTES added
- *                 GETD__MID_SET added
- *                 GETF__NET_RESERVE_BUFSPACE added 
- *                 GETF__NET_OUTBUFFER_PUSH_RESERVED added
- *                 - Andreas
- */
-
-/*
- * IO commands
- *
- * NAMING CONVENTION:
- * - DATAPOINTERS
- *   Commands to get datapointers MUST have the prefix
- *   GETD__ added to the full name of the variable/pointer
- *   in all upper cases.
- *   Example: A command to get a pointer to a variable called
- *   "myvar" in olsrd must be called GETD__MYVAR
- *
- * - FUNCTIONS
- *   Commands to get pointers to olsrd functions MUST have
- *   the prefix GETF__ added to the full name of the runction
- *   in uppercases.
- *   Example: A command to get a pointer to the function
- *   "my_function" must be named GETF__MY_FUNCTION
- *
- *
- *   New commands can be added - BUT EXISTING COMMANDS MUST
- *   _NEVER_ CHANGE VALUE!
- */
-
-#ifndef _OLSR_PLUGIN_IO
-#define _OLSR_PLUGIN_IO
-
-/* Data fetching - starts at 100 (used to anyway) */
-#define GETD__IFNET                                102
-#define GETD__NOW                                  103
-#define GETD__PARSER_ENTRIES                       104
-#define GETD__OLSR_SOCKET_ENTRIES                  105
-#define GETD__NEIGHBORTABLE                        108
-#define GETD__TWO_HOP_NEIGHBORTABLE                109
-#define GETD__TC_TABLE                             110
-#define GETD__HNA_SET                              111
-#define GETD__OLSR_CNF                             112
-#define GETD__ROUTINGTABLE                         113
-#define GETD__HNA_ROUTES                           114
-#define GETD__MID_SET                              115
-
-/* Function fetching - starts at 500 */
-#define GETF__OLSR_REGISTER_SCHEDULER_EVENT        500
-#define GETF__OLSR_REMOVE_SCHEDULER_EVENT          501
-#define GETF__OLSR_PARSER_ADD_FUNCTION             502
-#define GETF__OLSR_PARSER_REMOVE_FUNCTION          503
-#define GETF__OLSR_REGISTER_TIMEOUT_FUNCTION       504
-#define GETF__OLSR_REMOVE_TIMEOUT_FUNCTION         505
-#define GETF__GET_MSG_SEQNO                        506
-#define GETF__OLSR_CHECK_DUP_TABLE_PROC            507
-#define GETF__NET_OUTPUT                           508
-#define GETF__OLSR_FORWARD_MESSAGE                 509
-#define GETF__ADD_OLSR_SOCKET                      510
-#define GETF__REMOVE_OLSR_SOCKET                   511
-#define GETF__CHECK_NEIGHBOR_LINK                  512
-#define GETF__OLSR_PRINTF                          513
-#define GETF__OLSR_MALLOC                          514
-#define GETF__DOUBLE_TO_ME                         515
-#define GETF__ME_TO_DOUBLE                         516
-#define GETF__ADD_LOCAL_HNA4_ENTRY                 517
-#define GETF__REMOVE_LOCAL_HNA4_ENTRY              518
-#define GETF__ADD_LOCAL_HNA6_ENTRY                 519
-#define GETF__REMOVE_LOCAL_HNA6_ENTRY              520
-#define GETF__OLSR_INPUT                           521
-#define GETF__ADD_PTF                              522
-#define GETF__DEL_PTF                              523
-#define GETF__IF_IFWITHSOCK                        524
-#define GETF__IF_IFWITHADDR                        525
-#define GETF__PARSE_PACKET                         526
-#define GETF__REGISTER_PCF                         527
-#define GETF__OLSR_HASHING                         528
-#define GETF__ADD_IFCHGF                           529
-#define GETF__DEL_IFCHGF                           530
-#define GETF__APM_READ                             531
-#define GETF__NET_OUTBUFFER_PUSH                   532
-#define GETF__NET_RESERVE_BUFSPACE                 533
-#define GETF__NET_OUTBUFFER_PUSH_RESERVED          534
-
-#endif
index f416ac1..9eab749 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_plugin.c,v 1.6 2005/05/25 13:41:47 kattemat Exp $ */
+/* $Id: olsrd_plugin.c,v 1.7 2005/05/29 12:47:43 br1 Exp $ */
 
 
 /*
@@ -38,8 +38,8 @@
 
 
 #include "olsrd_plugin.h"
+#include "olsrd_power.h"
 #include <stdio.h>
-#include "plugin_loader.h"
 
 void __attribute__ ((constructor)) 
 my_init(void);
@@ -47,20 +47,21 @@ my_init(void);
 void __attribute__ ((destructor)) 
 my_fini(void);
 
-int
-register_olsr_data(struct olsr_plugin_data *);
-
-int
-fetch_olsrd_data(void);
 
 /*
  * Returns the version of the plugin interface that is used
  * THIS IS NOT THE VERSION OF YOUR PLUGIN!
  */
 int 
-get_plugin_interface_version()
+olsrd_plugin_interface_version()
+{
+  return OLSRD_PLUGIN_INTERFACE_VERSION;
+}
+
+int
+olsrd_plugin_register_param(char *key, char *value)
 {
-  return PLUGIN_INTERFACE_VERSION;
+  return 1;
 }
 
 /**
@@ -71,10 +72,6 @@ my_init()
 {
   /* Print plugin info to stdout */
   printf("%s\n", MOD_DESC);
-
-  ifs = NULL;
-
-  return;
 }
 
 /**
@@ -91,205 +88,4 @@ my_fini()
    * should happen there - NOT HERE!
    */
   olsr_plugin_exit();
-
-  return;
-}
-
-int
-register_olsr_param(char *key, char *value)
-{
-  return 1;
-}
-
-/**
- *Register needed functions and pointers
- *
- *This function should not be changed!
- *
- */
-int
-register_olsr_data(struct olsr_plugin_data *data)
-{
-  /* IPversion */
-  ipversion = data->ipversion;
-  /* Main address */
-  main_addr = data->main_addr;
-
-  /* Multi-purpose function */
-  olsr_plugin_io = data->olsr_plugin_io;
-
-  /* Set size of IP address */
-  if(ipversion == AF_INET)
-    {
-      ipsize = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      ipsize = sizeof(struct in6_addr);
-    }
-
-  if(!fetch_olsrd_data())
-    {
-      fprintf(stderr, "Could not fetch the neccessary functions from olsrd!\n");
-      return 0;
-    }
-
-  /* Calls the initialization function
-   * olsr_plugin_init()
-   * This function should be present in your
-   * sourcefile and all data initialization
-   * should happen there - NOT HERE!
-   */
-  if(!olsr_plugin_init())
-    {
-      fprintf(stderr, "Could not initialize plugin!\n");
-      return 0;
-    }
-
-  if(!plugin_ipc_init())
-    {
-      fprintf(stderr, "Could not initialize plugin IPC!\n");
-      return 0;
-    }
-
-  return 1;
-}
-
-
-
-int
-fetch_olsrd_data()
-{
-  int retval = 1;
-
-
-  /* Packet buffer */
-  if(!olsr_plugin_io(GETF__NET_OUTBUFFER_PUSH, &net_outbuffer_push, sizeof(net_outbuffer_push)))
-  {
-    net_outbuffer_push = NULL;
-    retval = 0;
-  }
-
-  /* Olsr debug output function */
-  if(!olsr_plugin_io(GETF__OLSR_PRINTF, 
-                    &olsr_printf, 
-                    sizeof(olsr_printf)))
-  {
-    olsr_printf = NULL;
-    retval = 0;
-  }
-
-
-  /* Olsr malloc wrapper */
-  if(!olsr_plugin_io(GETF__OLSR_MALLOC, 
-                    &olsr_malloc, 
-                    sizeof(olsr_malloc)))
-  {
-    olsr_malloc = NULL;
-    retval = 0;
-  }
-
-  /* Parser registration */
-  if(!olsr_plugin_io(GETF__OLSR_PARSER_ADD_FUNCTION, 
-                    &olsr_parser_add_function, 
-                    sizeof(olsr_parser_add_function)))
-  {
-    olsr_parser_add_function = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler timeout registration */
-  if(!olsr_plugin_io(GETF__OLSR_REGISTER_TIMEOUT_FUNCTION, 
-                    &olsr_register_timeout_function, 
-                    sizeof(olsr_register_timeout_function)))
-  {
-    olsr_register_timeout_function = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler event registration */
-  if(!olsr_plugin_io(GETF__OLSR_REGISTER_SCHEDULER_EVENT, 
-                    &olsr_register_scheduler_event, 
-                    sizeof(olsr_register_scheduler_event)))
-  {
-    olsr_register_scheduler_event = NULL;
-    retval = 0;
-  }
-
-  /* Double to mantissa/exponent */
-  if(!olsr_plugin_io(GETF__DOUBLE_TO_ME, 
-                    &double_to_me, 
-                    sizeof(double_to_me)))
-  {
-    double_to_me = NULL;
-    retval = 0;
-  }
-
-  /* Interface list */
-  if(!olsr_plugin_io(GETD__IFNET, &ifs, sizeof(ifs)))
-  {
-    ifs = NULL;
-    retval = 0;
-  }
-
-  /* Messageseqno fetch function */
-  if(!olsr_plugin_io(GETF__GET_MSG_SEQNO, &get_msg_seqno, sizeof(get_msg_seqno)))
-  {
-    get_msg_seqno = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler maintained timestamp */
-  if(!olsr_plugin_io(GETD__NOW, &now, sizeof(now)))
-  {
-    now = NULL;
-    retval = 0;
-  }
-
-  /* Output function */
-  if(!olsr_plugin_io(GETF__NET_OUTPUT, &net_output, sizeof(net_output)))
-  {
-    net_output = NULL;
-    retval = 0;
-  }
-
-  /* Duplicate check (for processing) */
-  if(!olsr_plugin_io(GETF__OLSR_CHECK_DUP_TABLE_PROC, &check_dup_proc, sizeof(check_dup_proc)))
-  {
-    check_dup_proc = NULL;
-    retval = 0;
-  }
-
-  /* Default forward function */
-  if(!olsr_plugin_io(GETF__OLSR_FORWARD_MESSAGE, &default_fwd, sizeof(default_fwd)))
-  {
-    default_fwd = NULL;
-    retval = 0;
-  }
-
-
-  /* Add socket to OLSR select function */
-  if(!olsr_plugin_io(GETF__ADD_OLSR_SOCKET, &add_olsr_socket, sizeof(add_olsr_socket)))
-  {
-    add_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  /* Neighbor link status lookup */
-  if(!olsr_plugin_io(GETF__CHECK_NEIGHBOR_LINK, &check_neighbor_link, sizeof(check_neighbor_link)))
-  {
-    check_neighbor_link = NULL;
-    retval = 0;
-  }
-
-
-  /* Apm info */
-  if(!olsr_plugin_io(GETF__APM_READ, &apm_read, sizeof(apm_read)))
-  {
-    apm_read = NULL;
-    retval = 0;
-  }
-
-  return retval;
-
 }
diff --git a/lib/powerinfo/src/olsrd_plugin.h b/lib/powerinfo/src/olsrd_plugin.h
deleted file mode 100644 (file)
index d4e3406..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-
-/*
- * Copyright (c) 2004, Andreas Tønnesen(andreto-at-olsr.org)
- * 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 the UniK olsr daemon 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.
- *
- */
-
-/* $Id: olsrd_plugin.h,v 1.11 2005/05/25 16:33:24 br1 Exp $ */
-
-/*
- * Dynamic linked library example for UniK OLSRd
- */
-
-#ifndef _OLSRD_PLUGIN_DEFS
-#define _OLSRD_PLUGIN_DEFS
-
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/time.h>
-#include <time.h>
-#include <math.h>
-
-#include "olsr_plugin_io.h"
-#include "olsr_types.h"
-#include "interfaces.h"
-#include "apm.h"
-
-/* Use this as PARSER_TYPE to receive ALL messages! */
-#define PROMISCUOUS 0xffffffff
-
-
-/*****************************************************************************
- *                               Plugin data                                 *
- *                       ALTER THIS TO YOUR OWN NEED                         *
- *****************************************************************************/
-
-#define PLUGIN_NAME    "OLSRD Powerstatus plugin"
-#define PLUGIN_VERSION "0.3"
-#define PLUGIN_AUTHOR   "Andreas Tønnesen"
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 3
-
-/* The type of message you will use */
-#define MESSAGE_TYPE 128
-
-/* The type of messages we will receive - can be set to promiscuous */
-#define PARSER_TYPE MESSAGE_TYPE
-
-
-/*
- * Scaling factor
- */
-
-#define VTIME_SCALE_FACTOR    0.0625
-
-/**
- * Macro for converting a mantissa/exponent 8bit value back
- * to double as described in RFC3626:
- *
- * value = C*(1+a/16)*2^b [in seconds]
- *
- *  where a is the integer represented by the four highest bits of the
- *  field and b the integer represented by the four lowest bits of the
- *  field.
- *
- * me is the 8 bit mantissa/exponent value
- *
- */
-#define ME_TO_DOUBLE(me) \
-  (double)(VTIME_SCALE_FACTOR*(1+(double)(me>>4)/16)*(double)(1<<(me&0x0F)))
-
-
-/****************************************************************************
- *           Various datastructures and definitions from olsrd              *
- ****************************************************************************/
-
-
-#define MAX_TTL               0xff
-
-
-/*
- *Link Types
- */
-
-#define UNSPEC_LINK           0
-#define ASYM_LINK             1
-#define SYM_LINK              2
-#define LOST_LINK             3
-#define HIDE_LINK             4
-#define MAX_LINK              4
-
-
-
-/*
- * Hashing
- */
-
-#define        HASHSIZE        32
-#define        HASHMASK        (HASHSIZE - 1)
-
-#define MAXIFS         8 /* Maximum number of interfaces (from defs.h) in uOLSRd */
-
-
-/****************************************************************************
- *                            PACKET SECTION                                *
- ****************************************************************************/
-
-
-/**********************************
- * DEFINE YOUR CUSTOM PACKET HERE *
- **********************************/
-
-struct powermsg
-{
-  olsr_u8_t       source_type;
-  olsr_u8_t       percentage;
-  olsr_u16_t      time_left;
-};
-
-/*
- * OLSR message (several can exist in one OLSR packet)
- */
-
-struct olsrmsg
-{
-  olsr_u8_t     olsr_msgtype;
-  olsr_u8_t     olsr_vtime;
-  olsr_u16_t    olsr_msgsize;
-  olsr_u32_t    originator;
-  olsr_u8_t     ttl;
-  olsr_u8_t     hopcnt;
-  olsr_u16_t    seqno;
-
-  /* YOUR PACKET GOES HERE */
-  struct powermsg msg;
-
-};
-
-/*
- *IPv6
- */
-
-struct olsrmsg6
-{
-  olsr_u8_t        olsr_msgtype;
-  olsr_u8_t        olsr_vtime;
-  olsr_u16_t       olsr_msgsize;
-  struct in6_addr  originator;
-  olsr_u8_t        ttl;
-  olsr_u8_t        hopcnt;
-  olsr_u16_t       seqno;
-
-  /* YOUR PACKET GOES HERE */
-  struct powermsg msg;
-
-};
-
-/* 
- * ALWAYS USE THESE WRAPPERS TO
- * ENSURE IPv4 <-> IPv6 compability 
- */
-
-union olsr_message
-{
-  struct olsrmsg v4;
-  struct olsrmsg6 v6;
-};
-
-
-
-
-/***************************************************************************
- *                 Functions provided by uolsrd_plugin.c                   *
- *                  Similar to their siblings in olsrd                     *
- ***************************************************************************/
-
-char ipv6_buf[100]; /* buffer for IPv6 inet_htop */
-
-/* All these could optionally be fetched from olsrd */
-
-olsr_u32_t
-olsr_hashing(union olsr_ip_addr *);
-
-void
-olsr_get_timestamp(olsr_u32_t, struct timeval *);
-
-void
-olsr_init_timer(olsr_u32_t, struct timeval *);
-
-int
-olsr_timed_out(struct timeval *);
-
-char *
-olsr_ip_to_string(union olsr_ip_addr *);
-
-
-
-/****************************************************************************
- *                Function pointers to functions in olsrd                   *
- *              These allow direct access to olsrd functions                *
- ****************************************************************************/
-
-/* The multi-purpose funtion. All other functions are fetched trough this */
-int (*olsr_plugin_io)(int, void *, size_t);
-
-/* add a prser function */
-void (*olsr_parser_add_function)(void (*)(union olsr_message *, struct interface *, union olsr_ip_addr *), int, int);
-
-/* Register a timeout function */
-int (*olsr_register_timeout_function)(void (*)(void));
-
-/* Register a scheduled event */
-int (*olsr_register_scheduler_event)(void (*)(void *), void *, float, float, olsr_u8_t *);
-
-/* Get the next message seqno in line */
-olsr_u16_t (*get_msg_seqno)(void);
-
-int (*net_outbuffer_push)(struct interface *, olsr_u8_t *, olsr_u16_t);
-
-/* Transmit package */
-int (*net_output)(struct interface*);
-
-/* Check the duplicate table for prior processing */
-int (*check_dup_proc)(union olsr_ip_addr *, olsr_u16_t);
-
-/* Default forward algorithm */
-int (*default_fwd)(union olsr_message *, 
-                  union olsr_ip_addr *, 
-                  olsr_u16_t,  
-                  struct interface *, 
-                  union olsr_ip_addr *);
-
-/* Add a socket to the main olsrd select loop */
-void (*add_olsr_socket)(int, void(*)(int));
-
-/* get the link status to a neighbor */
-int (*check_neighbor_link)(union olsr_ip_addr *);
-
-/* Mantissa/exponent conversions */
-olsr_u8_t (*double_to_me)(double);
-
-/* olsrd printf wrapper */
-int (*olsr_printf)(int, char *, ...);
-
-/* olsrd malloc wrapper */
-void *(*olsr_malloc)(size_t, const char *);
-
-int (*apm_read)(struct olsr_apm_info *);
-
-
-/****************************************************************************
- *                             Data from olsrd                              *
- *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
- *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
- *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
- ****************************************************************************/
-/**
- * The interface list from olsrd
- */
-
-struct interface   *ifs;
-
-/* These two are set automatically by olsrd at load time */
-int                ipversion;  /* IPversion in use */
-union olsr_ip_addr *main_addr; /* Main address */
-
-
-size_t             ipsize;     /* Size of the ipadresses used */
-struct timeval     *now;       /* the olsrds schedulers idea of current time */
-
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-
-/* Initialization function */
-int
-olsr_plugin_init(void);
-
-/* IPC initialization function */
-int
-plugin_ipc_init(void);
-
-int
-register_olsr_param(char *, char *);
-
-/* Destructor function */
-void
-olsr_plugin_exit(void);
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int, void *, size_t);
-
-/* Plugin interface version */
-int 
-get_plugin_interface_version(void);
-
-#endif
index 2e83924..d617c16 100644 (file)
  *
  */
 
-/* $Id: olsrd_power.c,v 1.12 2005/05/25 16:33:24 br1 Exp $ */
+/* $Id: olsrd_power.c,v 1.13 2005/05/29 12:47:43 br1 Exp $ */
 
 /*
  * Dynamic linked library example for UniK OLSRd
  */
 
 #include "olsrd_power.h"
+#include "olsrd_plugin.h"
+
+#include "olsr.h"
+#include "mantissa.h"
+#include "parser.h"
+#include "scheduler.h"
+#include "link_set.h"
+#include "socket_parser.h"
+#include "interfaces.h"
+#include "duplicate_set.h"
+#include "apm.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #define OS "Undefined"
 #endif
 
+/* The database - (using hashing) */
+static struct pwrentry list[HASHSIZE];
+
+
+static int has_apm;
+
+/* set buffer to size of IPv6 message */
+static char buffer[sizeof(struct olsrmsg6)];
+
 int ipc_socket;
 int ipc_open;
 int ipc_connection;
@@ -76,12 +97,12 @@ ipc_send(char *, int);
  *function in uolsrd_plugin.c
  */
 int
-olsr_plugin_init()
+olsrd_plugin_init()
 {
   int i;
   struct olsr_apm_info apm_info;
 
-  if(ipversion != AF_INET)
+  if(olsr_cnf->ip_version != AF_INET)
     {
       fprintf(stderr, "This plugin only supports IPv4!\n");
       return 0;
@@ -219,23 +240,6 @@ olsr_plugin_exit()
 }
 
 
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int cmd, void *data, size_t size)
-{
-
-  switch(cmd)
-    {
-    default:
-      return 0;
-    }
-  
-  return 1;
-}
-
-
-
 /**
  *A timeoutfunction called every time
  *the scheduler is polled
@@ -284,7 +288,7 @@ olsr_timeout()
 void
 olsr_event(void *foo)
 {
-  union olsr_message *message = (union olsr_message*)buffer;
+  union p_olsr_message *message = (union p_olsr_message*)buffer;
   struct interface *ifn;
 
   /* If we can't produce power info we do nothing */ 
@@ -294,17 +298,17 @@ olsr_event(void *foo)
   olsr_printf(3, "PLUG-IN: Generating package - ");
 
   /* looping trough interfaces */
-  for (ifn = ifs; ifn ; ifn = ifn->int_next) 
+  for (ifn = ifnet; ifn ; ifn = ifn->int_next) 
     {
       olsr_printf(3, "[%s]  ", ifn->int_name);
       /* Fill message */
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 */
          message->v4.olsr_msgtype = MESSAGE_TYPE;
          message->v4.olsr_vtime = double_to_me(7.5);
          message->v4.olsr_msgsize = htons(sizeof(struct olsrmsg));
-         memcpy(&message->v4.originator, main_addr, ipsize);
+         memcpy(&message->v4.originator, &main_addr, ipsize);
          message->v4.ttl = MAX_TTL;
          message->v4.hopcnt = 0;
          message->v4.seqno = htons(get_msg_seqno());
@@ -327,7 +331,7 @@ olsr_event(void *foo)
          message->v6.olsr_msgtype = MESSAGE_TYPE;
          message->v6.olsr_vtime = double_to_me(7.5);
          message->v6.olsr_msgsize = htons(sizeof(struct olsrmsg));
-         memcpy(&message->v6.originator, main_addr, ipsize);
+         memcpy(&message->v6.originator, &main_addr, ipsize);
          message->v6.ttl = MAX_TTL;
          message->v6.hopcnt = 0;
          message->v6.seqno = htons(get_msg_seqno());
@@ -361,27 +365,30 @@ olsr_event(void *foo)
 void
 olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *in_addr)
 {
+  union p_olsr_message* pm;
   struct  powermsg *message;
   union olsr_ip_addr originator;
   double vtime;
+  
+  pm = (union p_olsr_message*)m;
 
   /* Fetch the originator of the messsage */
   memcpy(&originator, &m->v4.originator, ipsize);
 
   /* Fetch the message based on IP version */
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     {
-      message = &m->v4.msg;
+      message = &pm->v4.msg;
       vtime = ME_TO_DOUBLE(m->v4.olsr_vtime);
     }
   else
     {
-      message = &m->v6.msg;
+      message = &pm->v6.msg;
       vtime = ME_TO_DOUBLE(m->v6.olsr_vtime);
     }
 
   /* Check if message originated from this node */
-  if(memcmp(&originator, main_addr, ipsize) == 0)
+  if(memcmp(&originator, &main_addr, ipsize) == 0)
     /* If so - back off */
     return;
 
@@ -398,7 +405,7 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
    * Remeber that this also registeres the message as
    * processed if nessecary
    */
-  if(!check_dup_proc(&originator,
+  if(!olsr_check_dup_table_proc(&originator,
                      ntohs(m->v4.seqno))) /* REMEMBER NTOHS!! */
     {
       /* If so - do not process */
@@ -419,7 +426,7 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
   /* Forward the message if nessecary
    * default_fwd does all the work for us!
    */
-  default_fwd(m,
+  olsr_forward_message(m,
               &originator,
               ntohs(m->v4.seqno), /* IMPORTANT!!! */
               in_if,
@@ -604,7 +611,7 @@ olsr_hashing(union olsr_ip_addr *address)
   olsr_u32_t hash;
   char *tmp;
 
-  if(ipversion == AF_INET)
+  if(olsr_cnf->ip_version == AF_INET)
     /* IPv4 */  
     hash = (ntohl(address->v4));
   else
@@ -633,7 +640,7 @@ olsr_hashing(union olsr_ip_addr *address)
 int
 olsr_timed_out(struct timeval *timer)
 {
-  return(timercmp(timer, now, <));
+  return(timercmp(timer, &now, <));
 }
 
 
@@ -679,45 +686,9 @@ olsr_get_timestamp(olsr_u32_t delay, struct timeval *hold_timer)
   time_value_sec = delay/1000;
   time_value_msec= delay - (delay*1000);
 
-  hold_timer->tv_sec = now->tv_sec + time_value_sec;
-  hold_timer->tv_usec = now->tv_usec + (time_value_msec*1000);   
+  hold_timer->tv_sec = now.tv_sec + time_value_sec;
+  hold_timer->tv_usec = now.tv_usec + (time_value_msec*1000);   
 }
 
 
-/**
- *Converts a olsr_ip_addr to a string
- *Goes for both IPv4 and IPv6
- *
- *NON REENTRANT! If you need to use this
- *function twice in e.g. the same printf
- *it will not work.
- *You must use it in different calls e.g.
- *two different printfs
- *
- *@param the IP to convert
- *@return a pointer to a static string buffer
- *representing the address in "dots and numbers"
- *
- */
-char *
-olsr_ip_to_string(union olsr_ip_addr *addr)
-{
-
-  char *ret;
-  struct in_addr in;
-  
-  if(ipversion == AF_INET)
-    {
-      in.s_addr=addr->v4;
-      ret = inet_ntoa(in);
-    }
-  else
-    {
-      /* IPv6 */
-      ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
-    }
-
-  return ret;
-}
-
 
index 5388982..d007a8c 100644 (file)
@@ -36,6 +36,9 @@
 #ifndef _OLSRD_PLUGIN_TEST
 #define _OLSRD_PLUGIN_TEST
 
+#include "hashing.h"
+#include "defs.h"
+
 #include "olsrd_plugin.h"
 
 #define IPC_PORT           8888
@@ -55,14 +58,87 @@ struct pwrentry
 };
 
 
-/* The database - (using hashing) */
-struct pwrentry list[HASHSIZE];
+/*****************************************************************************
+ *                               Plugin data                                 *
+ *                       ALTER THIS TO YOUR OWN NEED                         *
+ *****************************************************************************/
+
+#define PLUGIN_NAME    "OLSRD Powerstatus plugin"
+#define PLUGIN_VERSION "0.3"
+#define PLUGIN_AUTHOR   "Andreas Tønnesen"
+#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
+
+/* The type of message you will use */
+#define MESSAGE_TYPE 128
+
+/* The type of messages we will receive - can be set to promiscuous */
+#define PARSER_TYPE MESSAGE_TYPE
+
+
+/****************************************************************************
+ *                            PACKET SECTION                                *
+ ****************************************************************************/
 
 
-int has_apm;
+/**********************************
+ * DEFINE YOUR CUSTOM PACKET HERE *
+ **********************************/
 
-/* set buffer to size of IPv6 message */
-static char buffer[sizeof(struct olsrmsg6)];
+struct powermsg
+{
+  olsr_u8_t       source_type;
+  olsr_u8_t       percentage;
+  olsr_u16_t      time_left;
+};
+
+/*
+ * OLSR message (several can exist in one OLSR packet)
+ */
+
+struct p_olsrmsg
+{
+  olsr_u8_t     olsr_msgtype;
+  olsr_u8_t     olsr_vtime;
+  olsr_u16_t    olsr_msgsize;
+  olsr_u32_t    originator;
+  olsr_u8_t     ttl;
+  olsr_u8_t     hopcnt;
+  olsr_u16_t    seqno;
+
+  /* YOUR PACKET GOES HERE */
+  struct powermsg msg;
+
+};
+
+/*
+ *IPv6
+ */
+
+struct p_olsrmsg6
+{
+  olsr_u8_t        olsr_msgtype;
+  olsr_u8_t        olsr_vtime;
+  olsr_u16_t       olsr_msgsize;
+  struct in6_addr  originator;
+  olsr_u8_t        ttl;
+  olsr_u8_t        hopcnt;
+  olsr_u16_t       seqno;
+
+  /* YOUR PACKET GOES HERE */
+  struct powermsg msg;
+
+};
+
+/* 
+ * ALWAYS USE THESE WRAPPERS TO
+ * ENSURE IPv4 <-> IPv6 compability 
+ */
+
+union p_olsr_message
+{
+  struct p_olsrmsg v4;
+  struct p_olsrmsg6 v6;
+};
 
 
 /* Timeout function to register with the sceduler */
@@ -89,4 +165,22 @@ update_power_entry(union olsr_ip_addr *, struct powermsg *, double);
 void
 print_power_table(void);
 
+int
+olsrd_plugin_init(void);
+
+int
+plugin_ipc_init(void);
+
+void
+olsr_plugin_exit(void);
+
+void
+olsr_get_timestamp(olsr_u32_t, struct timeval *);
+
+void
+olsr_init_timer(olsr_u32_t, struct timeval *);
+
+int
+olsr_timed_out(struct timeval *);
+
 #endif
index 81f3f8e..3d09da3 100644 (file)
@@ -1,10 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
index 7cd9a69..8be0276 100644 (file)
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: olsrd_plugin.c,v 1.9 2005/02/25 22:43:11 kattemat Exp $
+ * $Id: olsrd_plugin.c,v 1.10 2005/05/29 12:47:43 br1 Exp $
  */
 
 
 
 #include "olsrd_plugin.h"
+#include "olsrd_secure.h"
 #include <stdio.h>
 #include <string.h>
-#include "plugin_loader.h"
 
-void __attribute__ ((constructor)) 
+
+#define PLUGIN_NAME    "OLSRD signature plugin"
+#define PLUGIN_VERSION "0.5"
+#define PLUGIN_AUTHOR   "Andreas Tønnesen"
+#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
+
+
+static void __attribute__ ((constructor)) 
 my_init(void);
 
-void __attribute__ ((destructor)) 
+static void __attribute__ ((destructor)) 
 my_fini(void);
 
-int
-register_olsr_data(struct olsr_plugin_data *);
-
-int
-fetch_olsrd_data(void);
 
 /*
  * Defines the version of the plugin interface that is used
@@ -61,9 +63,9 @@ fetch_olsrd_data(void);
  * Do not alter unless you know what you are doing!
  */
 int 
-get_plugin_interface_version()
+olsrd_plugin_interface_version()
 {
-  return PLUGIN_INTERFACE_VERSION;
+  return OLSRD_PLUGIN_INTERFACE_VERSION;
 }
 
 
@@ -71,22 +73,19 @@ get_plugin_interface_version()
 /**
  *Constructor
  */
-void
+static void
 my_init()
 {
   /* Print plugin info to stdout */
   /* We cannot use olsr_printf yet! */
   printf("%s\n", MOD_DESC);
   printf("[ENC]Accepted parameter pairs: (\"Keyfile\" <FILENAME>)\n"); 
-  ifs = NULL;
-
-  return;
 }
 
 /**
  *Destructor
  */
-void
+static void
 my_fini()
 {
 
@@ -96,14 +95,12 @@ my_fini()
    * sourcefile and all data destruction
    * should happen there - NOT HERE!
    */
-  olsr_plugin_exit();
-
-  return;
+  secure_plugin_exit();
 }
 
 
 int
-register_olsr_param(char *key, char *value)
+olsrd_plugin_register_param(char *key, char *value)
 {
   if(!strcmp(key, "Keyfile"))
     {
@@ -114,46 +111,15 @@ register_olsr_param(char *key, char *value)
 }
 
 
-/**
- *Register needed functions and pointers
- *
- *This function should not be changed!
- *
- */
 int
-register_olsr_data(struct olsr_plugin_data *data)
-{
-  /* IPversion */
-  ipversion = data->ipversion;
-  /* Main address */
-  main_addr = data->main_addr;
-
-  /* Multi-purpose function */
-  olsr_plugin_io = data->olsr_plugin_io;
-
-  /* Set size of IP address */
-  if(ipversion == AF_INET)
-    {
-      ipsize = sizeof(olsr_u32_t);
-    }
-  else
-    {
-      ipsize = sizeof(struct in6_addr);
-    }
-
-  if(!fetch_olsrd_data())
-    {
-      fprintf(stderr, "Could not fetch the neccessary functions from olsrd!\n");
-      return 0;
-    }
-
+olsrd_plugin_init() {
   /* Calls the initialization function
    * olsr_plugin_init()
    * This function should be present in your
    * sourcefile and all data initialization
    * should happen there - NOT HERE!
    */
-  if(!olsr_plugin_init())
+  if(!secure_plugin_init())
     {
       fprintf(stderr, "Could not initialize plugin!\n");
       return 0;
@@ -167,171 +133,3 @@ register_olsr_data(struct olsr_plugin_data *data)
   return 1;
 
 }
-
-
-
-int
-fetch_olsrd_data()
-{
-  int retval = 1;
-
-
-  if(!olsr_plugin_io(GETF__NET_RESERVE_BUFSPACE, 
-                    &net_reserve_bufspace, 
-                    sizeof(net_reserve_bufspace)))
-  {
-    net_reserve_bufspace = NULL;
-    retval = 0;
-  }
-
-  if(!olsr_plugin_io(GETF__NET_OUTBUFFER_PUSH_RESERVED, 
-                    &net_outbuffer_push_reserved, 
-                    sizeof(net_outbuffer_push_reserved)))
-  {
-    net_outbuffer_push_reserved = NULL;
-    retval = 0;
-  }
-
-  if(!olsr_plugin_io(GETF__NET_OUTBUFFER_PUSH, 
-                    &net_outbuffer_push, 
-                    sizeof(net_outbuffer_push)))
-  {
-    net_outbuffer_push = NULL;
-    retval = 0;
-  }
-
-
-  if(!olsr_plugin_io(GETF__OLSR_PRINTF, 
-                    &olsr_printf, 
-                    sizeof(olsr_printf)))
-  {
-    olsr_printf = NULL;
-    retval = 0;
-  }
-
-  if(!olsr_plugin_io(GETD__NOW, 
-                    &now, 
-                    sizeof(now)))
-  {
-    now = NULL;
-    retval = 0;
-  }
-
-  if(!olsr_plugin_io(GETF__NET_OUTPUT, 
-                    &net_output, 
-                    sizeof(net_output)))
-  {
-    net_output = NULL;
-    retval = 0;
-  }
-
-  /* Olsr malloc wrapper */
-  if(!olsr_plugin_io(GETF__OLSR_MALLOC, 
-                    &olsr_malloc, 
-                    sizeof(olsr_malloc)))
-  {
-    olsr_malloc = NULL;
-    retval = 0;
-  }
-
-  /* Scheduler event registration */
-  if(!olsr_plugin_io(GETF__OLSR_REGISTER_SCHEDULER_EVENT, 
-                    &olsr_register_scheduler_event, 
-                    sizeof(olsr_register_scheduler_event)))
-  {
-    olsr_register_scheduler_event = NULL;
-    retval = 0;
-  }
-
-
-  /* Interface list */
-  if(!olsr_plugin_io(GETD__IFNET, &ifs, sizeof(ifs)))
-  {
-    ifs = NULL;
-    retval = 0;
-  }
-
-
-
-  /* Add socket to OLSR select function */
-  if(!olsr_plugin_io(GETF__ADD_OLSR_SOCKET, &add_olsr_socket, sizeof(add_olsr_socket)))
-  {
-    add_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  /* Remove socket from OLSR select function */
-  if(!olsr_plugin_io(GETF__REMOVE_OLSR_SOCKET, &remove_olsr_socket, sizeof(remove_olsr_socket)))
-  {
-    remove_olsr_socket = NULL;
-    retval = 0;
-  }
-
-  /* Add packet transform function */
-  if(!olsr_plugin_io(GETF__ADD_PTF, &add_ptf, sizeof(add_ptf)))
-  {
-    add_ptf = NULL;
-    retval = 0;
-  }
-
-  /* Remove packet transform function */
-  if(!olsr_plugin_io(GETF__DEL_PTF, &del_ptf, sizeof(del_ptf)))
-  {
-    del_ptf = NULL;
-    retval = 0;
-  }
-
-  /* Get message seqno function */
-  if(!olsr_plugin_io(GETF__GET_MSG_SEQNO, &get_msg_seqno, sizeof(get_msg_seqno)))
-  {
-    get_msg_seqno = NULL;
-    retval = 0;
-  }
-
-  /* Socket read function */
-  if(!olsr_plugin_io(GETF__OLSR_INPUT, &olsr_input, sizeof(olsr_input)))
-  {
-    olsr_input = NULL;
-    retval = 0;
-  }
-
-  /* Default packet parser */
-  if(!olsr_plugin_io(GETF__PARSE_PACKET, &parse_packet, sizeof(parse_packet)))
-  {
-    parse_packet = NULL;
-    retval = 0;
-  }
-
-  /* Find interface by socket */
-  if(!olsr_plugin_io(GETF__IF_IFWITHSOCK, &if_ifwithsock, sizeof(if_ifwithsock)))
-  {
-    if_ifwithsock = NULL;
-    retval = 0;
-  }
-
-  /* Find interface by address */
-  if(!olsr_plugin_io(GETF__IF_IFWITHADDR, &if_ifwithaddr, sizeof(if_ifwithaddr)))
-  {
-    if_ifwithaddr = NULL;
-    retval = 0;
-  }
-
-
-  /* Add ifchange function */
-  if(!olsr_plugin_io(GETF__ADD_IFCHGF, &add_ifchgf, sizeof(add_ifchgf)))
-  {
-    add_ifchgf = NULL;
-    retval = 0;
-  }
-
-  /* Remove ifchange function */
-  if(!olsr_plugin_io(GETF__DEL_IFCHGF, &del_ifchgf, sizeof(del_ifchgf)))
-  {
-    del_ifchgf = NULL;
-    retval = 0;
-  }
-
-
-  return retval;
-
-}
diff --git a/lib/secure/src/olsrd_plugin.h b/lib/secure/src/olsrd_plugin.h
deleted file mode 100644 (file)
index 684498b..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-
-/*
- * Secure OLSR plugin
- * http://www.olsr.org
- *
- * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
- * 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 olsrd, olsr.org 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.
- *
- * $Id: olsrd_plugin.h,v 1.14 2005/05/25 16:33:24 br1 Exp $
- */
-
-
-/*
- * olsr.org olsr daemon security plugin
- */
-
-#ifndef _OLSRD_PLUGIN_DEFS
-#define _OLSRD_PLUGIN_DEFS
-
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/time.h>
-#include <time.h>
-#include <math.h>
-#include <stdio.h>
-
-#include "olsr_plugin_io.h"
-#include "olsr_types.h"
-#include "interfaces.h"
-
-/* Use this as PARSER_TYPE to receive ALL messages! */
-#define PROMISCUOUS 0xffffffff
-
-
-
-#define PLUGIN_NAME    "OLSRD signature plugin"
-#define PLUGIN_VERSION "0.5"
-#define PLUGIN_AUTHOR   "Andreas Tønnesen"
-#define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
-#define PLUGIN_INTERFACE_VERSION 3
-
-/* The type of message you will use */
-#define MESSAGE_TYPE 10
-
-#define MAXMESSAGESIZE 512
-
-/* The type of messages we will receive - can be set to promiscuous */
-#define PARSER_TYPE MESSAGE_TYPE
-
-#define TYPE_CHALLENGE 11
-#define TYPE_CRESPONSE 12
-#define TYPE_RRESPONSE 13
-
-#define TIMED_OUT(s1) \
-        timercmp(s1, now, <)
-
-char keyfile[FILENAME_MAX];
-
-#define MAX_TTL               0xff
-
-/*
- *Link Types
- */
-
-#define UNSPEC_LINK           0
-#define ASYM_LINK             1
-#define SYM_LINK              2
-#define LOST_LINK             3
-#define HIDE_LINK             4
-#define MAX_LINK              4
-
-
-/*
- * Mantissa scaling factor
- */
-
-#define VTIME_SCALE_FACTOR    0.0625
-
-
-/*
- * Hashing
- */
-
-#define        HASHSIZE        32
-#define        HASHMASK        (HASHSIZE - 1)
-
-#define MAXIFS         8 /* Maximum number of interfaces (from defs.h) in uOLSRd */
-
-/* Ifchange actions */
-
-#define IFCHG_IF_ADD           1
-#define IFCHG_IF_REMOVE        2
-#define IFCHG_IF_UPDATE        3
-
-#ifdef USE_OPENSSL
-#define SIGSIZE   20
-#else
-#define SIGSIZE   16
-#endif
-
-/****************************************************************************
- *                            PACKET SECTION                                *
- ****************************************************************************/
-
-struct sig_msg
-{
-  olsr_u8_t     type;
-  olsr_u8_t     algorithm;
-  olsr_u16_t    reserved;
-
-  time_t        timestamp;
-  char          signature[SIGSIZE];
-};
-
-/*
- * OLSR message (several can exist in one OLSR packet)
- */
-
-struct olsrmsg
-{
-  olsr_u8_t     olsr_msgtype;
-  olsr_u8_t     olsr_vtime;
-  olsr_u16_t    olsr_msgsize;
-  olsr_u32_t    originator;
-  olsr_u8_t     ttl;
-  olsr_u8_t     hopcnt;
-  olsr_u16_t    seqno;
-
-  /* YOUR PACKET GOES HERE */
-  struct sig_msg sig;
-
-};
-
-
-/*
- * Challenge response messages
- */
-
-struct challengemsg
-{
-  olsr_u8_t     olsr_msgtype;
-  olsr_u8_t     olsr_vtime;
-  olsr_u16_t    olsr_msgsize;
-  olsr_u32_t    originator;
-  olsr_u8_t     ttl;
-  olsr_u8_t     hopcnt;
-  olsr_u16_t    seqno;
-
-  olsr_u32_t    destination;
-  olsr_u32_t    challenge;
-
-  char          signature[SIGSIZE];
-
-};
-
-
-
-struct c_respmsg
-{
-  olsr_u8_t     olsr_msgtype;
-  olsr_u8_t     olsr_vtime;
-  olsr_u16_t    olsr_msgsize;
-  olsr_u32_t    originator;
-  olsr_u8_t     ttl;
-  olsr_u8_t     hopcnt;
-  olsr_u16_t    seqno;
-
-  olsr_u32_t    destination;
-  olsr_u32_t    challenge;
-  time_t        timestamp;
-
-  char          res_sig[SIGSIZE];
-
-  char          signature[SIGSIZE];
-
-};
-
-
-struct r_respmsg
-{
-  olsr_u8_t     olsr_msgtype;
-  olsr_u8_t     olsr_vtime;
-  olsr_u16_t    olsr_msgsize;
-  olsr_u32_t    originator;
-  olsr_u8_t     ttl;
-  olsr_u8_t     hopcnt;
-  olsr_u16_t    seqno;
-
-  olsr_u32_t    destination;
-  time_t        timestamp;
-
-  char          res_sig[SIGSIZE];
-
-  char          signature[SIGSIZE];
-};
-
-
-/*
- *IPv6
- */
-
-struct olsrmsg6
-{
-  olsr_u8_t        olsr_msgtype;
-  olsr_u8_t        olsr_vtime;
-  olsr_u16_t       olsr_msgsize;
-  struct in6_addr  originator;
-  olsr_u8_t        ttl;
-  olsr_u8_t        hopcnt;
-  olsr_u16_t       seqno;
-
-  /* YOUR PACKET GOES HERE */
-  struct sig_msg   sig;
-};
-
-/*
- * Generic OLSR packet - DO NOT ALTER
- */
-
-struct olsr 
-{
-  olsr_u16_t     olsr_packlen;         /* packet length */
-  olsr_u16_t     olsr_seqno;
-  struct olsrmsg  olsr_msg[1];          /* variable messages */
-};
-
-
-struct olsr6
-{
-  olsr_u16_t       olsr_packlen;        /* packet length */
-  olsr_u16_t       olsr_seqno;
-  struct olsrmsg6   olsr_msg[1];         /* variable messages */
-};
-
-
-/* 
- * ALWAYS USE THESE WRAPPERS TO
- * ENSURE IPv4 <-> IPv6 compability 
- */
-
-union olsr_message
-{
-  struct olsrmsg v4;
-  struct olsrmsg6 v6;
-};
-
-union olsr_packet
-{
-  struct olsr v4;
-  struct olsr6 v6;
-};
-
-
-/***************************************************************************
- *                 Functions provided by uolsrd_plugin.c                   *
- *                  Similar to their siblings in olsrd                     *
- ***************************************************************************/
-
-char ipv6_buf[100]; /* buffer for IPv6 inet_htop */
-
-/* All these could optionally be fetched from olsrd */
-
-olsr_u32_t
-olsr_hashing(union olsr_ip_addr *);
-
-void
-olsr_get_timestamp(olsr_u32_t, struct timeval *);
-
-void
-olsr_init_timer(olsr_u32_t, struct timeval *);
-
-int
-olsr_timed_out(struct timeval *);
-
-char *
-olsr_ip_to_string(union olsr_ip_addr *);
-
-
-
-/****************************************************************************
- *                Function pointers to functions in olsrd                   *
- *              These allow direct access to olsrd functions                *
- ****************************************************************************/
-
-/* The multi-purpose funtion. All other functions are fetched trough this */
-int (*olsr_plugin_io)(int, void *, size_t);
-
-/* add a prser function */
-void (*olsr_parser_add_function)(void (*)(union olsr_message *, struct interface *, union olsr_ip_addr *), 
-                                int, int);
-
-/* Register a timeout function */
-int (*olsr_register_timeout_function)(void (*)(void));
-
-/* Register a scheduled event */
-int (*olsr_register_scheduler_event)(void (*)(void), void *, float, float, olsr_u8_t *);
-
-/* Get the next message seqno in line */
-olsr_u16_t (*get_msg_seqno)(void);
-
-/* Transmit package */
-int (*net_output)(struct interface*);
-
-/* Check the duplicate table for prior processing */
-int (*check_dup_proc)(union olsr_ip_addr *, olsr_u16_t);
-
-/* Default forward algorithm */
-int (*default_fwd)(union olsr_message *, 
-                  union olsr_ip_addr *, 
-                  olsr_u16_t,  
-                  struct interface *, 
-                  union olsr_ip_addr *);
-
-/* Add a socket to the main olsrd select loop */
-void (*add_olsr_socket)(int, void(*)(int));
-
-/* Remove a socket from the main olsrd select loop */
-int (*remove_olsr_socket)(int, void(*)(int));
-
-/* get the link status to a neighbor */
-int (*check_neighbor_link)(union olsr_ip_addr *);
-
-/* Mantissa/exponent conversions */
-olsr_u8_t (*double_to_me)(double);
-
-/* olsrd printf wrapper */
-int (*olsr_printf)(int, char *, ...);
-
-/* olsrd malloc wrapper */
-void *(*olsr_malloc)(size_t, const char *);
-
-/* Add a packet transform function */
-int (*add_ptf)(int(*)(char *, int *));
-
-/* Remove a packet transform function */
-int (*del_ptf)(int(*)(char *, int *));
-
-/* Socket input function */
-void (*olsr_input)(int);
-
-/* Packet parser function */
-void (*parse_packet)(struct olsr *, int, struct interface *, union olsr_ip_addr *);
-
-/* Map interface by socket */
-struct interface * (*if_ifwithsock)(int);
-
-/* Map interface by address */
-struct interface * (*if_ifwithaddr)(union olsr_ip_addr *);
-
-/* Add an ifchange function */
-int (*add_ifchgf)(int(*)(struct interface *, int));
-
-/* Remove an ifchange function */
-int (*del_ifchgf)(int(*)(struct interface *, int));
-
-int (*net_reserve_bufspace)(struct interface *, int);
-
-int (*net_outbuffer_push_reserved)(struct interface *, olsr_u8_t *, olsr_u16_t);
-
-int (*net_outbuffer_push)(struct interface *, olsr_u8_t *, olsr_u16_t);
-
-
-/****************************************************************************
- *                             Data from olsrd                              *
- *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
- *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
- *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
- ****************************************************************************/
-/**
- * The interface list from olsrd
- */
-
-struct interface   *ifs;
-
-/* These two are set automatically by olsrd at load time */
-int                ipversion;  /* IPversion in use */
-union olsr_ip_addr *main_addr; /* Main address */
-
-
-size_t             ipsize;     /* Size of the ipadresses used */
-struct timeval     *now;       /* the olsrds schedulers idea of current time */
-
-
-/****************************************************************************
- *                Functions that the plugin MUST provide                    *
- ****************************************************************************/
-
-
-/* Initialization function */
-int
-olsr_plugin_init(void);
-
-/* IPC initialization function */
-int
-plugin_ipc_init(void);
-
-int
-register_olsr_param(char *, char *);
-
-/* Destructor function */
-void
-olsr_plugin_exit(void);
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int, void *, size_t);
-
-int 
-get_plugin_interface_version(void);
-
-#endif
index eb41b79..1f61211 100644 (file)
@@ -33,7 +33,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: olsrd_secure.c,v 1.13 2005/05/25 13:50:22 br1 Exp $
+ * $Id: olsrd_secure.c,v 1.14 2005/05/29 12:47:44 br1 Exp $
  */
 
 
@@ -42,6 +42,7 @@
  */
 
 #include "olsrd_secure.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <signal.h>
 
+#include "defs.h"
+#include "olsr.h"
+#include "socket_parser.h"
+#include "parser.h"
+#include "scheduler.h"
+
 #ifdef USE_OPENSSL
 /* OpenSSL stuff */
 #include <openssl/sha.h>
@@ -111,7 +118,7 @@ MD5_checksum(char *data, olsr_u16_t data_len, char *hashbuf)
  */
 
 int
-olsr_plugin_init()
+secure_plugin_init()
 {
   struct interface *ints;
   int i;
@@ -148,7 +155,7 @@ olsr_plugin_init()
   add_ifchgf(&ifchange);
 
   /* Hijack OLSR socket parser functions */
-  ints = ifs;
+  ints = ifnet;
   while(ints)
     {
       olsr_printf(1, "[ENC]Hijacking %s socket %d\n", ints->int_name, ints->olsr_socket);
@@ -157,7 +164,7 @@ olsr_plugin_init()
       add_olsr_socket(ints->olsr_socket, &packet_parser);
      
       /* Reducing maxmessagesize */
-      net_reserve_bufspace(ints, sizeof(struct olsrmsg));
+      net_reserve_bufspace(ints, sizeof(struct s_olsrmsg));
 
       ints = ints->int_next;
     }
@@ -168,6 +175,7 @@ olsr_plugin_init()
   return 1;
 }
 
+
 int
 plugin_ipc_init()
 {
@@ -179,28 +187,11 @@ plugin_ipc_init()
  * destructor - called at unload
  */
 void
-olsr_plugin_exit()
+secure_plugin_exit()
 {
 }
 
 
-
-/* Mulitpurpose funtion */
-int
-plugin_io(int cmd, void *data, size_t size)
-{
-
-  switch(cmd)
-    {
-    default:
-      return 0;
-    }
-  
-  return 1;
-}
-
-
-
 /**
  *Scheduled event
  */
@@ -231,7 +222,7 @@ ifchange(struct interface *ifn, int action)
       remove_olsr_socket(ifn->olsr_socket, olsr_input);
       add_olsr_socket(ifn->olsr_socket, &packet_parser);
       /* Reducing maxmessagesize */
-      net_reserve_bufspace(ifn, sizeof(struct olsrmsg));
+      net_reserve_bufspace(ifn, sizeof(struct s_olsrmsg));
       break;
 
     case(IFCHG_IF_REMOVE):
@@ -282,7 +273,7 @@ packet_parser(int fd)
          break;
        }
 
-      if(ipversion == AF_INET)
+      if(olsr_cnf->ip_version == AF_INET)
        {
          /* IPv4 sender address */
          memcpy(&from_addr, &((struct sockaddr_in *)&from)->sin_addr.s_addr, ipsize);
@@ -344,9 +335,9 @@ packet_parser(int fd)
       //olsr_printf(1, "Recieved a packet from %s\n", olsr_ip_to_string((union olsr_ip_addr *)&((struct sockaddr_in *)&from)->sin_addr.s_addr));
 
       //printf("\nCC: %d FROMLEN: %d\n\n", cc, fromlen);
-      if ((ipversion == AF_INET) && (fromlen != sizeof (struct sockaddr_in)))
+      if ((olsr_cnf->ip_version == AF_INET) && (fromlen != sizeof (struct sockaddr_in)))
        break;
-      else if ((ipversion == AF_INET6) && (fromlen != sizeof (struct sockaddr_in6)))
+      else if ((olsr_cnf->ip_version == AF_INET6) && (fromlen != sizeof (struct sockaddr_in6)))
        break;
 
 
@@ -409,7 +400,7 @@ check_auth(char *pck, int *size)
 int
 add_signature(char *pck, int *size)
 {
-  struct olsrmsg *msg;
+  struct s_olsrmsg *msg;
 #ifdef DEBUG
   int i, j;
   char *sigmsg;                                                                                        
@@ -418,15 +409,15 @@ add_signature(char *pck, int *size)
   olsr_printf(2, "[ENC]Adding signature for packet size %d\n", *size);
   fflush(stdout);
   
-  msg = (struct olsrmsg *)&pck[*size];
+  msg = (struct s_olsrmsg *)&pck[*size];
   /* Update size */
-  ((struct olsr*)pck)->olsr_packlen = htons(*size + sizeof(struct olsrmsg));
+  ((struct olsr*)pck)->olsr_packlen = htons(*size + sizeof(struct s_olsrmsg));
   
   /* Fill packet header */
   msg->olsr_msgtype = MESSAGE_TYPE;
   msg->olsr_vtime = 0;
-  msg->olsr_msgsize = htons(sizeof(struct olsrmsg));
-  memcpy(&msg->originator, main_addr, ipsize);
+  msg->olsr_msgsize = htons(sizeof(struct s_olsrmsg));
+  memcpy(&msg->originator, &main_addr, ipsize);
   msg->ttl = 1;
   msg->hopcnt = 0;
   msg->seqno = htons(get_msg_seqno());
@@ -437,11 +428,11 @@ add_signature(char *pck, int *size)
   memset(&msg->sig.reserved, 0, 2);
   
   /* Add timestamp */
-  msg->sig.timestamp = htonl(now->tv_sec);
-  olsr_printf(3, "[ENC]timestamp: %d\n", now->tv_sec);
+  msg->sig.timestamp = htonl(now.tv_sec);
+  olsr_printf(3, "[ENC]timestamp: %d\n", now.tv_sec);
   
   /* Set the new size */
-  *size = *size + sizeof(struct olsrmsg);
+  *size = *size + sizeof(struct s_olsrmsg);
   
   /* Create packet + key cache */
   /* First the OLSR packet + signature message - digest */
@@ -459,7 +450,7 @@ add_signature(char *pck, int *size)
   j = 0;
   sigmsg = (char *)msg;
 
-  for(i = 0; i < sizeof(struct olsrmsg); i++)
+  for(i = 0; i < sizeof(struct s_olsrmsg); i++)
     {
       olsr_printf(1, "  %3i", (u_char) sigmsg[i]);
       j++;
@@ -483,7 +474,7 @@ validate_packet(char *pck, int *size)
 {
   int packetsize;
   char sha1_hash[SIGNATURE_SIZE];
-  struct olsrmsg *sig;
+  struct s_olsrmsg *sig;
   time_t rec_time;
 
 #ifdef DEBUG
@@ -492,12 +483,12 @@ validate_packet(char *pck, int *size)
 #endif
 
   /* Find size - signature message */
-  packetsize = *size - sizeof(struct olsrmsg);
+  packetsize = *size - sizeof(struct s_olsrmsg);
 
   if(packetsize < 4)
     return 0;
 
-  sig = (struct olsrmsg *)&pck[packetsize];
+  sig = (struct s_olsrmsg *)&pck[packetsize];
 
   //olsr_printf(1, "Size: %d\n", packetsize);
 
@@ -507,7 +498,7 @@ validate_packet(char *pck, int *size)
   j = 0;
   sigmsg = (char *)sig;
 
-  for(i = 0; i < sizeof(struct olsrmsg); i++)
+  for(i = 0; i < sizeof(struct s_olsrmsg); i++)
     {
       olsr_printf(1, "  %3i", (u_char) sigmsg[i]);
       j++;
@@ -522,7 +513,7 @@ validate_packet(char *pck, int *size)
   /* Sanity check first */
   if((sig->olsr_msgtype != MESSAGE_TYPE) || 
      (sig->olsr_vtime) ||
-     (sig->olsr_msgsize != ntohs(sizeof(struct olsrmsg))) ||
+     (sig->olsr_msgsize != ntohs(sizeof(struct s_olsrmsg))) ||
      (sig->ttl != 1) ||
      (sig->hopcnt != 0))
     {
@@ -602,7 +593,7 @@ validate_packet(char *pck, int *size)
       return 0;
     }
 
-  olsr_printf(1, "[ENC]Received timestamp %d diff: %d\n", rec_time, now->tv_sec - rec_time);
+  olsr_printf(1, "[ENC]Received timestamp %d diff: %d\n", rec_time, now.tv_sec - rec_time);
 
   /* Remove signature message */
   *size = packetsize;
@@ -633,7 +624,7 @@ check_timestamp(union olsr_ip_addr *originator, time_t tstamp)
       return 0;
     }
 
-  diff = entry->diff - (now->tv_sec - tstamp);
+  diff = entry->diff - (now.tv_sec - tstamp);
 
   olsr_printf(3, "[ENC]Timestamp slack: %d\n", diff);
 
@@ -644,8 +635,8 @@ check_timestamp(union olsr_ip_addr *originator, time_t tstamp)
     }
 
   /* ok - update diff */
-  entry->diff = ((now->tv_sec - tstamp) + entry->diff) ?
-    ((now->tv_sec - tstamp) + entry->diff) / 2 : 0;
+  entry->diff = ((now.tv_sec - tstamp) + entry->diff) ?
+    ((now.tv_sec - tstamp) + entry->diff) / 2 : 0;
 
   olsr_printf(3, "[ENC]Diff set to : %d\n", entry->diff);
 
@@ -683,7 +674,7 @@ send_challenge(union olsr_ip_addr *new_host)
   cmsg.olsr_msgtype = TYPE_CHALLENGE;
   cmsg.olsr_vtime = 0;
   cmsg.olsr_msgsize = htons(sizeof(struct challengemsg));
-  memcpy(&cmsg.originator, main_addr, ipsize);
+  memcpy(&cmsg.originator, &main_addr, ipsize);
   cmsg.ttl = 1;
   cmsg.hopcnt = 0;
   cmsg.seqno = htons(get_msg_seqno());
@@ -819,7 +810,7 @@ parse_cres(char *in_msg)
 
   entry->challenge = 0;
   entry->validated = 1;
-  entry->diff = now->tv_sec - msg->timestamp;
+  entry->diff = now.tv_sec - msg->timestamp;
 
   /* update validtime - validated entry */
   olsr_get_timestamp((olsr_u32_t) TIMESTAMP_HOLD_TIME*1000, &entry->valtime);
@@ -914,7 +905,7 @@ parse_rres(char *in_msg)
 
   entry->challenge = 0;
   entry->validated = 1;
-  entry->diff = now->tv_sec - msg->timestamp;
+  entry->diff = now.tv_sec - msg->timestamp;
 
   /* update validtime - validated entry */
   olsr_get_timestamp((olsr_u32_t) TIMESTAMP_HOLD_TIME*1000, &entry->valtime);
@@ -1044,13 +1035,13 @@ send_cres(union olsr_ip_addr *to, union olsr_ip_addr *from, olsr_u32_t chal_in,
   crmsg.olsr_msgtype = TYPE_CRESPONSE;
   crmsg.olsr_vtime = 0;
   crmsg.olsr_msgsize = htons(sizeof(struct c_respmsg));
-  memcpy(&crmsg.originator, main_addr, ipsize);
+  memcpy(&crmsg.originator, &main_addr, ipsize);
   crmsg.ttl = 1;
   crmsg.hopcnt = 0;
   crmsg.seqno = htons(get_msg_seqno());
 
   /* set timestamp */
-  crmsg.timestamp = now->tv_sec;
+  crmsg.timestamp = now.tv_sec;
   olsr_printf(3, "[ENC]Timestamp %d\n", crmsg.timestamp);
 
   /* Fill subheader */
@@ -1118,13 +1109,13 @@ send_rres(union olsr_ip_addr *to, union olsr_ip_addr *from, olsr_u32_t chal_in)
   rrmsg.olsr_msgtype = TYPE_RRESPONSE;
   rrmsg.olsr_vtime = 0;
   rrmsg.olsr_msgsize = htons(sizeof(struct r_respmsg));
-  memcpy(&rrmsg.originator, main_addr, ipsize);
+  memcpy(&rrmsg.originator, &main_addr, ipsize);
   rrmsg.ttl = 1;
   rrmsg.hopcnt = 0;
   rrmsg.seqno = htons(get_msg_seqno());
 
   /* set timestamp */
-  rrmsg.timestamp = now->tv_sec;
+  rrmsg.timestamp = now.tv_sec;
   olsr_printf(3, "[ENC]Timestamp %d\n", rrmsg.timestamp);
 
   /* Fill subheader */
@@ -1203,7 +1194,7 @@ lookup_timestamp_entry(union olsr_ip_addr *adr)
  *@return nada
  */
 void
-timeout_timestamps()
+timeout_timestamps(void* foo)
 {
   struct stamp *tmp_list;
   struct stamp *entry_to_delete;
@@ -1276,36 +1267,6 @@ read_key_from_file(char *file)
  *************************************************************/
 
 
-/**
- *Hashing function. Creates a key based on
- *an 32-bit address.
- *@param address the address to hash
- *@return the hash(a value in the 0-31 range)
- */
-olsr_u32_t
-olsr_hashing(union olsr_ip_addr *address)
-{
-  olsr_u32_t hash;
-  char *tmp;
-
-  if(ipversion == AF_INET)
-    /* IPv4 */  
-    hash = (ntohl(address->v4));
-  else
-    {
-      /* IPv6 */
-      tmp = (char *) &address->v6;
-      hash = (ntohl(*tmp));
-    }
-
-  //hash &= 0x7fffffff; 
-  hash &= HASHMASK;
-
-  return hash;
-}
-
-
-
 /**
  *Checks if a timer has times out. That means
  *if it is smaller than present time.
@@ -1317,7 +1278,7 @@ olsr_hashing(union olsr_ip_addr *address)
 int
 olsr_timed_out(struct timeval *timer)
 {
-  return(timercmp(timer, now, <));
+  return(timercmp(timer, &now, <));
 }
 
 
@@ -1363,45 +1324,7 @@ olsr_get_timestamp(olsr_u32_t delay, struct timeval *hold_timer)
   time_value_sec = delay/1000;
   time_value_msec= delay - (delay*1000);
 
-  hold_timer->tv_sec = now->tv_sec + time_value_sec;
-  hold_timer->tv_usec = now->tv_usec + (time_value_msec*1000);   
-}
-
-
-/**
- *Converts a olsr_ip_addr to a string
- *Goes for both IPv4 and IPv6
- *
- *NON REENTRANT! If you need to use this
- *function twice in e.g. the same printf
- *it will not work.
- *You must use it in different calls e.g.
- *two different printfs
- *
- *@param the IP to convert
- *@return a pointer to a static string buffer
- *representing the address in "dots and numbers"
- *
- */
-char *
-olsr_ip_to_string(union olsr_ip_addr *addr)
-{
-
-  char *ret;
-  struct in_addr in;
-  
-  if(ipversion == AF_INET)
-    {
-      in.s_addr=addr->v4;
-      ret = inet_ntoa(in);
-    }
-  else
-    {
-      /* IPv6 */
-      ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
-    }
-
-  return ret;
+  hold_timer->tv_sec = now.tv_sec + time_value_sec;
+  hold_timer->tv_usec = now.tv_usec + (time_value_msec*1000);   
 }
 
-
index 562a404..bde6e2b 100644 (file)
 #ifndef _OLSRD_PLUGIN_TEST
 #define _OLSRD_PLUGIN_TEST
 
-#include "olsrd_plugin.h"
+#include "secure_messages.h"
+
+#include "hashing.h"
+
 
 #define KEYFILE "/root/.olsr/olsrd_secure_key"
 
@@ -52,8 +55,6 @@
 #define SHA1_INCLUDING_KEY   1
 #define MD5_INCLUDING_KEY   2
 
-#define        MAXMESSAGESIZE 512
-
 #ifdef USE_OPENSSL
 #define SIGNATURE_SIZE 20
 #else
@@ -144,7 +145,7 @@ void
 packet_parser(int);
 
 void
-timeout_timestamps(void);
+timeout_timestamps(void*);
 
 int
 check_timestamp(union olsr_ip_addr *, time_t);
@@ -155,4 +156,22 @@ lookup_timestamp_entry(union olsr_ip_addr *);
 int
 read_key_from_file(char *);
 
+void
+olsr_get_timestamp(olsr_u32_t, struct timeval *);
+
+void
+olsr_init_timer(olsr_u32_t, struct timeval *);
+
+int
+olsr_timed_out(struct timeval *);
+
+int
+secure_plugin_init(void);
+
+void
+secure_plugin_exit(void);
+
+int
+plugin_ipc_init(void);
+
 #endif
diff --git a/lib/secure/src/secure_messages.h b/lib/secure/src/secure_messages.h
new file mode 100644 (file)
index 0000000..b45ef3c
--- /dev/null
@@ -0,0 +1,215 @@
+
+/*
+ * Secure OLSR plugin
+ * http://www.olsr.org
+ *
+ * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
+ * 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 olsrd, olsr.org 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.
+ *
+ * $Id: secure_messages.h,v 1.1 2005/05/29 12:47:44 br1 Exp $
+ */
+
+
+/*
+ * olsr.org olsr daemon security plugin
+ */
+
+#ifndef _OLSRD_SECURE_MSG
+#define _OLSRD_SECURE_MSG
+
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <sys/time.h>
+#include <time.h>
+#include <math.h>
+#include <stdio.h>
+
+#include "olsr_types.h"
+#include "interfaces.h"
+
+/* The type of message you will use */
+#define MESSAGE_TYPE 10
+
+/* The type of messages we will receive - can be set to promiscuous */
+#define PARSER_TYPE MESSAGE_TYPE
+
+#define TYPE_CHALLENGE 11
+#define TYPE_CRESPONSE 12
+#define TYPE_RRESPONSE 13
+
+
+char keyfile[FILENAME_MAX];
+
+
+#ifdef USE_OPENSSL
+#define SIGSIZE   20
+#else
+#define SIGSIZE   16
+#endif
+
+/****************************************************************************
+ *                            PACKET SECTION                                *
+ ****************************************************************************/
+
+struct sig_msg
+{
+  olsr_u8_t     type;
+  olsr_u8_t     algorithm;
+  olsr_u16_t    reserved;
+
+  time_t        timestamp;
+  char          signature[SIGSIZE];
+};
+
+/*
+ * OLSR message (several can exist in one OLSR packet)
+ */
+
+struct s_olsrmsg
+{
+  olsr_u8_t     olsr_msgtype;
+  olsr_u8_t     olsr_vtime;
+  olsr_u16_t    olsr_msgsize;
+  olsr_u32_t    originator;
+  olsr_u8_t     ttl;
+  olsr_u8_t     hopcnt;
+  olsr_u16_t    seqno;
+
+  /* YOUR PACKET GOES HERE */
+  struct sig_msg sig;
+
+};
+
+
+/*
+ * Challenge response messages
+ */
+
+struct challengemsg
+{
+  olsr_u8_t     olsr_msgtype;
+  olsr_u8_t     olsr_vtime;
+  olsr_u16_t    olsr_msgsize;
+  olsr_u32_t    originator;
+  olsr_u8_t     ttl;
+  olsr_u8_t     hopcnt;
+  olsr_u16_t    seqno;
+
+  olsr_u32_t    destination;
+  olsr_u32_t    challenge;
+
+  char          signature[SIGSIZE];
+
+};
+
+
+
+struct c_respmsg
+{
+  olsr_u8_t     olsr_msgtype;
+  olsr_u8_t     olsr_vtime;
+  olsr_u16_t    olsr_msgsize;
+  olsr_u32_t    originator;
+  olsr_u8_t     ttl;
+  olsr_u8_t     hopcnt;
+  olsr_u16_t    seqno;
+
+  olsr_u32_t    destination;
+  olsr_u32_t    challenge;
+  time_t        timestamp;
+
+  char          res_sig[SIGSIZE];
+
+  char          signature[SIGSIZE];
+
+};
+
+
+struct r_respmsg
+{
+  olsr_u8_t     olsr_msgtype;
+  olsr_u8_t     olsr_vtime;
+  olsr_u16_t    olsr_msgsize;
+  olsr_u32_t    originator;
+  olsr_u8_t     ttl;
+  olsr_u8_t     hopcnt;
+  olsr_u16_t    seqno;
+
+  olsr_u32_t    destination;
+  time_t        timestamp;
+
+  char          res_sig[SIGSIZE];
+
+  char          signature[SIGSIZE];
+};
+
+
+/*
+ *IPv6
+ */
+
+struct s_olsrmsg6
+{
+  olsr_u8_t        olsr_msgtype;
+  olsr_u8_t        olsr_vtime;
+  olsr_u16_t       olsr_msgsize;
+  struct in6_addr  originator;
+  olsr_u8_t        ttl;
+  olsr_u8_t        hopcnt;
+  olsr_u16_t       seqno;
+
+  /* YOUR PACKET GOES HERE */
+  struct sig_msg   sig;
+};
+
+/*
+ * Generic OLSR packet - DO NOT ALTER
+ */
+
+struct s_olsr 
+{
+  olsr_u16_t     olsr_packlen;         /* packet length */
+  olsr_u16_t     olsr_seqno;
+  struct s_olsrmsg  olsr_msg[1];          /* variable messages */
+};
+
+
+struct s_olsr6
+{
+  olsr_u16_t       olsr_packlen;        /* packet length */
+  olsr_u16_t       olsr_seqno;
+  struct s_olsrmsg6   olsr_msg[1];         /* variable messages */
+};
+
+
+#endif
index 81f3f8e..3d09da3 100644 (file)
@@ -1,10 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
index ab03c50..86ca957 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: http.c,v 1.3 2005/04/13 22:10:22 tlopatic Exp $
+ * $Id: http.c,v 1.4 2005/05/29 12:47:44 br1 Exp $
  */
 
 #include "link.h"
@@ -382,7 +382,7 @@ static struct sessInfo *newSessInfo(void)
   info->id = sessId++;
   info->data = NULL;
 
-  now(&info->time);
+  os_now(&info->time);
 
   debug(DEBUG_SESSION, "new session, id = %u\n", info->id);
 
@@ -1603,7 +1603,7 @@ static int serviceConn(struct connInfo *info)
 
         currSess = sess[i];
 
-        now(&currSess->time);
+        os_now(&currSess->time);
       }
     }
 
@@ -1868,7 +1868,7 @@ void httpAddTasMessage(const char *service, const char *string,
 
   msg->next = NULL;
 
-  now(&msg->time);
+  os_now(&msg->time);
 
   msg->service = myStrdup(service);
   msg->string = myStrdup(string);
index 722744b..701fdbb 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: os_unix.c,v 1.2 2005/04/13 22:10:23 tlopatic Exp $
+ * $Id: os_unix.c,v 1.3 2005/05/29 12:47:44 br1 Exp $
  */
 
 #if defined linux
@@ -81,7 +81,7 @@ int addrLen(int family)
     sizeof (struct in6_addr);
 }
 
-void now(struct timeStamp *timeStamp)
+void os_now(struct timeStamp *timeStamp)
 {
   time((time_t *)&timeStamp->time);
 }
index 04a8d91..a82b2c2 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: os_unix.h,v 1.2 2005/04/13 22:10:23 tlopatic Exp $
+ * $Id: os_unix.h,v 1.3 2005/05/29 12:47:44 br1 Exp $
  */
 
 #if defined linux
@@ -70,7 +70,7 @@ extern void getRandomBytes(unsigned char *buff, int len);
 
 extern int addrLen(int family);
 
-extern void now(struct timeStamp *timeStamp);
+extern void os_now(struct timeStamp *timeStamp);
 extern int timedOut(struct timeStamp *timeStamp, int sec);
 
 extern unsigned int getMicro(void);
index 13c1023..4702f68 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: plugin.c,v 1.4 2005/04/13 22:53:13 tlopatic Exp $
+ * $Id: plugin.c,v 1.5 2005/05/29 12:47:44 br1 Exp $
  */
 
 #include <string.h>
 #include "glua.h"
 #include "glua_ext.h"
 
-#include <olsr_plugin_io.h>
-#include <plugin_loader.h>
+#include <defs.h>
+#include <olsr.h>
+#include <scheduler.h>
+#include <parser.h>
 #include <link_set.h>
 #include <neighbor_table.h>
 #include <two_hop_neighbor_table.h>
 #include <routing_table.h>
 #include <olsr_protocol.h>
 #include <lq_route.h>
+#include <mpr_selector_set.h>
+#include <duplicate_set.h>
 
 #define MESSAGE_TYPE 129
 
-int get_plugin_interface_version(void);
-int plugin_io(int cmd, void *data, int len);
-int register_olsr_data(struct olsr_plugin_data *data);
-int register_olsr_param(char *name, char *value);
+int olsrd_plugin_interface_version(void);
+int olsrd_plugin_register_param(char *name, char *value);
+int olsrd_plugin_init(void);
 
 static int ipAddrLen;
 static union olsr_ip_addr *mainAddr;
@@ -81,26 +84,6 @@ static struct hna_entry *hnaTab = NULL;
 static struct rt_entry *routeTab = NULL;
 static struct olsrd_config *config = NULL;
 
-static int (*pluginIo)(int which, void *data, int len);
-
-static int (*regTimeout)(void (*timeoutFunc)(void));
-static int (*regParser)(void (*parserFunc)(unsigned char *mess,
-                                           struct interface *inInt,
-                                           union olsr_ip_addr *neighIntAddr),
-                        int type, int forward);
-static int (*checkLink)(union olsr_ip_addr *neighIntAddr);
-static int (*checkDup)(union olsr_ip_addr *origAddr, unsigned short seqNo);
-static int (*forward)(unsigned char *mess, union olsr_ip_addr *origAddr,
-                      unsigned short seqNo, struct interface *inInt,
-                      union olsr_ip_addr *neighIntAddr);
-
-static unsigned short (*getSeqNo)(void);
-static int (*netPush)(struct interface *outInt, void *mess,
-                      unsigned short size);
-static int (*netOutput)(struct interface *outInt);
-
-static void *(*lookupMprs)(union olsr_ip_addr *neighAddr);
-
 static int iterIndex;
 static struct interface *iterIntTab = NULL;
 static struct link_entry *iterLinkTab = NULL;
@@ -148,13 +131,7 @@ int iterLinkTabNext(char *buff, int len)
 
 void iterLinkTabInit(void)
 {
-  if (pluginIo == NULL)
-  {
-    iterLinkTab = NULL;
-    return;
-  }
-
-  pluginIo(GETD__LINK_SET, &iterLinkTab, sizeof (iterLinkTab));
+  iterLinkTab = get_link_set();
 }
 
 int iterNeighTabNext(char *buff, int len)
@@ -171,7 +148,7 @@ int iterNeighTabNext(char *buff, int len)
                  rawIpAddrToString(&iterNeighTab->neighbor_main_addr, ipAddrLen),
                  iterNeighTab->status == SYM ? "true" : "false",
                  iterNeighTab->is_mpr != 0 ? "true" : "false",
-                 lookupMprs(&iterNeighTab->neighbor_main_addr) != NULL ?
+                 olsr_lookup_mprs_set(&iterNeighTab->neighbor_main_addr) != NULL ?
                  "true" : "false",
                  iterNeighTab->willingness);
 
@@ -361,7 +338,7 @@ static void parserFunc(unsigned char *mess, struct interface *inInt,
   if (memcmp(orig, mainAddr, ipAddrLen) == 0)
     return;
 
-  if (checkLink(neighIntAddr) != SYM_LINK)
+  if (check_neighbor_link(neighIntAddr) != SYM_LINK)
   {
     error("TAS message not from symmetric neighbour\n");
     return;
@@ -373,7 +350,7 @@ static void parserFunc(unsigned char *mess, struct interface *inInt,
     return;
   }
 
-  if (checkDup(orig, seqNo) != 0)
+  if (olsr_check_dup_table_proc(orig, seqNo) != 0)
   {
     len -= ipAddrLen + 8;
     service = mess + ipAddrLen + 8;
@@ -406,7 +383,7 @@ static void parserFunc(unsigned char *mess, struct interface *inInt,
     httpAddTasMessage(service, string, rawIpAddrToString(orig, ipAddrLen));
   }
 
-  forward(mess, orig, seqNo, inInt, neighIntAddr);
+  olsr_forward_message((union olsr_message *)mess, orig, seqNo, inInt, neighIntAddr);
 }
 
 void sendMessage(const char *service, const char *string)
@@ -424,7 +401,7 @@ void sendMessage(const char *service, const char *string)
 
   walker = mess = allocMem(len);
 
-  seqNo = getSeqNo();
+  seqNo = get_msg_seqno();
 
   *walker++ = MESSAGE_TYPE;
   *walker++ = 0;
@@ -454,10 +431,10 @@ void sendMessage(const char *service, const char *string)
 
   for (inter = intTab; inter != NULL; inter = inter->int_next)
   {
-    if (netPush(inter, mess, len) != len)
+    if (net_outbuffer_push(inter, mess, len) != len)
     {
-      netOutput(inter);
-      netPush(inter, mess, len);
+      net_output(inter);
+      net_outbuffer_push(inter, mess, len);
     }
   }
 }
@@ -478,53 +455,33 @@ static void serviceFunc(void)
     httpService((int)(1.0 / config->pollrate));
 }
 
-int get_plugin_interface_version(void)
-{
-  httpInit();
-
-  return 3;
-}
-
-int plugin_io(int cmd, void *data, int len)
+int olsrd_plugin_interface_version(void)
 {
-  return 0;
+  return 4;
 }
 
-int register_olsr_data(struct olsr_plugin_data *data)
+int olsrd_plugin_init()
 {
-  ipAddrLen = addrLen(data->ipversion);
-  mainAddr = data->main_addr;
-
-  pluginIo = (int (*)(int, void *, int))data->olsr_plugin_io;
+  ipAddrLen = ipsize;
+  mainAddr = &main_addr;
 
-  pluginIo(GETD__IFNET, &intTab, sizeof (intTab));
-  pluginIo(GETD__NEIGHBORTABLE, &neighTab, sizeof (neighTab));
-  pluginIo(GETD__MID_SET, &midTab, sizeof (midTab));
-  pluginIo(GETD__TC_TABLE, &tcTab, sizeof (tcTab));
-  pluginIo(GETD__HNA_SET, &hnaTab, sizeof (hnaTab));
-  pluginIo(GETD__ROUTINGTABLE, &routeTab, sizeof (routeTab));
-  pluginIo(GETD__OLSR_CNF, &config, sizeof (config));
+  intTab = ifnet;
+  neighTab = neighbortable;
+  midTab = mid_set;
+  tcTab = tc_table;
+  hnaTab = hna_set;
+  routeTab = routingtable;
+  config = olsr_cnf;
 
-  pluginIo(GETF__OLSR_REGISTER_TIMEOUT_FUNCTION, &regTimeout,
-           sizeof (regTimeout));
-  pluginIo(GETF__OLSR_PARSER_ADD_FUNCTION, &regParser, sizeof (regParser));
-  pluginIo(GETF__CHECK_NEIGHBOR_LINK, &checkLink, sizeof (checkLink));
-  pluginIo(GETF__OLSR_CHECK_DUP_TABLE_PROC, &checkDup, sizeof (checkDup));
-  pluginIo(GETF__OLSR_FORWARD_MESSAGE, &forward, sizeof (forward));
-
-  pluginIo(GETF__GET_MSG_SEQNO, &getSeqNo, sizeof (getSeqNo));
-  pluginIo(GETF__NET_OUTBUFFER_PUSH, &netPush, sizeof (netPush));
-  pluginIo(GETF__NET_OUTPUT, &netOutput, sizeof (netOutput));
-
-  pluginIo(GETF__OLSR_LOOKUP_MPRS_SET, &lookupMprs, sizeof (lookupMprs));
-
-  regTimeout(serviceFunc);
-  regParser(parserFunc, MESSAGE_TYPE, 1);
+  httpInit();
+  
+  olsr_register_timeout_function(serviceFunc);
+  olsr_parser_add_function(parserFunc, MESSAGE_TYPE, 1);
 
   return 0;
 }
 
-int register_olsr_param(char *name, char *value)
+int olsrd_plugin_register_param(char *name, char *value)
 {
   if (strcmp(name, "address") == 0)
   {
index f336fcf..3d09da3 100644 (file)
@@ -1,26 +1,9 @@
 VERS_1.0
 {
   global:
-    get_plugin_interface_version;
-    register_olsr_data;
-    plugin_io;
-    register_olsr_param;
-    httpInit;
-    httpSetAddress;
-    httpSetPort;
-    httpSetRootDir;
-    httpSetWorkDir;
-    httpSetIndexFile;
-    httpSetUser;
-    httpSetPassword;
-    httpSetSessTime;
-    httpSetPubDir;
-    httpSetQuantum;
-    httpSetMessTime;
-    httpSetMessLimit;
-    httpSetup;
-    httpService;
-    httpShutdown;
+    olsrd_plugin_interface_version;
+    olsrd_plugin_register_param;
+    olsrd_plugin_init;
 
   local:
     *;
index f3047ee..87454bc 100644 (file)
--- a/src/apm.h
+++ b/src/apm.h
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: apm.h,v 1.8 2005/04/07 18:22:43 kattemat Exp $
+ * $Id: apm.h,v 1.9 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -57,7 +57,6 @@ struct olsr_apm_info
   int battery_time_left; /* Time left in minutes */
 };
 
-#ifndef OLSR_PLUGIN
 
 int apm_init(void);
 
@@ -73,4 +72,3 @@ void apm_printinfo(struct olsr_apm_info *);
 int apm_read(struct olsr_apm_info *);
 
 #endif
-#endif
diff --git a/src/defs.c b/src/defs.c
new file mode 100644 (file)
index 0000000..1a94007
--- /dev/null
@@ -0,0 +1,46 @@
+#include "defs.h"
+
+FILE *debug_handle;
+
+struct olsrd_config *olsr_cnf;
+
+olsr_u16_t system_tick_divider;
+
+int exit_value;
+
+
+/* Timer data */
+clock_t now_times;              /* current idea of times(2) reported uptime */
+struct timeval now;            /* current idea of time */
+struct tm *nowtm;              /* current idea of time (in tm) */
+
+olsr_bool disp_pack_in;         /* display incoming packet content? */
+olsr_bool disp_pack_out;        /* display outgoing packet content? */
+
+olsr_bool del_gws;
+
+float will_int;
+float max_jitter;
+
+size_t ipsize;
+
+union olsr_ip_addr main_addr;
+
+int olsr_udp_port;
+
+int ioctl_s;
+
+#if defined __FreeBSD__ || defined __MacOSX__ || defined __NetBSD__ || defined __OpenBSD__
+int rts;
+#endif
+
+float max_tc_vtime;
+
+clock_t fwdtimer[MAX_IFS];     /* forwarding timer */
+
+int minsize;
+
+olsr_bool changes;                /* is set if changes occur in MPRS set */ 
+
+/* TC empty message sending */
+clock_t send_empty_tc;
index 8bde4a9..a7bd441 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: defs.h,v 1.48 2005/05/25 20:59:46 kattemat Exp $
+ * $Id: defs.h,v 1.49 2005/05/29 12:47:45 br1 Exp $
  */
 
-#ifndef OLSR_PLUGIN
 
 #ifndef _OLSR_DEFS
 #define _OLSR_DEFS
@@ -82,7 +81,7 @@
    OLSR_PRINTF(lvl, format, ##args);
 #endif
 
-FILE *debug_handle;
+extern FILE *debug_handle;
 
 #ifdef NODEBUG
 #define OLSR_PRINTF(lvl, format, args...) \
@@ -125,57 +124,57 @@ FILE *debug_handle;
  * Global olsrd configuragtion
  */
 
-struct olsrd_config *olsr_cnf;
+extern struct olsrd_config *olsr_cnf;
 
 /* Global tick resolution */
-olsr_u16_t system_tick_divider;
+extern olsr_u16_t system_tick_divider;
 
-int exit_value; /* Global return value for process termination */
+extern int exit_value; /* Global return value for process termination */
 
 
 /* Timer data */
-clock_t now_times;              /* current idea of times(2) reported uptime */
-struct timeval now;            /* current idea of time */
-struct tm *nowtm;              /* current idea of time (in tm) */
+extern clock_t now_times;              /* current idea of times(2) reported uptime */
+extern struct timeval now;             /* current idea of time */
+extern struct tm *nowtm;               /* current idea of time (in tm) */
 
-olsr_bool disp_pack_in;         /* display incoming packet content? */
-olsr_bool disp_pack_out;        /* display outgoing packet content? */
+extern olsr_bool disp_pack_in;         /* display incoming packet content? */
+extern olsr_bool disp_pack_out;        /* display outgoing packet content? */
 
-olsr_bool del_gws;
+extern olsr_bool del_gws;
 
 /*
  * Timer values
  */
 
-float will_int;
-float max_jitter;
+extern float will_int;
+extern float max_jitter;
 
-size_t ipsize;
+extern size_t ipsize;
 
 /* Main address of this node */
-union olsr_ip_addr main_addr;
+extern union olsr_ip_addr main_addr;
 
 /* OLSR UPD port */
-int olsr_udp_port;
+extern int olsr_udp_port;
 
 /* The socket used for all ioctls */
-int ioctl_s;
+extern int ioctl_s;
 
 /* routing socket */
 #if defined __FreeBSD__ || defined __MacOSX__ || defined __NetBSD__ || defined __OpenBSD__
-int rts;
+extern int rts;
 #endif
 
-float max_tc_vtime;
+extern float max_tc_vtime;
 
-clock_t fwdtimer[MAX_IFS];     /* forwarding timer */
+extern clock_t fwdtimer[MAX_IFS];      /* forwarding timer */
 
-int minsize;
+extern int minsize;
 
-olsr_bool changes;                /* is set if changes occur in MPRS set */ 
+extern olsr_bool changes;                /* is set if changes occur in MPRS set */ 
 
 /* TC empty message sending */
-clock_t send_empty_tc;
+extern clock_t send_empty_tc;
 
 /*
  *IPC functions
@@ -201,7 +200,4 @@ ipc_send_net_info(void);
 int
 ipc_route_send_rtentry(union olsr_ip_addr*, union olsr_ip_addr *, int, int, char *);
 
-
-
-#endif
 #endif
index c3c21a9..06aa20f 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: hna_set.c,v 1.16 2005/02/27 10:43:38 kattemat Exp $
+ * $Id: hna_set.c,v 1.17 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include "defs.h"
 #include "scheduler.h"
 
 
+struct hna_entry hna_set[HASHSIZE];
+size_t netmask_size;
+
+
 /**
  *Initialize the HNA set
  */
index bfd5774..c9ab23b 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: hna_set.h,v 1.13 2005/02/20 17:34:10 kattemat Exp $
+ * $Id: hna_set.h,v 1.14 2005/05/29 12:47:45 br1 Exp $
  */
 
 
-
 #ifndef _OLSR_HNA
 #define _OLSR_HNA
 
@@ -66,10 +65,10 @@ struct hna_entry
   struct hna_entry   *prev;
 };
 
-#ifndef OLSR_PLUGIN
 
-struct hna_entry hna_set[HASHSIZE];
-size_t netmask_size;
+extern struct hna_entry hna_set[HASHSIZE];
+extern size_t netmask_size;
+
 
 int
 olsr_init_hna_set(void);
@@ -95,6 +94,4 @@ olsr_time_out_hna_set(void *);
 void
 olsr_print_hna_set(void);
 
-
-#endif
 #endif
index 2dda462..7e80164 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: interfaces.c,v 1.24 2005/05/25 14:32:52 br1 Exp $
+ * $Id: interfaces.c,v 1.25 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include "defs.h"
 #include "scheduler.h"
 #include "olsr.h"
 
+
 static olsr_u32_t if_property_id;
 
+/* The interface linked-list */
+struct interface *ifnet;
+
+/* Datastructures to use when creating new sockets */
+struct sockaddr_in addrsock;
+struct sockaddr_in6 addrsock6;
+
+
 /* Ifchange functions */
 struct ifchgf
 {
index f1c464a..aa2878d 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: interfaces.h,v 1.27 2005/05/23 14:12:57 kattemat Exp $
+ * $Id: interfaces.h,v 1.28 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -142,8 +142,6 @@ struct interface
 
 #define OLSR_DEFAULT_MTU             1500
 
-#ifndef OLSR_PLUGIN
-
 /* Ifchange actions */
 
 #define IFCHG_IF_ADD           1
@@ -153,12 +151,14 @@ struct interface
 /* The rate to poll for interface changes at */
 #define IFCHANGES_POLL_INT     2.5
 
+
 /* The interface linked-list */
-struct interface *ifnet;
+extern struct interface *ifnet;
 
 /* Datastructures to use when creating new sockets */
-struct sockaddr_in addrsock;
-struct sockaddr_in6 addrsock6;
+extern struct sockaddr_in addrsock;
+extern struct sockaddr_in6 addrsock6;
+
 
 int
 ifinit(void);
@@ -197,4 +197,3 @@ int
 del_ifchgf(int (*f)(struct interface *, int));
 
 #endif
-#endif
index 063fa2c..ecdd11f 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: link_set.c,v 1.58 2005/05/23 17:43:01 kattemat Exp $
+ * $Id: link_set.c,v 1.59 2005/05/29 12:47:45 br1 Exp $
  */
 
 
 #include "scheduler.h"
 #include "lq_route.h"
 
+
 static clock_t hold_time_neighbor;
 
-static struct link_entry *link_set;
+struct link_entry *link_set;
+
 
 static int
 check_link_status(struct hello_message *message, struct interface *in_if);
index 2db7b82..b1313bd 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: link_set.h,v 1.26 2005/05/23 17:43:01 kattemat Exp $
+ * $Id: link_set.h,v 1.27 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -47,9 +47,7 @@
 #ifndef _LINK_SET_H
 #define _LINK_SET_H
 
-#ifndef OLSR_PLUGIN
 #include "packet.h"
-#endif
 
 #define MID_ALIAS_HACK_VTIME  10.0
 
@@ -103,7 +101,10 @@ struct link_entry
   struct link_entry *next;
 };
 
-#ifndef OLSR_PLUGIN
+
+extern struct link_entry *link_set;
+
+
 /* Function prototypes */
 
 struct link_entry *
@@ -142,6 +143,5 @@ olsr_update_packet_loss(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u16_t);
 
 void 
 olsr_print_link_set(void);
-#endif
 
 #endif
index 0f0b3c9..45469e2 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: mantissa.h,v 1.8 2005/05/25 13:36:26 kattemat Exp $
+ * $Id: mantissa.h,v 1.9 2005/05/29 12:47:45 br1 Exp $
  */
 
 
 #define ME_TO_DOUBLE(me) \
   (double)(VTIME_SCALE_FACTOR*(1+(double)(me>>4)/16)*(double)(1<<(me&0x0F)))
 
-#ifndef OLSR_PLUGIN
-
 olsr_u8_t
 double_to_me(double);
 
 #endif
-#endif
index bfd9380..4dd6d5c 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: mid_set.c,v 1.14 2005/02/26 23:01:41 kattemat Exp $
+ * $Id: mid_set.c,v 1.15 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include "defs.h"
 #include "neighbor_table.h"
 #include "link_set.h"
 
+
+struct mid_entry mid_set[HASHSIZE];
+struct mid_address reverse_mid_set[HASHSIZE];
+
+
 /**
  * Initialize the MID set
  *
index 5868c23..e9eef17 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: mid_set.h,v 1.12 2005/02/20 18:52:18 kattemat Exp $
+ * $Id: mid_set.h,v 1.13 2005/05/29 12:47:45 br1 Exp $
  */
 
 
-
 #ifndef _OLSR_MID
 #define _OLSR_MID
 
@@ -71,10 +70,9 @@ struct mid_entry
 };
 
 
-#ifndef OLSR_PLUGIN
+extern struct mid_entry mid_set[HASHSIZE];
+extern struct mid_address reverse_mid_set[HASHSIZE];
 
-struct mid_entry mid_set[HASHSIZE];
-struct mid_address reverse_mid_set[HASHSIZE];
 
 int
 olsr_init_mid_set(void);
@@ -104,4 +102,3 @@ int
 mid_delete_node(struct mid_entry *);
 
 #endif
-#endif
index e66f7d7..6d5fde5 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: mpr_selector_set.h,v 1.11 2005/03/06 19:33:35 kattemat Exp $
+ * $Id: mpr_selector_set.h,v 1.12 2005/05/29 12:47:45 br1 Exp $
  */
 
 
-
 #ifndef _OLSR_MPRS_SET
 #define _OLSR_MPRS_SET
 
 
-
 struct mpr_selector
 {
   union olsr_ip_addr  MS_main_addr;
@@ -55,8 +53,6 @@ struct mpr_selector
 };
 
 
-#ifndef OLSR_PLUGIN
-
 olsr_u16_t
 get_local_ansn(void);
 
@@ -87,4 +83,3 @@ void
 olsr_print_mprs_set(void);
 
 #endif
-#endif
index 77af97d..b60b5ba 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: neighbor_table.c,v 1.27 2005/02/26 23:01:41 kattemat Exp $
+ * $Id: neighbor_table.c,v 1.28 2005/05/29 12:47:45 br1 Exp $
  */
 
 
 #include "link_set.h"
 #include "mpr_selector_set.h"
 
+
+struct neighbor_entry neighbortable[HASHSIZE];
+
+
 void
 olsr_init_neighbor_table()
 {
index 725ae83..c6d1165 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: neighbor_table.h,v 1.13 2005/02/20 18:52:18 kattemat Exp $
+ * $Id: neighbor_table.h,v 1.14 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -73,13 +73,11 @@ struct neighbor_entry
 };
 
 
-#ifndef OLSR_PLUGIN
-
 /*
  * The neighbor table
  */
+extern struct neighbor_entry neighbortable[HASHSIZE];
 
-struct neighbor_entry neighbortable[HASHSIZE];
 
 void
 olsr_init_neighbor_table(void);
@@ -116,4 +114,3 @@ int
 update_neighbor_status(struct neighbor_entry *, int);
 
 #endif
-#endif
index dca3fa1..fff2e66 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsr.c,v 1.45 2005/05/28 14:01:59 kattemat Exp $
+ * $Id: olsr.c,v 1.46 2005/05/29 12:47:45 br1 Exp $
  */
 
 /**
 #include <signal.h>
 
 
+olsr_bool changes_topology;
+olsr_bool changes_neighborhood;
+olsr_bool changes_hna;
+
+
 /**
  * Process changes functions
  */
index e419bb6..cabd047 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: olsr.h,v 1.23 2005/05/28 14:01:59 kattemat Exp $
+ * $Id: olsr.h,v 1.24 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -46,9 +46,9 @@
 #include "olsr_protocol.h"
 #include "interfaces.h"
 
-olsr_bool changes_topology;
-olsr_bool changes_neighborhood;
-olsr_bool changes_hna;
+extern olsr_bool changes_topology;
+extern olsr_bool changes_neighborhood;
+extern olsr_bool changes_hna;
 
 void
 register_pcf(int (*)(int, int, int));
diff --git a/src/olsr_plugin_io.h b/src/olsr_plugin_io.h
deleted file mode 100644 (file)
index 119ca15..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
- * 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.
- *
- * $Id: olsr_plugin_io.h,v 1.16 2005/05/25 13:37:33 kattemat Exp $
- */
-
-
-/*
- * REVISIONS(starting from 0.4.6):
- * 0.4.5 - 0.4.6 : GETD_S removed. The socket entries now reside within the 
- *                 interface struct.
- *                 Added GETF__ADD_IFCHGF and GETF__DEL_IFCHGF.
- *                 - Andreas
- *         0.4.8 : GETF__APM_READ added
- *                 GETD__OLSR_CNF added
- *                 GETD_PACKET removed
- *                 GETD_MAXMESSAGESIZE removed
- *                 GETD_OUTPUTSIZE removed
- *                 GETF__NET_OUTBUFFER_PUSH added
- *                 GETD__ROUTINGTABLE added
- *                 GETD__HNA_ROUTES added
- *                 GETD__MID_SET added
- *                 GETF__NET_RESERVE_BUFSPACE added 
- *                 GETF__NET_OUTBUFFER_PUSH_RESERVED added
- *                 - Andreas
- *         0.4.9 : GETD__LINK_SET added
- *                 GETF__OLSR_LOOKUP_MPRS_SET added
- *                 - Andreas
- *         0.4.10: GETF__ME_TO_DOUBLE removed
- *                 - Andreas
- */
-
-/*
- * IO commands
- *
- * NAMING CONVENTION:
- * - DATAPOINTERS
- *   Commands to get datapointers MUST have the prefix
- *   GETD__ added to the full name of the variable/pointer
- *   in all upper cases.
- *   Example: A command to get a pointer to a variable called
- *   "myvar" in olsrd must be called GETD__MYVAR
- *
- * - FUNCTIONS
- *   Commands to get pointers to olsrd functions MUST have
- *   the prefix GETF__ added to the full name of the runction
- *   in uppercases.
- *   Example: A command to get a pointer to the function
- *   "my_function" must be named GETF__MY_FUNCTION
- *
- *
- *   New commands can be added - BUT EXISTING COMMANDS MUST
- *   _NEVER_ CHANGE VALUE!
- */
-
-#ifndef _OLSR_PLUGIN_IO
-#define _OLSR_PLUGIN_IO
-
-/* Data fetching - starts at 100 (used to anyway) */
-#define GETD__IFNET                                102
-#define GETD__NOW                                  103
-#define GETD__PARSER_ENTRIES                       104
-#define GETD__OLSR_SOCKET_ENTRIES                  105
-#define GETD__NEIGHBORTABLE                        108
-#define GETD__TWO_HOP_NEIGHBORTABLE                109
-#define GETD__TC_TABLE                             110
-#define GETD__HNA_SET                              111
-#define GETD__OLSR_CNF                             112
-#define GETD__ROUTINGTABLE                         113
-#define GETD__HNA_ROUTES                           114
-#define GETD__MID_SET                              115
-#define GETD__LINK_SET                             116
-
-
-/* Function fetching - starts at 500 */
-#define GETF__OLSR_REGISTER_SCHEDULER_EVENT        500
-#define GETF__OLSR_REMOVE_SCHEDULER_EVENT          501
-#define GETF__OLSR_PARSER_ADD_FUNCTION             502
-#define GETF__OLSR_PARSER_REMOVE_FUNCTION          503
-#define GETF__OLSR_REGISTER_TIMEOUT_FUNCTION       504
-#define GETF__OLSR_REMOVE_TIMEOUT_FUNCTION         505
-#define GETF__GET_MSG_SEQNO                        506
-#define GETF__OLSR_CHECK_DUP_TABLE_PROC            507
-#define GETF__NET_OUTPUT                           508
-#define GETF__OLSR_FORWARD_MESSAGE                 509
-#define GETF__ADD_OLSR_SOCKET                      510
-#define GETF__REMOVE_OLSR_SOCKET                   511
-#define GETF__CHECK_NEIGHBOR_LINK                  512
-#define GETF__OLSR_PRINTF                          513
-#define GETF__OLSR_MALLOC                          514
-#define GETF__DOUBLE_TO_ME                         515
-#define GETF__ADD_LOCAL_HNA4_ENTRY                 517
-#define GETF__REMOVE_LOCAL_HNA4_ENTRY              518
-#define GETF__ADD_LOCAL_HNA6_ENTRY                 519
-#define GETF__REMOVE_LOCAL_HNA6_ENTRY              520
-#define GETF__OLSR_INPUT                           521
-#define GETF__ADD_PTF                              522
-#define GETF__DEL_PTF                              523
-#define GETF__IF_IFWITHSOCK                        524
-#define GETF__IF_IFWITHADDR                        525
-#define GETF__PARSE_PACKET                         526
-#define GETF__REGISTER_PCF                         527
-#define GETF__OLSR_HASHING                         528
-#define GETF__ADD_IFCHGF                           529
-#define GETF__DEL_IFCHGF                           530
-#define GETF__APM_READ                             531
-#define GETF__NET_OUTBUFFER_PUSH                   532
-#define GETF__NET_RESERVE_BUFSPACE                 533
-#define GETF__NET_OUTBUFFER_PUSH_RESERVED          534
-#define GETF__OLSR_LOOKUP_MPRS_SET                 535
-
-#endif
similarity index 78%
rename from lib/mini/src/olsrd_plugin.h
rename to src/olsrd_plugin.h
index e097bc0..3710a80 100644 (file)
  *
  */
 
-/* $Id: olsrd_plugin.h,v 1.1 2005/05/26 16:09:25 br1 Exp $ */
+/* $Id: olsrd_plugin.h,v 1.1 2005/05/29 12:47:45 br1 Exp $ */
 
 /*
  * Example plugin for olsrd.org OLSR daemon
  * Only the bare minimum
  */
 
-#ifndef _OLSRD_PLUGIN_MINI
-#define _OLSRD_PLUGIN_MINI
+#ifndef _OLSRD_PLUGIN
+#define _OLSRD_PLUGIN
 
 
 /* Interface version 4 is new direct access to main functions */
-#define PLUGIN_INTERFACE_VERSION 4
+#define OLSRD_PLUGIN_INTERFACE_VERSION 4
 
 
 /****************************************************************************
@@ -53,7 +53,7 @@
  * Used by main olsrd to check plugin interface version
  */
 int 
-get_plugin_interface_version(void);
+olsrd_plugin_interface_version(void);
 
 
 /**
@@ -61,7 +61,7 @@ get_plugin_interface_version(void);
  * Called for all plugin parameters
  */
 int
-register_olsr_param(char *key, char *value);
+olsrd_plugin_register_param(char *key, char *value);
 
 
 /**
@@ -69,20 +69,7 @@ register_olsr_param(char *key, char *value);
  * Called after all parameters are passed
  */
 int
-plugin_init(void);
-
-
-/****************************************************************************
- *       Optional private constructor and destructor functions              *
- ****************************************************************************/
-
-/* attention: make static to avoid name clashes */
-
-static void __attribute__ ((constructor))
-my_init(void);
-
-static void __attribute__ ((destructor)) 
-my_fini(void);
+olsrd_plugin_init(void);
 
 
 #endif
index 2678bfb..67e326e 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: packet.h,v 1.16 2005/02/20 17:34:10 kattemat Exp $
+ * $Id: packet.h,v 1.17 2005/05/29 12:47:45 br1 Exp $
  */
 
-#ifndef OLSR_PLUGIN
 #ifndef _OLSR_PACKET
 #define _OLSR_PACKET
 
@@ -172,4 +171,3 @@ void
 olsr_free_hna_packet(struct hna_message *);
 
 #endif
-#endif
index 9772cbc..3b67034 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: parser.c,v 1.23 2005/05/26 09:55:11 kattemat Exp $
+ * $Id: parser.c,v 1.24 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include "parser.h"
@@ -61,6 +61,8 @@
 #define strerror(x) StrError(x)
 #endif
 
+struct parse_function_entry *parse_functions;
+
 static char inbuf[MAXMESSAGESIZE+1];
 
 /**
index 0b2e04d..ca1f349 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: parser.h,v 1.8 2005/03/10 07:01:48 kattemat Exp $
+ * $Id: parser.h,v 1.9 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -57,7 +57,7 @@ struct parse_function_entry
 };
 
 
-struct parse_function_entry *parse_functions;
+extern struct parse_function_entry *parse_functions;
 
 void
 olsr_init_parser(void);
diff --git a/src/plugin.c b/src/plugin.c
deleted file mode 100644 (file)
index 815863e..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * The olsr.org Optimized Link-State Routing daemon(olsrd)
- * Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
- * 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.
- *
- * $Id: plugin.c,v 1.20 2005/05/25 13:36:59 kattemat Exp $
- */
-
-
-#include "olsr_plugin_io.h"
-#include <stdio.h>
-#include "olsr.h"
-#include "defs.h"
-#include "parser.h"
-#include "scheduler.h"
-#include "duplicate_set.h"
-#include "link_set.h"
-#include "mantissa.h"
-#include "local_hna_set.h"
-#include "socket_parser.h"
-#include "neighbor_table.h"
-#include "link_set.h"
-#include "two_hop_neighbor_table.h"
-#include "tc_set.h"
-#include "hna_set.h"
-#include "apm.h"
-#include "routing_table.h"
-#include "mid_set.h"
-#include "mpr_selector_set.h"
-#include "plugin_loader.h"
-
-/**
- * Multi-purpose function for plugins
- * Syntax much the same as the ioctl(2) call 
- *
- *@param cmd the command
- *@param data pointer to memory to put/get data
- *@param size size of the memory pointed to
- *
- *@return negative if unknown command
- */
-
-int
-olsr_plugin_io(int cmd, void *data, size_t size)
-{
-  void *ptr;
-
-  OLSR_PRINTF(3, "olsr_plugin_io(%d)\n", cmd)
-
-  switch(cmd)
-    {
-
-      /* Data fetching */
-    case(GETD__IFNET):
-      *((struct interface **)data) = ifnet;
-      break;
-    case(GETD__NOW):
-      *((struct timeval **)data) = &now;
-      break;
-    case(GETD__PARSER_ENTRIES):
-      *((struct parse_function_entry **)data) = parse_functions;
-      break;
-    case(GETD__OLSR_SOCKET_ENTRIES):
-      *((struct olsr_socket_entry **)data) = olsr_socket_entries;
-      break;
-    case(GETD__NEIGHBORTABLE):
-      *((struct neighbor_entry **)data) = neighbortable;
-      break;
-    case(GETD__TWO_HOP_NEIGHBORTABLE):
-      *((struct neighbor_2_entry **)data) = two_hop_neighbortable;
-      break;
-     case(GETD__TC_TABLE):
-      *((struct tc_entry **)data) = tc_table;
-      break;
-     case(GETD__HNA_SET):
-      *((struct hna_entry **)data) = hna_set;
-      break;
-     case(GETD__OLSR_CNF):
-      *((struct olsrd_config **)data) = olsr_cnf;
-      break;
-      case(GETD__ROUTINGTABLE):
-      *((struct rt_entry **)data) = routingtable;
-      break;
-      case(GETD__HNA_ROUTES):
-      *((struct rt_entry **)data) = hna_routes;
-      break; 
-     case(GETD__MID_SET):
-      *((struct mid_entry **)data) = mid_set;
-      break;
-     case(GETD__LINK_SET):
-      *((struct link_entry **)data) = get_link_set();
-      break;
-      
-      /* Function fetching */
-      
-    case(GETF__OLSR_PRINTF):
-      ptr = &olsr_printf;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_MALLOC):
-      ptr = &olsr_malloc;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__DOUBLE_TO_ME):
-      ptr = &double_to_me;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_REGISTER_SCHEDULER_EVENT):
-      ptr = &olsr_register_scheduler_event;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_REMOVE_SCHEDULER_EVENT):
-      ptr = &olsr_remove_scheduler_event;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_PARSER_ADD_FUNCTION):
-      ptr = &olsr_parser_add_function;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_PARSER_REMOVE_FUNCTION):
-      ptr = &olsr_parser_remove_function;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_REGISTER_TIMEOUT_FUNCTION):
-      ptr = &olsr_register_timeout_function;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_REMOVE_TIMEOUT_FUNCTION):
-      ptr = &olsr_remove_timeout_function;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__GET_MSG_SEQNO):
-      ptr = &get_msg_seqno;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_CHECK_DUP_TABLE_PROC):
-      ptr = &olsr_check_dup_table_proc;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__NET_OUTPUT):
-      ptr =  &net_output;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_FORWARD_MESSAGE):
-      ptr = &olsr_forward_message;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__ADD_OLSR_SOCKET):
-      ptr = &add_olsr_socket;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__REMOVE_OLSR_SOCKET):
-      ptr = &remove_olsr_socket;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__CHECK_NEIGHBOR_LINK):
-      ptr = &check_neighbor_link;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__ADD_LOCAL_HNA4_ENTRY):
-      ptr = &add_local_hna4_entry;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__REMOVE_LOCAL_HNA4_ENTRY):
-      ptr = &remove_local_hna4_entry;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__ADD_LOCAL_HNA6_ENTRY):
-      ptr = &add_local_hna6_entry;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__REMOVE_LOCAL_HNA6_ENTRY):
-      ptr = &remove_local_hna6_entry;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_INPUT):
-      ptr = &olsr_input;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__ADD_PTF):
-      ptr = &add_ptf;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__DEL_PTF):
-      ptr = &del_ptf;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__IF_IFWITHSOCK):
-      ptr = &if_ifwithsock;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__IF_IFWITHADDR):
-      ptr = &if_ifwithaddr;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__PARSE_PACKET):
-      ptr = &parse_packet;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__REGISTER_PCF):
-      ptr = &register_pcf;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__OLSR_HASHING):
-      ptr = &olsr_hashing;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__ADD_IFCHGF):
-      ptr = &add_ifchgf;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__DEL_IFCHGF):
-      ptr = &del_ifchgf;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__APM_READ):
-      ptr = &apm_read;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__NET_OUTBUFFER_PUSH):
-      ptr = &net_outbuffer_push;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__NET_RESERVE_BUFSPACE):
-      ptr = &net_reserve_bufspace;
-      memcpy(data, &ptr, size);
-      break;
-    case(GETF__NET_OUTBUFFER_PUSH_RESERVED):
-      ptr = &net_outbuffer_push_reserved;
-      memcpy(data, &ptr, size);
-      break;
-
-    case(GETF__OLSR_LOOKUP_MPRS_SET):
-      ptr = &olsr_lookup_mprs_set;
-      memcpy(data, &ptr, size);
-      break;
-
-    default:
-      return -1;
-    }
-
-  return 1;
-}
index e48ecce..4236d29 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: plugin_loader.c,v 1.22 2005/05/28 15:56:47 kattemat Exp $
+ * $Id: plugin_loader.c,v 1.23 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include "plugin_loader.h"
+#include "olsrd_plugin.h"
 #include "defs.h"
 #include "olsr.h"
 /* Local functions */
@@ -105,20 +106,28 @@ olsr_load_dl(char *libname, struct plugin_param *params)
       return -1;
     }
 
-  /* Fetch the interface version function */
+  /* Fetch the interface version function, 3 different ways */
   OLSR_PRINTF(1, "Checking plugin interface version... ")
-  if((get_interface_version = dlsym(new_entry.dlhandle, "get_plugin_interface_version")) == NULL)
+  if((get_interface_version = dlsym(new_entry.dlhandle, "olsrd_plugin_interface_version")) == NULL)
     {
-      OLSR_PRINTF(1, "trying v1 detection... ")
-      if((interface_version = dlsym(new_entry.dlhandle, "plugin_interface_version")) == NULL)
+      OLSR_PRINTF(1, "trying v2 detection... ")
+      if((get_interface_version = dlsym(new_entry.dlhandle, "get_plugin_interface_version")) == NULL)
         {
-          OLSR_PRINTF(1, "FAILED: \"%s\"\n", dlerror())
-          dlclose(new_entry.dlhandle);
-          return -1;
+          OLSR_PRINTF(1, "trying v1 detection... ")
+          if((interface_version = dlsym(new_entry.dlhandle, "plugin_interface_version")) == NULL)
+            {
+              OLSR_PRINTF(1, "FAILED: \"%s\"\n", dlerror())
+              dlclose(new_entry.dlhandle);
+              return -1;
+            }
+          else
+            {
+              new_entry.plugin_interface_version = *interface_version;
+            }
         }
       else
         {
-          new_entry.plugin_interface_version = *interface_version;
+          new_entry.plugin_interface_version = get_interface_version();
         }
     }
   else
@@ -130,42 +139,28 @@ olsr_load_dl(char *libname, struct plugin_param *params)
   if ( new_entry.plugin_interface_version < 4 ) 
     {
       /* old plugin interface */
+   
+      OLSR_PRINTF(1, "\nWARNING: YOU ARE USING AN OLD DEPRECATED PLUGIN INTERFACE! DETECTED VERSION %d CURRENT VERSION %d\nPLEASE UPGRADE YOUR PLUGIN!\nWILL CONTINUE IN 5 SECONDS...\n\n", new_entry.plugin_interface_version, OLSRD_PLUGIN_INTERFACE_VERSION)
       
-      OLSR_PRINTF(1, "\nWARNING: YOU ARE USING THE OLD PLUGIN INTERFACE! DETECTED %d CURRENT VERSION %d\nPLEASE CONSIDER CHANGING YOUR PLUGIN TO THE NEW VERSION!\nWILL CONTINUE IN 5 SECONDS...\n\n", get_interface_version(), PLUGIN_INTERFACE_VERSION)
       sleep(5);
-
-      OLSR_PRINTF(1, "Trying to fetch register function... ")
-      if((new_entry.register_olsr_data = dlsym(new_entry.dlhandle, "register_olsr_data")) == NULL)
-        {
-          /* This function must be present */
-          OLSR_PRINTF(1, "\nCould not find function registration function in plugin!\n%s\nCRITICAL ERROR - aborting!\n", dlerror())
-          dlclose(new_entry.dlhandle);
-          return -1;
-        }
-      OLSR_PRINTF(1, "OK\n")
-
-      /* Fetch the multipurpose function */
-      OLSR_PRINTF(1, "Trying to fetch plugin IO function... ")
-      if((new_entry.plugin_io = dlsym(new_entry.dlhandle, "plugin_io")) == NULL)
-        OLSR_PRINTF(1, "FAILED: \"%s\"\n", dlerror())
-      else
-        OLSR_PRINTF(1, "OK\n")
+      dlclose(new_entry.dlhandle);
+      return -1;
     }
   else
     {
       /* new plugin interface */
       
-      if ( new_entry.plugin_interface_version != PLUGIN_INTERFACE_VERSION ) 
+      if ( new_entry.plugin_interface_version != OLSRD_PLUGIN_INTERFACE_VERSION ) 
         {
-          OLSR_PRINTF(1, "\n\nWARNING: VERSION MISSMATCH! DETECTED %d CURRENT VERSION %d\nTHIS CAN CAUSE UNEXPECTED BEHAVIOUR AND CRASHES!\nWILL CONTINUE IN 5 SECONDS...\n\n", get_interface_version(), PLUGIN_INTERFACE_VERSION)
+          OLSR_PRINTF(1, "\n\nWARNING: VERSION MISSMATCH! DETECTED %d CURRENT VERSION %d\nTHIS CAN CAUSE UNEXPECTED BEHAVIOUR AND CRASHES!\nWILL CONTINUE IN 5 SECONDS...\n\n", get_interface_version(), OLSRD_PLUGIN_INTERFACE_VERSION)
           sleep(5);
         }
    
       /* Fetch the init function */
       OLSR_PRINTF(1, "Trying to fetch plugin init function... ")
-      if((new_entry.plugin_init = dlsym(new_entry.dlhandle, "plugin_init")) == NULL)
-       {
-         OLSR_PRINTF(1, "FAILED: \"%s\"\n", dlerror())
+      if((new_entry.plugin_init = dlsym(new_entry.dlhandle, "olsrd_plugin_init")) == NULL)
+        {
+          OLSR_PRINTF(1, "FAILED: \"%s\"\n", dlerror())
           dlclose(new_entry.dlhandle);
           return -1;
         }
@@ -177,7 +172,7 @@ olsr_load_dl(char *libname, struct plugin_param *params)
 
   /* Fetch the parameter function */
   OLSR_PRINTF(1, "Trying to fetch param function... ")
-  if((new_entry.register_param = dlsym(new_entry.dlhandle, "register_olsr_param")) == NULL)
+  if((new_entry.register_param = dlsym(new_entry.dlhandle, "olsrd_plugin_register_param")) == NULL)
     OLSR_PRINTF(1, "FAILED: \"%s\"\n", dlerror())
   else
     OLSR_PRINTF(1, "OK\n")
@@ -212,7 +207,6 @@ olsr_load_dl(char *libname, struct plugin_param *params)
 void
 init_olsr_plugin(struct olsr_plugin *entry)
 {
-  struct olsr_plugin_data plugin_data;
   struct plugin_param *params = entry->params;
   int retval;
 
@@ -232,26 +226,9 @@ init_olsr_plugin(struct olsr_plugin *entry)
           params = params->next;
         }
     }
-
-  if (entry->plugin_interface_version < 4) 
-    {
-      /* old plugin interface */
-      
-      OLSR_PRINTF(1, "Running registration function...\n")
-      /* Fill struct */
-      plugin_data.ipversion = olsr_cnf->ip_version;
-      plugin_data.main_addr = &main_addr;
-      plugin_data.olsr_plugin_io = &olsr_plugin_io;
-
-      /* Register data with plugin */
-      entry->register_olsr_data(&plugin_data);
-    }
-  else
-    {
-      /* new plugin interface */
-      OLSR_PRINTF(1, "Running plugin_init function...\n")
-      entry->plugin_init();
-    }
+    
+    OLSR_PRINTF(1, "Running plugin_init function...\n")
+    entry->plugin_init();
 }
 
 
index 66586a4..624ddb3 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: plugin_loader.h,v 1.14 2005/05/26 16:09:26 br1 Exp $
+ * $Id: plugin_loader.h,v 1.15 2005/05/29 12:47:45 br1 Exp $
  */
 
 #ifndef _OLSR_PLUGIN_LOADER
 #include "olsr_types.h"
 #include "olsr_cfg.h"
 
-/* Data to sent to the plugin with the register_olsr_function call */
-struct olsr_plugin_data
-{
-  int ipversion;
-  union olsr_ip_addr *main_addr;
-  int (*olsr_plugin_io)(int, void *, size_t);
-};
-
 #ifndef OLSR_PLUGIN
 
 #define MAX_LIBS 10
-#define PLUGIN_INTERFACE_VERSION 4
-
 
 struct olsr_plugin
 {
@@ -69,11 +59,6 @@ struct olsr_plugin
   struct plugin_param *params;
   int plugin_interface_version;
   
-  /* old interface (PLUGIN_INTERFACE_VERSION <= 3) */
-  int (*register_olsr_data)(struct olsr_plugin_data *);
-  int (*plugin_io)(int, void *, size_t); /* Multi - purpose function */
-
-  /* new interface (PLUGIN_INTERFACE_VERSION >= 4)*/
   int (*register_param)(char *, char *);
   int (*plugin_init)(void);
   
index b1d965b..105de81 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: process_routes.c,v 1.25 2005/05/23 17:27:41 kattemat Exp $
+ * $Id: process_routes.c,v 1.26 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -52,6 +52,9 @@
 #endif
 
 
+struct rt_entry old_routes[HASHSIZE];
+struct rt_entry old_hna[HASHSIZE];
+
 
 int
 olsr_init_old_table()
index 2906df3..beb7365 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: process_routes.h,v 1.8 2004/11/21 11:28:56 kattemat Exp $
+ * $Id: process_routes.h,v 1.9 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include "routing_table.h"
@@ -47,9 +47,8 @@
 
 #include <sys/ioctl.h>
 
-
-struct rt_entry old_routes[HASHSIZE];
-struct rt_entry old_hna[HASHSIZE];
+extern struct rt_entry old_routes[HASHSIZE];
+extern struct rt_entry old_hna[HASHSIZE];
 
 int
 olsr_init_old_table(void);
index 9a07857..7fddf88 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: routing_table.c,v 1.21 2005/05/19 20:26:22 kattemat Exp $
+ * $Id: routing_table.c,v 1.22 2005/05/29 12:47:45 br1 Exp $
  */
 
 
 #include "link_set.h"
 
 
+struct rt_entry routingtable[HASHSIZE];
+struct rt_entry hna_routes[HASHSIZE];
+
+
 /* Begin:
  * Prototypes for internal functions 
  */
index f143f93..c485fa3 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: routing_table.h,v 1.15 2005/04/20 17:52:12 br1 Exp $
+ * $Id: routing_table.h,v 1.16 2005/05/29 12:47:45 br1 Exp $
  */
 
 #ifndef _OLSR_ROUTING_TABLE
@@ -90,10 +90,8 @@ union olsr_kernel_route
 };
 
 
-#ifndef OLSR_PLUGIN
-
-struct rt_entry routingtable[HASHSIZE];
-struct rt_entry hna_routes[HASHSIZE];
+extern struct rt_entry routingtable[HASHSIZE];
+extern struct rt_entry hna_routes[HASHSIZE];
 
 
 int
@@ -118,4 +116,3 @@ void
 olsr_free_routing_table(struct rt_entry *);
 
 #endif
-#endif
index af5e506..5da6fed 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: socket_parser.c,v 1.22 2005/02/27 18:39:43 kattemat Exp $
+ * $Id: socket_parser.c,v 1.23 2005/05/29 12:47:45 br1 Exp $
  */
 
 #include <unistd.h>
@@ -56,6 +56,8 @@
 #endif
 
 
+struct olsr_socket_entry *olsr_socket_entries;
+
 static int hfd = 0;
 
 static struct timeval tvp = {0, 0};
index 7d62bc8..2ba78a2 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: socket_parser.h,v 1.9 2004/11/21 11:28:56 kattemat Exp $
+ * $Id: socket_parser.h,v 1.10 2005/05/29 12:47:45 br1 Exp $
  */
 
 
@@ -51,7 +51,8 @@ struct olsr_socket_entry
   struct olsr_socket_entry *next;
 };
 
-struct olsr_socket_entry *olsr_socket_entries;
+
+extern struct olsr_socket_entry *olsr_socket_entries;
 
 
 void
index 21415d4..bb61cd6 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: tc_set.c,v 1.21 2005/02/26 23:01:41 kattemat Exp $
+ * $Id: tc_set.c,v 1.22 2005/05/29 12:47:46 br1 Exp $
  */
 
 
 #include "scheduler.h"
 #include "lq_route.h"
 
+
+struct tc_entry tc_table[HASHSIZE];
+
+
 /**
  * Initialize the topology set
  *
index 483e749..0c16691 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: tc_set.h,v 1.14 2005/02/20 18:52:19 kattemat Exp $
+ * $Id: tc_set.h,v 1.15 2005/05/29 12:47:46 br1 Exp $
  */
 
 #ifndef _OLSR_TOP_SET
@@ -68,10 +68,9 @@ struct tc_entry
 };
 
 
-#ifndef OLSR_PLUGIN
-
 /* Queue */
-struct tc_entry tc_table[HASHSIZE];
+extern struct tc_entry tc_table[HASHSIZE];
+
 
 int
 olsr_init_tc(void);
@@ -107,4 +106,3 @@ void
 olsr_time_out_tc_set(void);
 
 #endif
-#endif
index a93a34b..4e6688c 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: two_hop_neighbor_table.c,v 1.15 2005/02/26 23:01:41 kattemat Exp $
+ * $Id: two_hop_neighbor_table.c,v 1.16 2005/05/29 12:47:46 br1 Exp $
  */
 
 
@@ -47,6 +47,9 @@
 #include "neighbor_table.h"
 
 
+struct neighbor_2_entry two_hop_neighbortable[HASHSIZE];
+
+
 /**
  *Initialize 2 hop neighbor table
  */
index 99f079a..deb046f 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: two_hop_neighbor_table.h,v 1.13 2005/02/19 17:43:28 kattemat Exp $
+ * $Id: two_hop_neighbor_table.h,v 1.14 2005/05/29 12:47:46 br1 Exp $
  */
 
 
@@ -71,9 +71,9 @@ struct neighbor_2_entry
   struct neighbor_2_entry    *next;
 };
 
-#ifndef OLSR_PLUGIN
 
-struct neighbor_2_entry two_hop_neighbortable[HASHSIZE];
+extern struct neighbor_2_entry two_hop_neighbortable[HASHSIZE];
+
 
 int
 olsr_init_two_hop_table(void);
@@ -97,4 +97,3 @@ void
 olsr_print_two_hop_neighbor_table(void);
 
 #endif
-#endif