diff -Nur olsrd-0.5.3.orig/lib/bmf/src/NetworkInterfaces.h olsrd-0.5.3/lib/bmf/src/NetworkInterfaces.h
--- olsrd-0.5.3.orig/lib/bmf/src/NetworkInterfaces.h	2007-06-30 22:07:47.000000000 +0200
+++ olsrd-0.5.3/lib/bmf/src/NetworkInterfaces.h	2007-09-17 21:27:08.000000000 +0200
@@ -45,6 +45,7 @@
 
 /* OLSR includes */
 #include "olsr_types.h" /* olsr_ip_addr */
+#include "olsrd_plugin.h" /* union set_plugin_parameter_addon */
 
 /* Plugin includes */
 #include "Packet.h" /* IFHWADDRLEN */
diff -Nur olsrd-0.5.3.orig/lib/httpinfo/src/olsrd_plugin.c olsrd-0.5.3/lib/httpinfo/src/olsrd_plugin.c
--- olsrd-0.5.3.orig/lib/httpinfo/src/olsrd_plugin.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/httpinfo/src/olsrd_plugin.c	2007-09-17 21:27:08.000000000 +0200
@@ -64,8 +64,8 @@
 static void my_init(void) __attribute__ ((constructor));
 static void my_fini(void) __attribute__ ((destructor));
 
-static int add_plugin_ipnet(const char *value, void *data, unsigned int);
-static int add_plugin_ipaddr(const char *value, void *data, unsigned int);
+static int add_plugin_ipnet(const char *value, void *data, set_plugin_parameter_addon);
+static int add_plugin_ipaddr(const char *value, void *data, set_plugin_parameter_addon);
 
 static int insert_plugin_ipnet(const char *sz_net, const char *sz_mask, struct allowed_net **allowed_nets);
 
@@ -140,10 +140,9 @@
     return 0;
 }
 
-static int add_plugin_ipnet(const char *value, void *data, unsigned int addon)
+static int add_plugin_ipnet(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
     char sz_net[100], sz_mask[100]; /* IPv6 in the future */
-    if (addon) {}
 
     if(sscanf(value, "%99s %99s", sz_net, sz_mask) != 2) {
         olsr_printf(1, "(HTTPINFO) Error parsing net param \"%s\"!\n", value);
@@ -152,9 +151,8 @@
     return insert_plugin_ipnet(sz_net, sz_mask, data);
 }
 
-static int add_plugin_ipaddr(const char *value, void *data, unsigned int addon)
+static int add_plugin_ipaddr(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
-    if (addon) {}
     return insert_plugin_ipnet(value, "255.255.255.255", data);
 }
 
diff -Nur olsrd-0.5.3.orig/lib/mini/src/olsrd_plugin.c olsrd-0.5.3/lib/mini/src/olsrd_plugin.c
--- olsrd-0.5.3.orig/lib/mini/src/olsrd_plugin.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/mini/src/olsrd_plugin.c	2007-09-17 21:27:08.000000000 +0200
@@ -62,7 +62,7 @@
 }
 
 
