* moved to plugin interface version 5
authorBernd Petrovitsch <bernd@firmix.at>
Sun, 15 Jul 2007 21:47:17 +0000 (21:47 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Sun, 15 Jul 2007 21:47:17 +0000 (21:47 +0000)
lib/secure/Makefile
lib/secure/src/olsrd_plugin.c
lib/secure/src/olsrd_secure.c
lib/secure/src/olsrd_secure.h
lib/secure/src/secure_messages.h
lib/secure/version-script.txt

index 8aeebd1..fdc9a04 100644 (file)
@@ -35,7 +35,7 @@
 # to the project. For more information see the website or contact
 # the copyright holders.
 #
-# $Id: Makefile,v 1.16 2005/05/25 13:50:22 br1 Exp $
+# $Id: Makefile,v 1.17 2007/07/15 21:47:17 bernd67 Exp $
 
 OLSRD_PLUGIN = true
 PLUGIN_NAME =  olsrd_secure
@@ -51,7 +51,7 @@ endif
 
 default_target: $(PLUGIN_FULLNAME)
 
-$(PLUGIN_FULLNAME): $(OBJS)
+$(PLUGIN_FULLNAME): $(OBJS) version-script.txt
                $(CC) $(LDFLAGS) -o $(PLUGIN_FULLNAME) $(OBJS) $(LIBS)
 
 install:       $(PLUGIN_FULLNAME)
index a4d37dd..ef846eb 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_plugin.c,v 1.12 2007/07/15 17:51:22 bernd67 Exp $
+ * $Id: olsrd_plugin.c,v 1.13 2007/07/15 21:47:17 bernd67 Exp $
  */
 
 
 #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 4
-
-
-static void __attribute__ ((constructor)) 
-my_init(void);
-
-static void __attribute__ ((destructor)) 
-my_fini(void);
+#define PLUGIN_INTERFACE_VERSION 5
 
+static void my_init(void) __attribute__ ((constructor));
+static void my_fini(void) __attribute__ ((destructor));
 
 /*
  * 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 
-olsrd_plugin_interface_version(void)
+int olsrd_plugin_interface_version(void)
 {
   return PLUGIN_INTERFACE_VERSION;
 }
@@ -73,8 +67,7 @@ olsrd_plugin_interface_version(void)
 /**
  *Constructor
  */
-static void
-my_init(void)
+static void my_init(void)
 {
   /* Print plugin info to stdout */
   /* We cannot use olsr_printf yet! */
@@ -85,8 +78,7 @@ my_init(void)
 /**
  *Destructor
  */
-static void
-my_fini(void)
+static void my_fini(void)
 {
 
   /* Calls the destruction function
@@ -98,21 +90,25 @@ my_fini(void)
   secure_plugin_exit();
 }
 
-
-int
-olsrd_plugin_register_param(char *key, char *value)
+static int store_string(const char *value, void *data)
 {
-  if(!strcmp(key, "Keyfile"))
-    {
-      strncpy(keyfile, value, FILENAME_MAX);
-    }
-
-  return 1;
+  char *str = data;
+  snprintf(str, FILENAME_MAX+1, "%s", value);
+  return 0;
 }
 
 
-int
-olsrd_plugin_init(void) {
+static const struct olsrd_plugin_parameters plugin_parameters[] = {
+    { .name = "keyfile", .set_plugin_parameter = &store_string, .data = keyfile },
+};
+
+void olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
+{
+    *params = plugin_parameters;
+    *size = sizeof(plugin_parameters)/sizeof(*plugin_parameters);
+}
+
+int olsrd_plugin_init(void) {
   /* Calls the initialization function
    * olsr_plugin_init()
    * This function should be present in your
index 1ccdfbf..e17e490 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.25 2007/05/09 17:41:17 bernd67 Exp $
+ * $Id: olsrd_secure.c,v 1.26 2007/07/15 21:47:17 bernd67 Exp $
  */
 
 
@@ -107,6 +107,56 @@ MD5_checksum(const olsr_u8_t *data, const olsr_u16_t data_len, olsr_u8_t *hashbu
 #endif
 
 
+/* Timestamp node */
+struct stamp
+{
+  union olsr_ip_addr addr;
+  /* Timestamp difference */
+  int diff;
+  olsr_u32_t challenge;
+  olsr_u8_t validated;
+  clock_t valtime; /* Validity time */
+  clock_t conftime; /* Reconfiguration time */
+  struct stamp *prev;
+  struct stamp *next;
+};
+
+/* Seconds to cache a valid timestamp entry */
+#define TIMESTAMP_HOLD_TIME 30
+/* Seconds to cache a not verified timestamp entry */
+#define EXCHANGE_HOLD_TIME 5
+
+static struct stamp timestamps[HASHSIZE];
+
+
+char keyfile[FILENAME_MAX+1];
+char aes_key[16];
+/* Input interface */
+static struct interface *olsr_in_if;
+
+/* Event function to register with the sceduler */
+#if 0
+static void olsr_event(void);
+#endif
+static int send_challenge(union olsr_ip_addr *);
+static int ifchange(struct interface *, int);
+static int send_cres(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u32_t, struct stamp *);
+static int send_rres(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u32_t);
+static int parse_challenge(char *);
+static int parse_cres(char *);
+static int parse_rres(char *);
+static int check_auth(char *, int *);
+#if 0
+static int ipc_send(char *, int);
+#endif
+static int add_signature(olsr_u8_t *, int*);
+static int validate_packet(char *, int*);
+static void packet_parser(int);
+static void timeout_timestamps(void*);
+static int check_timestamp(union olsr_ip_addr *, time_t);
+static struct stamp *lookup_timestamp_entry(union olsr_ip_addr *);
+static int read_key_from_file(char *);
+
 /**
  *Do initialization here
  *
@@ -172,14 +222,12 @@ secure_plugin_init(void)
   return 1;
 }
 
-
 int
 plugin_ipc_init(void)
 {
   return 1;
 }
 
-
 /*
  * destructor - called at unload
  */
@@ -189,22 +237,24 @@ secure_plugin_exit(void)
 }
 
 
+#if 0
 /**
  *Scheduled event
  */
-void
+static void
 olsr_event(void)
 {
 
 }
+#endif
 
-
-int
+#if 0
+static int
 ipc_send(char *data __attribute__((unused)), int size __attribute__((unused)))
 {
   return 1;
 }
-
+#endif
 
 /* XXX - ToDo */
 int
index efc9149..0ce5ecf 100644 (file)
 #define UPPER_DIFF 3
 #define LOWER_DIFF -3
 
-char aes_key[16];
+extern char aes_key[16];
 /* Seconds of slack allowed */
 #define SLACK 3
 
-/* Timestamp node */
-struct stamp
-{
-  union olsr_ip_addr addr;
-  /* Timestamp difference */
-  int diff;
-  olsr_u32_t challenge;
-  olsr_u8_t validated;
-  clock_t valtime; /* Validity time */
-  clock_t conftime; /* Reconfiguration time */
-  struct stamp *prev;
-  struct stamp *next;
-};
+int secure_plugin_init(void);
 
-/* Seconds to cache a valid timestamp entry */
-#define TIMESTAMP_HOLD_TIME 30
-/* Seconds to cache a not verified timestamp entry */
-#define EXCHANGE_HOLD_TIME 5
+void secure_plugin_exit(void);
 
-struct stamp timestamps[HASHSIZE];
-
-/* Input interface */
-struct interface *olsr_in_if;
-
-/* Timeout function to register with the sceduler */
-void
-olsr_timeout(void);
-
-
-/* Event function to register with the sceduler */
-void
-olsr_event(void);
-
-int
-send_challenge(union olsr_ip_addr *);
-
-int
-ifchange(struct interface *, int);
-
-int
-send_cres(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u32_t, struct stamp *);
-
-int
-send_rres(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u32_t);
-
-int
-parse_challenge(char *);
-
-int
-parse_cres(char *);
-
-int
-parse_rres(char *);
-
-int
-check_auth(char *, int *);
-
-void
-ipc_action(int);
-
-int
-ipc_send(char *, int);
-
-int
-add_signature(olsr_u8_t *, int*);
-
-int
-validate_packet(char *, int*);
-
-void
-packet_parser(int);
-
-void
-timeout_timestamps(void*);
-
-int
-check_timestamp(union olsr_ip_addr *, time_t);
-
-struct stamp *
-lookup_timestamp_entry(union olsr_ip_addr *);
-
-int
-read_key_from_file(char *);
-
-int
-secure_plugin_init(void);
-
-void
-secure_plugin_exit(void);
-
-int
-plugin_ipc_init(void);
+int plugin_ipc_init(void);
 
 #endif
index 7038f2c..5440d2e 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: secure_messages.h,v 1.2 2007/01/31 12:36:50 bernd67 Exp $
+ * $Id: secure_messages.h,v 1.3 2007/07/15 21:47:17 bernd67 Exp $
  */
 
 
@@ -68,7 +68,7 @@
 #define TYPE_RRESPONSE 13
 
 
-char keyfile[FILENAME_MAX];
+extern char keyfile[FILENAME_MAX+1];
 
 
 #ifdef USE_OPENSSL
index 3d09da3..a145659 100644 (file)
@@ -2,8 +2,8 @@ VERS_1.0
 {
   global:
     olsrd_plugin_interface_version;
-    olsrd_plugin_register_param;
     olsrd_plugin_init;
+    olsrd_get_plugin_parameters;
 
   local:
     *;