-static int set_plugin_test(const char *value, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+static int set_plugin_test(const char *value, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
     printf("\n*** MINI: parameter test: %s\n", value);
     return 0;
diff -Nur olsrd-0.5.3.orig/lib/nameservice/src/nameservice.c olsrd-0.5.3/lib/nameservice/src/nameservice.c
--- olsrd-0.5.3.orig/lib/nameservice/src/nameservice.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/nameservice/src/nameservice.c	2007-09-17 21:27:08.000000000 +0200
@@ -168,19 +168,19 @@
 }
 
 
-static int set_nameservice_server(const char *value, void *data, unsigned int addon)
+static int set_nameservice_server(const char *value, void *data, set_plugin_parameter_addon addon)
 {
 	union olsr_ip_addr ip;
 	struct name_entry **v = data;
 	if (0 == strlen(value))
 	{
-		*v = add_name_to_list(*v, "", addon, NULL);
+		*v = add_name_to_list(*v, "", addon.ui, NULL);
                 OLSR_PRINTF(1, "%s got %s (main address)\n", "Got", value);
 		return 0;
 	}
 	else if (0 < inet_pton(olsr_cnf->ip_version, value, &ip))
 	{
-		*v = add_name_to_list(*v, "", addon, &ip);
+		*v = add_name_to_list(*v, "", addon.ui, &ip);
                 OLSR_PRINTF(1, "%s got %s\n", "Got", value);
 		return 0;
 	}
@@ -191,12 +191,12 @@
 	return 1;
 }
 
-static int set_nameservice_name(const char *value, void *data, unsigned int addon)
+static int set_nameservice_name(const char *value, void *data, set_plugin_parameter_addon addon)
 {
 	struct name_entry **v = data;
 	if (0 < strlen(value))
 	{
-		*v = add_name_to_list(*v, (char*)value, addon, NULL);
+		*v = add_name_to_list(*v, (char*)value, addon.ui, NULL);
                 OLSR_PRINTF(1, "%s got %s (main address)\n", "Got", value);
 		return 0;
 	}
@@ -207,28 +207,27 @@
 	return 1;
 }
 
-static int set_nameservice_host(const char *value, void *data, unsigned int addon)
+static int set_nameservice_host(const char *value, void *data, set_plugin_parameter_addon addon)
 {
 	union olsr_ip_addr ip;
 	struct name_entry **v = data;
-	if (0 < inet_pton(olsr_cnf->ip_version, (char*)addon, &ip))
+	if (0 < inet_pton(olsr_cnf->ip_version, addon.pc, &ip))
 	{
 		// the IP is validated later
 		*v = add_name_to_list(*v, (char*)value, NAME_HOST, &ip);
-                OLSR_PRINTF(1, "%s: %s got %s\n", "Got", (char*) addon, value);
+                OLSR_PRINTF(1, "%s: %s got %s\n", "Got", addon.pc, value);
 		return 0;
 	}
 	else
 	{
-                OLSR_PRINTF(0, "%s: Illegal IP address \"%s\"", (char*) addon, value);
+                OLSR_PRINTF(0, "%s: Illegal IP address \"%s\"", addon.pc, value);
 	}
 	return 1;
 }
 
-static int set_nameservice_float(const char *value, void *data, unsigned int addon)
+static int set_nameservice_float(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
     const float thefloat = atof(value);
-    if (addon) {}
     if (data != NULL)
     {
         float *v = data;
@@ -245,18 +244,18 @@
 static const struct olsrd_plugin_parameters plugin_parameters[] = {
     { .name = "interval",      .set_plugin_parameter = &set_plugin_int,         .data = &my_interval },
     { .name = "timeout",       .set_plugin_parameter = &set_nameservice_float,  .data = &my_timeout },
-    { .name = "hosts-file",    .set_plugin_parameter = &set_plugin_string,      .data = &my_hosts_file,    .addon = sizeof(my_hosts_file) },
-    { .name = "resolv-file",   .set_plugin_parameter = &set_plugin_string,      .data = &my_resolv_file,   .addon = sizeof(my_resolv_file) },
-    { .name = "suffix",        .set_plugin_parameter = &set_plugin_string,      .data = &my_suffix,        .addon = sizeof(my_suffix) },
-    { .name = "add-hosts",     .set_plugin_parameter = &set_plugin_string,      .data = &my_add_hosts,     .addon = sizeof(my_add_hosts) },
-    { .name = "services-file", .set_plugin_parameter = &set_plugin_string,      .data = &my_services_file, .addon = sizeof(my_services_file) },
+    { .name = "hosts-file",    .set_plugin_parameter = &set_plugin_string,      .data = &my_hosts_file,    .addon = {sizeof(my_hosts_file)} },
+    { .name = "resolv-file",   .set_plugin_parameter = &set_plugin_string,      .data = &my_resolv_file,   .addon = {sizeof(my_resolv_file)} },
+    { .name = "suffix",        .set_plugin_parameter = &set_plugin_string,      .data = &my_suffix,        .addon = {sizeof(my_suffix)} },
+    { .name = "add-hosts",     .set_plugin_parameter = &set_plugin_string,      .data = &my_add_hosts,     .addon = {sizeof(my_add_hosts)} },
+    { .name = "services-file", .set_plugin_parameter = &set_plugin_string,      .data = &my_services_file, .addon = {sizeof(my_services_file)} },
     { .name = "lat",           .set_plugin_parameter = &set_nameservice_float,  .data = &my_lat },
     { .name = "lon",           .set_plugin_parameter = &set_nameservice_float,  .data = &my_lon },
-    { .name = "latlon-file",   .set_plugin_parameter = &set_plugin_string,      .data = &my_latlon_file,   .addon = sizeof(my_latlon_file) },
-    { .name = "latlon-infile", .set_plugin_parameter = &set_plugin_string,      .data = &latlon_in_file,   .addon = sizeof(latlon_in_file) },
-    { .name = "dns-server",    .set_plugin_parameter = &set_nameservice_server, .data = &my_forwarders,    .addon = NAME_FORWARDER },
-    { .name = "name",          .set_plugin_parameter = &set_nameservice_name,   .data = &my_names,         .addon = NAME_HOST },
-    { .name = "service",       .set_plugin_parameter = &set_nameservice_name,   .data = &my_services,      .addon = NAME_SERVICE },
+    { .name = "latlon-file",   .set_plugin_parameter = &set_plugin_string,      .data = &my_latlon_file,   .addon = {sizeof(my_latlon_file)} },
+    { .name = "latlon-infile", .set_plugin_parameter = &set_plugin_string,      .data = &latlon_in_file,   .addon = {sizeof(latlon_in_file)} },
+    { .name = "dns-server",    .set_plugin_parameter = &set_nameservice_server, .data = &my_forwarders,    .addon = {NAME_FORWARDER} },
+    { .name = "name",          .set_plugin_parameter = &set_nameservice_name,   .data = &my_names,         .addon = {NAME_HOST} },
+    { .name = "service",       .set_plugin_parameter = &set_nameservice_name,   .data = &my_services,      .addon = {NAME_SERVICE} },
     { .name = "",              .set_plugin_parameter = &set_nameservice_host,   .data = &my_names },
 };
 
diff -Nur olsrd-0.5.3.orig/lib/secure/src/olsrd_plugin.c olsrd-0.5.3/lib/secure/src/olsrd_plugin.c
--- olsrd-0.5.3.orig/lib/secure/src/olsrd_plugin.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/secure/src/olsrd_plugin.c	2007-09-17 21:27:08.000000000 +0200
@@ -90,10 +90,9 @@
   secure_plugin_exit();
 }
 
-static int store_string(const char *value, void *data, unsigned int addon)
+static int store_string(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
   char *str = data;
-  if (addon) {}
   snprintf(str, FILENAME_MAX+1, "%s", value);
   return 0;
 }
diff -Nur olsrd-0.5.3.orig/lib/tas/src/http.c olsrd-0.5.3/lib/tas/src/http.c
--- olsrd-0.5.3.orig/lib/tas/src/http.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/tas/src/http.c	2007-09-17 21:27:08.000000000 +0200
@@ -447,7 +447,7 @@
   getRandomBytes(cookieStruct.key, 16);
 }
 
-int httpSetAddress(const char *addrStr, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetAddress(const char *addrStr, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   if (parseIpAddr(&confAddr, addrStr) < 0)
   {
@@ -458,7 +458,7 @@
   return 0;
 }
 
-int httpSetPort(const char *portStr, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetPort(const char *portStr, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   unsigned int port;
 
@@ -479,7 +479,7 @@
   return 0;
 }
 
-int httpSetRootDir(const char *rootDir, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetRootDir(const char *rootDir, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   if (checkAbsPath(rootDir) < 0)
   {
@@ -491,7 +491,7 @@
   return 0;
 }
 
-int httpSetWorkDir(const char *workDir, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetWorkDir(const char *workDir, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   if (checkAbsPath(workDir) < 0)
   {
@@ -503,25 +503,25 @@
   return 0;
 }
 
-int httpSetIndexFile(const char *indexFile, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetIndexFile(const char *indexFile, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   confIndexFile = myStrdup(indexFile);
   return 0;
 }
 
-int httpSetUser(const char *user, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetUser(const char *user, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   confUser = myStrdup(user);
   return 0;
 }
 
-int httpSetPassword(const char *password, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetPassword(const char *password, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   confPassword = myStrdup(password);
   return 0;
 }
 
-int httpSetSessTime(const char *timeStr, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetSessTime(const char *timeStr, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   unsigned int time;
 
@@ -542,13 +542,13 @@
   return 0;
 }
 
-int httpSetPubDir(const char *pubDir, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetPubDir(const char *pubDir, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   confPubDir = myStrdup(pubDir);
   return 0;
 }
 
-int httpSetQuantum(const char *quantumStr, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetQuantum(const char *quantumStr, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   unsigned int quantum;
 
@@ -569,7 +569,7 @@
   return 0;
 }
 
-int httpSetMessTime(const char *timeStr, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetMessTime(const char *timeStr, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   unsigned int time;
 
@@ -590,7 +590,7 @@
   return 0;
 }
 
-int httpSetMessLimit(const char *limitStr, void *data __attribute__((unused)), unsigned int addon __attribute__((unused)))
+int httpSetMessLimit(const char *limitStr, void *data __attribute__((unused)), set_plugin_parameter_addon addon __attribute__((unused)))
 {
   unsigned int limit;
 
diff -Nur olsrd-0.5.3.orig/lib/tas/src/http.h olsrd-0.5.3/lib/tas/src/http.h
--- olsrd-0.5.3.orig/lib/tas/src/http.h	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/tas/src/http.h	2007-09-17 21:27:08.000000000 +0200
@@ -40,6 +40,8 @@
  * $Id: http.h,v 1.2 2007/09/02 22:17:00 bernd67 Exp $
  */
 
+#include "olsrd_plugin.h" /* union set_plugin_parameter_addon */
+
 #define CHUNK_SIZE 1024
 
 struct chunk
@@ -117,18 +119,18 @@
 
 extern void httpInit(void);
 
-extern int httpSetAddress(const char *addrStr, void *data, unsigned int addon);
-extern int httpSetPort(const char *portStr, void *data, unsigned int addon);
-extern int httpSetRootDir(const char *rootDir, void *data, unsigned int addon);
-extern int httpSetWorkDir(const char *workDir, void *data, unsigned int addon);
-extern int httpSetIndexFile(const char *indexFile, void *data, unsigned int addon);
-extern int httpSetUser(const char *user, void *data, unsigned int addon);
-extern int httpSetPassword(const char *password, void *data, unsigned int addon);
-extern int httpSetSessTime(const char *timeStr, void *data, unsigned int addon);
-extern int httpSetPubDir(const char *pref, void *data, unsigned int addon);
-extern int httpSetQuantum(const char *quantumStr, void *data, unsigned int addon);
-extern int httpSetMessTime(const char *timeStr, void *data, unsigned int addon);
-extern int httpSetMessLimit(const char *limitStr, void *data, unsigned int addon);
+extern int httpSetAddress(const char *addrStr, void *data, set_plugin_parameter_addon addon);
+extern int httpSetPort(const char *portStr, void *data, set_plugin_parameter_addon addon);
+extern int httpSetRootDir(const char *rootDir, void *data, set_plugin_parameter_addon addon);
+extern int httpSetWorkDir(const char *workDir, void *data, set_plugin_parameter_addon addon);
+extern int httpSetIndexFile(const char *indexFile, void *data, set_plugin_parameter_addon addon);
+extern int httpSetUser(const char *user, void *data, set_plugin_parameter_addon addon);
+extern int httpSetPassword(const char *password, void *data, set_plugin_parameter_addon addon);
+extern int httpSetSessTime(const char *timeStr, void *data, set_plugin_parameter_addon addon);
+extern int httpSetPubDir(const char *pref, void *data, set_plugin_parameter_addon addon);
+extern int httpSetQuantum(const char *quantumStr, void *data, set_plugin_parameter_addon addon);
+extern int httpSetMessTime(const char *timeStr, void *data, set_plugin_parameter_addon addon);
+extern int httpSetMessLimit(const char *limitStr, void *data, set_plugin_parameter_addon addon);
 
 extern int httpSetup(void);
 extern int httpService(int freq);
diff -Nur olsrd-0.5.3.orig/lib/tas/test.c olsrd-0.5.3/lib/tas/test.c
--- olsrd-0.5.3.orig/lib/tas/test.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/lib/tas/test.c	2007-09-17 21:27:08.000000000 +0200
@@ -88,7 +88,7 @@
         return 1;
       }
 
-      if (httpSetAddress(av[i], NULL, 0) < 0)
+      if (httpSetAddress(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set address\n");
         return 1;
@@ -104,7 +104,7 @@
         return 1;
       }
 
-      if (httpSetPort(av[i], NULL, 0) < 0)
+      if (httpSetPort(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set port\n");
         return 1;
@@ -120,7 +120,7 @@
         return 1;
       }
 
-      if (httpSetWorkDir(av[i], NULL, 0) < 0)
+      if (httpSetWorkDir(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set work directory\n");
         return 1;
@@ -136,7 +136,7 @@
         return 1;
       }
 
-      if (httpSetRootDir(av[i], NULL, 0) < 0)
+      if (httpSetRootDir(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set root directory\n");
         return 1;
@@ -152,7 +152,7 @@
         return 1;
       }
 
-      httpSetIndexFile(av[i], NULL, 0);
+      httpSetIndexFile(av[i], NULL, (set_plugin_parameter_addon){0});
     }
 
     else if (strcmp(av[i], "--user") == 0)
@@ -164,7 +164,7 @@
         return 1;
       }
 
-      httpSetUser(av[i], NULL, 0);
+      httpSetUser(av[i], NULL, (set_plugin_parameter_addon){0});
     }
 
     else if (strcmp(av[i], "--password") == 0)
@@ -176,7 +176,7 @@
         return 1;
       }
 
-      httpSetPassword(av[i], NULL, 0);
+      httpSetPassword(av[i], NULL, (set_plugin_parameter_addon){0});
     }
 
     else if (strcmp(av[i], "--sess-time") == 0)
@@ -188,7 +188,7 @@
         return 1;
       }
 
-      if (httpSetSessTime(av[i], NULL, 0) < 0)
+      if (httpSetSessTime(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set session timeout\n");
         return 1;
@@ -204,7 +204,7 @@
         return 1;
       }
 
-      httpSetPubDir(av[i], NULL, 0);
+      httpSetPubDir(av[i], NULL, (set_plugin_parameter_addon){0});
     }
 
     else if (strcmp(av[i], "--quantum") == 0)
@@ -216,7 +216,7 @@
         return 1;
       }
 
-      if (httpSetQuantum(av[i], NULL, 0) < 0)
+      if (httpSetQuantum(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set quantum\n");
         return 1;
@@ -232,7 +232,7 @@
         return 1;
       }
 
-      if (httpSetMessTime(av[i], NULL, 0) < 0)
+      if (httpSetMessTime(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set message timeout\n");
         return 1;
@@ -248,7 +248,7 @@
         return 1;
       }
 
-      if (httpSetMessLimit(av[i], NULL, 0) < 0)
+      if (httpSetMessLimit(av[i], NULL, (set_plugin_parameter_addon){0}) < 0)
       {
         fprintf(stderr, "cannot set message queue limit\n");
         return 1;
diff -Nur olsrd-0.5.3.orig/src/olsrd_plugin.h olsrd-0.5.3/src/olsrd_plugin.h
--- olsrd-0.5.3.orig/src/olsrd_plugin.h	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/src/olsrd_plugin.h	2007-09-17 21:29:16.000000000 +0200
@@ -78,13 +78,18 @@
 
 /* Interface version 5 */
 
-typedef int (*set_plugin_parameter)(const char *value, void *data, unsigned int addon);
+typedef union {
+    unsigned int ui;
+    char *pc;
+} set_plugin_parameter_addon;
+
+typedef int (*set_plugin_parameter)(const char *value, void *data, set_plugin_parameter_addon addon);
 
 struct olsrd_plugin_parameters {
     const char *name;
     set_plugin_parameter set_plugin_parameter;
     void *data;
-    unsigned int addon;
+    set_plugin_parameter_addon addon;
 };
 
 /**
diff -Nur olsrd-0.5.3.orig/src/plugin_loader.c olsrd-0.5.3/src/plugin_loader.c
--- olsrd-0.5.3.orig/src/plugin_loader.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/src/plugin_loader.c	2007-09-17 21:27:08.000000000 +0200
@@ -256,7 +256,7 @@
                 {
                     /* we have found it! */
                     rc = entry->plugin_parameters[i].set_plugin_parameter(params->value, entry->plugin_parameters[i].data,
-                        0 == entry->plugin_parameters[i].name[0] ? (unsigned int)params->key : entry->plugin_parameters[i].addon);
+                        0 == entry->plugin_parameters[i].name[0] ? (set_plugin_parameter_addon)params->key : entry->plugin_parameters[i].addon);
                     if (rc != 0) {
                         fprintf(stderr, "\nFatal error in plugin parameter \"%s\"/\"%s\"\n", params->key, params->value);
                         rv = -1;
diff -Nur olsrd-0.5.3.orig/src/plugin_util.c olsrd-0.5.3/src/plugin_util.c
--- olsrd-0.5.3.orig/src/plugin_util.c	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/src/plugin_util.c	2007-09-17 21:32:17.000000000 +0200
@@ -44,7 +44,7 @@
 #include "olsr.h"
 #include "defs.h"
 
-int set_plugin_port(const char *value, void *data, unsigned int addon __attribute__((unused)))
+int set_plugin_port(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
     char *endptr;
     const unsigned int port = strtoul(value, &endptr, 0);
@@ -66,7 +66,7 @@
     return 0;
 }
 
-int set_plugin_ipaddress(const char *value, void *data, unsigned int addon __attribute__((unused)))
+int set_plugin_ipaddress(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
     char buf[INET6_ADDRSTRLEN];
     union olsr_ip_addr ip_addr;
@@ -86,7 +86,7 @@
 }
 
 
-int set_boolean(const char *value, void *data, unsigned int addon __attribute__((unused)))
+int set_boolean(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
     int *v = data;
     if (strcasecmp (value, "yes") == 0) {
@@ -99,7 +99,7 @@
     return 0;
 }
 
-int set_plugin_int(const char *value, void *data, unsigned int addon __attribute__((unused)))
+int set_plugin_int(const char *value, void *data, set_plugin_parameter_addon addon __attribute__((unused)))
 {
     char *endptr;
     const int theint = strtol(value, &endptr, 0);
@@ -117,11 +117,11 @@
     return 0;
 }
 
-int set_plugin_string(const char *value, void *data, unsigned int addon)
+int set_plugin_string(const char *value, void *data, set_plugin_parameter_addon addon)
 {
     if (data != NULL) {
         char *v = data;
-        if (strlen(value) >= addon) {
+        if (strlen(value) >= addon.ui) {
             OLSR_PRINTF(0, "String too long \"%s\"", value);
             return 1;
         }
diff -Nur olsrd-0.5.3.orig/src/plugin_util.h olsrd-0.5.3/src/plugin_util.h
--- olsrd-0.5.3.orig/src/plugin_util.h	2007-09-17 21:27:08.000000000 +0200
+++ olsrd-0.5.3/src/plugin_util.h	2007-09-17 21:32:17.000000000 +0200
@@ -38,12 +38,14 @@
 #ifndef _OLSRD_PLUGIN_UTIL
 #define _OLSRD_PLUGIN_UTIL
 
+#include "olsrd_plugin.h" /* union set_plugin_parameter_addon */
+
 /* Common/utility functions for plugins */
-int set_plugin_port(const char *value, void *data, unsigned int);
-int set_plugin_ipaddress(const char *value, void *data, unsigned int);
-int set_boolean(const char *value, void *data, unsigned int);
-int set_plugin_int(const char *value, void *data, unsigned int);
-int set_plugin_string(const char *value, void *data, unsigned int);
+int set_plugin_port(const char *value, void *data, set_plugin_parameter_addon);
+int set_plugin_ipaddress(const char *value, void *data, set_plugin_parameter_addon);
+int set_boolean(const char *value, void *data, set_plugin_parameter_addon);
+int set_plugin_int(const char *value, void *data, set_plugin_parameter_addon);
+int set_plugin_string(const char *value, void *data, set_plugin_parameter_addon);
 
 
 #endif
