contrib: make remove dependency to custom olsrd
[project/luci.git] / contrib / package / olsrd-luci / patches / 140-olsrd-optimize-size.patch
index 7aed872..3c3dabd 100644 (file)
@@ -1,7 +1,19 @@
-diff -Nur olsrd-0.5.6-r3.orig/lib/bmf/src/NetworkInterfaces.c olsrd-0.5.6-r3/lib/bmf/src/NetworkInterfaces.c
---- olsrd-0.5.6-r3.orig/lib/bmf/src/NetworkInterfaces.c        2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/lib/bmf/src/NetworkInterfaces.c     2008-12-03 10:01:07.000000000 +0100
-@@ -544,7 +544,9 @@
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -207,6 +207,10 @@
+ $(warning Use CPPFLAGS instead of DEFINES for -D)
+ endif
++ifeq ($(SVEN_OLA_UNBLOAT),1)
++CPPFLAGS += -DSVEN_OLA_UNBLOAT -DNODEBUG
++endif
++
+ TAGFILE ?=    src/TAGS
+ help:
+--- a/lib/bmf/src/NetworkInterfaces.c
++++ b/lib/bmf/src/NetworkInterfaces.c
+@@ -541,7 +541,9 @@
            OLSR_PRINTF(9, "%s: ----> Not forwarding to %s: no link found\n", PLUGIN_NAME_SHORT,
                        olsr_ip_to_string(&buf, &walker->neighbor_iface_addr));
          } else {
@@ -11,9 +23,8 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/bmf/src/NetworkInterfaces.c olsrd-0.5.6-r3/lib
  
            OLSR_PRINTF(9, "%s: ----> Not forwarding to %s: \"%s\" gives a better link to this neighbor, costing %5.2f\n",
                        PLUGIN_NAME_SHORT, olsr_ip_to_string(&buf, &walker->neighbor_iface_addr), bestIntf->int_name,
-diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/Makefile olsrd-0.5.6-r3/lib/httpinfo/Makefile
---- olsrd-0.5.6-r3.orig/lib/httpinfo/Makefile  2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/lib/httpinfo/Makefile       2008-12-03 10:01:07.000000000 +0100
+--- a/lib/httpinfo/Makefile
++++ b/lib/httpinfo/Makefile
 @@ -47,7 +47,11 @@
  CPPFLAGS +=   -DADMIN_INTERFACE
  endif
@@ -26,9 +37,8 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/Makefile olsrd-0.5.6-r3/lib/httpinfo/
  
  default_target: $(PLUGIN_FULLNAME)
  ifdef ADMIN_INTERFACE
-diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c olsrd-0.5.6-r3/lib/httpinfo/src/olsrd_httpinfo.c
---- olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c      2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/lib/httpinfo/src/olsrd_httpinfo.c   2008-12-03 10:01:07.000000000 +0100
+--- a/lib/httpinfo/src/olsrd_httpinfo.c
++++ b/lib/httpinfo/src/olsrd_httpinfo.c
 @@ -67,7 +67,9 @@
  
  #include "olsrd_httpinfo.h"
@@ -39,31 +49,21 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c olsrd-0.5.6-r3/l
  
  #ifdef OS
  #undef OS
-@@ -181,7 +183,9 @@
- static int build_about_body(char *, olsr_u32_t);
-+#ifndef SVEN_OLA_UNBLOAT
- static int build_cfgfile_body(char *, olsr_u32_t);
-+#endif /* SVEN_OLA_UNBLOAT */
- static int check_allowed_ip(const struct allowed_net *const allowed_nets, const union olsr_ip_addr *const addr);
-@@ -217,10 +221,13 @@
-   {"Admin", "admin", build_admin_body, OLSR_TRUE},
+@@ -222,10 +224,13 @@
+   {"Admin", "admin", build_admin_body, true},
  #endif
-   {"About", "about", build_about_body, OLSR_TRUE},
+   {"About", "about", build_about_body, true},
 +#ifndef SVEN_OLA_UNBLOAT
-   {"FOO", "cfgfile", build_cfgfile_body, OLSR_FALSE},
+   {"FOO", "cfgfile", build_cfgfile_body, false},
 +#endif /* SVEN_OLA_UNBLOAT */
-   {NULL, NULL, NULL, OLSR_FALSE}
+   {NULL, NULL, NULL, false}
  };
  
 +#ifndef SVEN_OLA_UNBLOAT
  static const struct static_bin_file_entry static_bin_files[] = {
    {"favicon.ico", favicon_ico, sizeof(favicon_ico)}
    ,
-@@ -230,6 +237,7 @@
+@@ -235,6 +240,7 @@
    ,
    {NULL, NULL, 0}
  };
@@ -71,7 +71,7 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c olsrd-0.5.6-r3/l
  
  static const struct static_txt_file_entry static_txt_files[] = {
    {"httpinfo.css", httpinfo_css},
-@@ -408,6 +416,7 @@
+@@ -428,6 +434,7 @@
    } else if (!strcmp(req_type, "GET")) {
      int i = 0;
  
@@ -79,7 +79,7 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c olsrd-0.5.6-r3/l
      for (i = 0; static_bin_files[i].filename; i++) {
        if (FILENREQ_MATCH(filename, static_bin_files[i].filename)) {
          break;
-@@ -423,6 +432,7 @@
+@@ -442,6 +449,7 @@
      }
  
      i = 0;
@@ -87,8 +87,8 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c olsrd-0.5.6-r3/l
      while (static_txt_files[i].filename) {
        if (FILENREQ_MATCH(filename, static_txt_files[i].filename)) {
          break;
-@@ -462,16 +472,22 @@
-         snprintf(&body[size], sizeof(body) - size,
+@@ -480,16 +488,22 @@
+       abuf_appendf(&body_abuf,
                   "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" "<head>\n"
                   "<meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-1\">\n"
 -                 "<title>olsr.org httpinfo plugin</title>\n" "<link rel=\"icon\" href=\"favicon.ico\" type=\"image/x-icon\">\n"
@@ -100,55 +100,54 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/httpinfo/src/olsrd_httpinfo.c olsrd-0.5.6-r3/l
                   "<link rel=\"stylesheet\" type=\"text/css\" href=\"httpinfo.css\">\n" "</head>\n"
                   "<body bgcolor=\"#ffffff\" text=\"#000000\">\n"
 +#ifndef SVEN_OLA_UNBLOAT
-                  "<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"%d\">\n"
+                  "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"%d\">\n"
                   "<tbody><tr bgcolor=\"#ffffff\">\n" "<td align=\"left\" height=\"69\" valign=\"middle\" width=\"80%%\">\n"
                   "<font color=\"black\" face=\"timesroman\" size=\"6\">&nbsp;&nbsp;&nbsp;<a href=\"http://www.olsr.org/\">olsr.org OLSR daemon</a></font></td>\n"
-                  "<td align=\"right\" height=\"69\" valign=\"middle\" width=\"20%%\">\n"
+                  "<td height=\"69\" valign=\"middle\" width=\"20%%\">\n"
                   "<a href=\"http://www.olsr.org/\"><img border=\"0\" src=\"/logo.gif\" alt=\"olsrd logo\"></a></td>\n" "</tr>\n"
 -                 "</tbody>\n" "</table>\n", FRAMEWIDTH);
 +                 "</tbody>\n" "</table>\n", FRAMEWIDTH
 +#endif /* SVEN_OLA_UNBLOAT */
 +        );
  
-       size += build_tabs(&body[size], sizeof(body) - size, i);
-       size += build_frame(&body[size], sizeof(body) - size, "Current Routes", "routes", FRAMEWIDTH, tab_entries[i].build_body_cb);
-@@ -855,7 +871,7 @@
-       size += snprintf(&buf[size], bufsize - size, "<tr><td colspan=\"3\">Status: DOWN</td></tr>\n");
+       build_tabs(&body_abuf, i);
+       build_frame(&body_abuf, "Current Routes", "routes", FRAMEWIDTH, tab_entries[i].build_body_cb);
+@@ -894,7 +908,7 @@
+       abuf_puts(abuf, "<tr><td colspan=\"3\">Status: DOWN</td></tr>\n");
        continue;
      }
 -
 +#ifndef SVEN_OLA_UNBLOAT
      if (olsr_cnf->ip_version == AF_INET) {
        struct ipaddr_str addrbuf, maskbuf, bcastbuf;
-       size +=
-@@ -868,6 +884,7 @@
-         snprintf(&buf[size], bufsize - size, "<tr>\n" "<td>IP: %s</td>\n" "<td>MCAST: %s</td>\n" "<td></td>\n" "</tr>\n",
+       abuf_appendf(abuf, "<tr>\n" "<td>IP: %s</td>\n" "<td>MASK: %s</td>\n" "<td>BCAST: %s</td>\n" "</tr>\n",
+@@ -905,6 +919,7 @@
+       abuf_appendf(abuf, "<tr>\n" "<td>IP: %s</td>\n" "<td>MCAST: %s</td>\n" "<td></td>\n" "</tr>\n",
                   ip6_to_string(&addrbuf, &rifs->int6_addr.sin6_addr), ip6_to_string(&maskbuf, &rifs->int6_multaddr.sin6_addr));
      }
 +#endif /* SVEN_OLA_UNBLOAT */
-     size +=
-       snprintf(&buf[size], bufsize - size, "<tr>\n" "<td>MTU: %d</td>\n" "<td>WLAN: %s</td>\n" "<td>STATUS: UP</td>\n" "</tr>\n",
+     abuf_appendf(abuf, "<tr>\n" "<td>MTU: %d</td>\n" "<td>WLAN: %s</td>\n" "<td>STATUS: UP</td>\n" "</tr>\n",
                 rifs->int_mtu, rifs->is_wireless ? "Yes" : "No");
-@@ -1116,6 +1133,7 @@
-                   build_host);
+   }
+@@ -1155,6 +1170,7 @@
+ #endif
  }
  
 +#ifndef SVEN_OLA_UNBLOAT
  static int
build_cfgfile_body(char *buf, olsr_u32_t bufsize)
check_allowed_ip(const struct allowed_net *const my_allowed_nets, const union olsr_ip_addr *const addr)
  {
-@@ -1150,6 +1168,7 @@
- #endif
-   return size;
+@@ -1166,6 +1182,7 @@
+   }
+   return 0;
  }
 +#endif /* SVEN_OLA_UNBLOAT */
  
- static int
- check_allowed_ip(const struct allowed_net *const allowed_nets, const union olsr_ip_addr *const addr)
-diff -Nur olsrd-0.5.6-r3.orig/lib/nameservice/src/nameservice.c olsrd-0.5.6-r3/lib/nameservice/src/nameservice.c
---- olsrd-0.5.6-r3.orig/lib/nameservice/src/nameservice.c      2008-12-03 10:01:07.000000000 +0100
-+++ olsrd-0.5.6-r3/lib/nameservice/src/nameservice.c   2008-12-03 10:10:52.000000000 +0100
-@@ -65,6 +65,11 @@
+ #if 0
+--- a/lib/nameservice/src/nameservice.c
++++ b/lib/nameservice/src/nameservice.c
+@@ -67,6 +67,11 @@
  #include "mapwrite.h"
  #include "compat.h"
  
@@ -160,198 +159,15 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/nameservice/src/nameservice.c olsrd-0.5.6-r3/l
  /* config parameters */
  static char my_hosts_file[MAX_FILE + 1];
  static char my_sighup_pid_file[MAX_FILE + 1];
-@@ -73,12 +78,16 @@
- static char my_suffix[MAX_SUFFIX];
- static int my_interval = EMISSION_INTERVAL;
- static double my_timeout = NAME_VALID_TIME;
-+#ifndef SVEN_OLA_UNBLOAT
- static char my_resolv_file[MAX_FILE + 1];
-+#endif /* SVEN_OLA_UNBLOAT */
- static char my_services_file[MAX_FILE + 1];
- static char my_macs_file[MAX_FILE + 1];
-+#ifndef SVEN_OLA_UNBLOAT
- static char my_name_change_script[MAX_FILE + 1];
- static char my_services_change_script[MAX_FILE + 1];
- static char my_macs_change_script[MAX_FILE + 1];
-+#endif
- static char latlon_in_file[MAX_FILE + 1];
- static char my_latlon_file[MAX_FILE + 1];
- float my_lat = 0.0, my_lon = 0.0;
-@@ -102,9 +111,11 @@
- static struct name_entry *my_macs = NULL;
- static olsr_bool mac_table_changed = OLSR_TRUE;
-+#ifndef SVEN_OLA_UNBLOAT
- static struct list_node forwarder_list[HASHSIZE];
- static struct name_entry *my_forwarders = NULL;
- static olsr_bool forwarder_table_changed = OLSR_TRUE;
-+#endif /* SVEN_OLA_UNBLOAT */
- struct list_node latlon_list[HASHSIZE];
- static olsr_bool latlon_table_changed = OLSR_TRUE;
-@@ -138,7 +149,9 @@
-   GetWindowsDirectory(my_hosts_file, MAX_FILE - 12);
-   GetWindowsDirectory(my_services_file, MAX_FILE - 12);
-   GetWindowsDirectory(my_macs_file, MAX_FILE - 12);
-+#ifndef SVEN_OLA_UNBLOAT
-   GetWindowsDirectory(my_resolv_file, MAX_FILE - 12);
-+#endif /* SVEN_OLA_UNBLOAT */
-   len = strlen(my_hosts_file);
-   if (my_hosts_file[len - 1] != '\\')
-@@ -155,15 +168,19 @@
-     strscat(my_macs_file, "\\", sizeof(my_macs_file));
-   strscat(my_macs_file, "macs_olsr", sizeof(my_macs_file));
-+#ifndef SVEN_OLA_UNBLOAT
-   len = strlen(my_resolv_file);
-   if (my_resolv_file[len - 1] != '\\')
-     strscat(my_resolv_file, "\\", sizeof(my_resolv_file));
-   strscat(my_resolv_file, "resolvconf_olsr", sizeof(my_resolv_file));
-+#endif /* SVEN_OLA_UNBLOAT */
- #else
-   strscpy(my_hosts_file, "/var/run/hosts_olsr", sizeof(my_hosts_file));
-   strscpy(my_services_file, "/var/run/services_olsr", sizeof(my_services_file));
-   strscpy(my_macs_file, "/var/run/macs_olsr", sizeof(my_macs_file));
-+#ifndef SVEN_OLA_UNBLOAT
-   strscpy(my_resolv_file, "/var/run/resolvconf_olsr", sizeof(my_resolv_file));
-+#endif /* SVEN_OLA_UNBLOAT */
-   *my_sighup_pid_file = 0;
- #endif
-@@ -171,14 +188,18 @@
-   my_add_hosts[0] = '\0';
-   my_latlon_file[0] = '\0';
-   latlon_in_file[0] = '\0';
-+#ifndef SVEN_OLA_UNBLOAT
-   my_name_change_script[0] = '\0';
-   my_services_change_script[0] = '\0';
-   my_macs_change_script[0] = '\0';
-+#endif /* SVEN_OLA_UNBLOAT */
-   /* init the lists heads */
-   for (i = 0; i < HASHSIZE; i++) {
-     list_head_init(&name_list[i]);
-+#ifndef SVEN_OLA_UNBLOAT
-     list_head_init(&forwarder_list[i]);
-+#endif /* SVEN_OLA_UNBLOAT */
-     list_head_init(&service_list[i]);
-     list_head_init(&mac_list[i]);
-     list_head_init(&latlon_list[i]);
-@@ -186,6 +207,7 @@
- }
-+#ifndef SVEN_OLA_UNBLOAT
- static int
- set_nameservice_server(const char *value, void *data, set_plugin_parameter_addon addon)
- {
-@@ -204,6 +226,7 @@
-   }
-   return 1;
- }
-+#endif /* SVEN_OLA_UNBLOAT */
- static int
- set_nameservice_name(const char *value, void *data, set_plugin_parameter_addon addon)
-@@ -253,10 +276,12 @@
-   { .name = "timeout",                .set_plugin_parameter = &set_nameservice_float,  .data = &my_timeout },
-   { .name = "sighup-pid-file",        .set_plugin_parameter = &set_plugin_string,      .data = &my_sighup_pid_file,        .addon = {sizeof(my_sighup_pid_file)} },
-   { .name = "hosts-file",             .set_plugin_parameter = &set_plugin_string,      .data = &my_hosts_file,             .addon = {sizeof(my_hosts_file)} },
-+#ifndef SVEN_OLA_UNBLOAT
-   { .name = "name-change-script",     .set_plugin_parameter = &set_plugin_string,      .data = &my_name_change_script,     .addon = {sizeof(my_name_change_script)} },
-   { .name = "services-change-script", .set_plugin_parameter = &set_plugin_string,      .data = &my_services_change_script, .addon = {sizeof(my_services_change_script)} },
-   { .name = "macs-change-script",     .set_plugin_parameter = &set_plugin_string,      .data = &my_macs_change_script,     .addon = {sizeof(my_macs_change_script)} },
-   { .name = "resolv-file",            .set_plugin_parameter = &set_plugin_string,      .data = &my_resolv_file,            .addon = {sizeof(my_resolv_file)} },
-+#endif /* SVEN_OLA_UNBLOAT */
-   { .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)} },
-@@ -265,7 +290,9 @@
-   { .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)} },
-+#ifndef SVEN_OLA_UNBLOAT
-   { .name = "dns-server",             .set_plugin_parameter = &set_nameservice_server, .data = &my_forwarders,             .addon = {NAME_FORWARDER} },
-+#endif /* SVEN_OLA_UNBLOAT */
-   { .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 = "mac",                    .set_plugin_parameter = &set_nameservice_name,   .data = &my_macs,                   .addon = {NAME_MACADDR} },
-@@ -381,16 +408,20 @@
+@@ -383,6 +388,7 @@
        name->ip = olsr_cnf->main_addr;
      }
    }
-+#ifndef SVEN_OLA_UNBLOAT
++
    for (name = my_forwarders; name != NULL; name = name->next) {
      if (name->ip.v4.s_addr == 0) {
        OLSR_PRINTF(2, "NAME PLUGIN: insert main addr for name %s \n", name->name);
-       name->ip = olsr_cnf->main_addr;
-     }
-   }
-+#endif /* SVEN_OLA_UNBLOAT */
-   //check if entries I want to announce myself are valid and allowed
-   my_names = remove_nonvalid_names_from_list(my_names, NAME_HOST);
-+#ifndef SVEN_OLA_UNBLOAT
-   my_forwarders = remove_nonvalid_names_from_list(my_forwarders, NAME_FORWARDER);
-+#endif /* SVEN_OLA_UNBLOAT */
-   my_services = remove_nonvalid_names_from_list(my_services, NAME_SERVICE);
-   my_macs = remove_nonvalid_names_from_list(my_macs, NAME_MACADDR);
-@@ -463,12 +494,16 @@
-   free_name_entry_list(&my_names);
-   free_name_entry_list(&my_services);
-   free_name_entry_list(&my_macs);
-+#ifndef SVEN_OLA_UNBLOAT
-   free_name_entry_list(&my_forwarders);
-+#endif /* SVEN_OLA_UNBLOAT */
-   free_all_list_entries(name_list);
-   free_all_list_entries(service_list);
-   free_all_list_entries(mac_list);
-+#ifndef SVEN_OLA_UNBLOAT
-   free_all_list_entries(forwarder_list);
-+#endif /* SVEN_OLA_UNBLOAT */
-   free_all_list_entries(latlon_list);
-   olsr_stop_timer(write_file_timer);
-@@ -511,7 +546,9 @@
- {
-   write_file_timer = NULL;
-+#ifndef SVEN_OLA_UNBLOAT
-   write_resolv_file();             /* if forwarder_table_changed */
-+#endif /* SVEN_OLA_UNBLOAT */
-   write_hosts_file();              /* if name_table_changed */
-   write_services_file(OLSR_FALSE); /* if service_table_changed */
-   write_services_file(OLSR_TRUE);  /* if mac_table_changed */
-@@ -693,11 +730,13 @@
-     pos = create_packet((struct name *)pos, my_name);
-     i++;
-   }
-+#ifndef SVEN_OLA_UNBLOAT
-   // forwarders
-   for (my_name = my_forwarders; my_name != NULL; my_name = my_name->next) {
-     pos = create_packet((struct name *)pos, my_name);
-     i++;
-   }
-+#endif /* SVEN_OLA_UNBLOAT */
-   // services
-   for (my_name = my_services; my_name != NULL; my_name = my_name->next) {
-     pos = create_packet((struct name *)pos, my_name);
-@@ -880,9 +919,11 @@
-     case NAME_HOST:
-       insert_new_name_in_list(originator, name_list, from_packet, &name_table_changed, vtime);
-       break;
-+#ifndef SVEN_OLA_UNBLOAT
-     case NAME_FORWARDER:
-       insert_new_name_in_list(originator, forwarder_list, from_packet, &forwarder_table_changed, vtime);
-       break;
-+#endif /* SVEN_OLA_UNBLOAT */
-     case NAME_SERVICE:
-       insert_new_name_in_list(originator, service_list, from_packet, &service_table_changed, vtime);
-       break;
-@@ -901,9 +942,11 @@
+@@ -903,9 +909,11 @@
      pos += sizeof(struct name);
      pos += 1 + ((ntohs(from_packet->len) - 1) | 3);
    }
@@ -363,143 +179,80 @@ diff -Nur olsrd-0.5.6-r3.orig/lib/nameservice/src/nameservice.c olsrd-0.5.6-r3/l
  }
  
  /**
-@@ -1120,6 +1163,7 @@
- #endif
-   name_table_changed = OLSR_FALSE;
+--- a/src/apm.h
++++ b/src/apm.h
+@@ -41,6 +41,7 @@
  
+ #ifndef _OLSR_APM
+ #define _OLSR_APM
 +#ifndef SVEN_OLA_UNBLOAT
-   // Executes my_name_change_script after writing the hosts file
-   if (my_name_change_script[0] != '\0') {
-     if (system(my_name_change_script) != -1) {
-@@ -1128,6 +1172,7 @@
-       OLSR_PRINTF(2, "NAME PLUGIN: WARNING! Failed to execute %s on hosts change\n", my_name_change_script);
-     }
-   }
-+#endif /* SVEN_OLA_UNBLOAT */
- }
  
- /**
-@@ -1193,6 +1238,7 @@
+ /*
+  * Interface to OS dependent power management information
+@@ -69,6 +70,7 @@
+ int apm_read(struct olsr_apm_info *);
  
-   fclose(file);
-   if (writemacs) {
-+#ifndef SVEN_OLA_UNBLOAT
-     // Executes my_macs_change_script after writing the macs file
-     if (my_macs_change_script[0] != '\0') {
-       if (system(my_macs_change_script) != -1) {
-@@ -1201,9 +1247,11 @@
-         OLSR_PRINTF(2, "NAME PLUGIN: WARNING! Failed to execute %s on mac change\n", my_macs_change_script);
-       }
-     }
+ #endif
 +#endif /* SVEN_OLA_UNBLOAT */
-     mac_table_changed = OLSR_FALSE;
-   }
-   else {
+ /*
+  * Local Variables:
+--- a/src/cfgparser/cfgfile_gen.c
++++ b/src/cfgparser/cfgfile_gen.c
+@@ -57,7 +57,9 @@
+   struct olsr_if *in = cnf->interfaces;
+   struct plugin_entry *pe = cnf->plugins;
+   struct plugin_param *pp;
 +#ifndef SVEN_OLA_UNBLOAT
-     // Executes my_services_change_script after writing the services file
-     if (my_services_change_script[0] != '\0') {
-       if (system(my_services_change_script) != -1) {
-@@ -1212,6 +1260,7 @@
-         OLSR_PRINTF(2, "NAME PLUGIN: WARNING! Failed to execute %s on service change\n", my_services_change_script);
-       }
-     }
+   struct ip_prefix_list *ie = cnf->ipc_nets;
 +#endif /* SVEN_OLA_UNBLOAT */
-     service_table_changed = OLSR_FALSE;
-   }
- }
-@@ -1222,6 +1271,7 @@
-  * fresh entries are at the beginning of the array and
-  * the best entry is at the end of the array.
-  */
+   struct olsr_lq_mult *mult;
+   char ipv6_buf[100];                  /* buffer for IPv6 inet_htop */
+@@ -133,6 +135,7 @@
+   else
+     fprintf(fd, "Willingness\t%d\n\n", cnf->willingness);
 +#ifndef SVEN_OLA_UNBLOAT
- static void
- select_best_nameserver(struct rt_entry **rt)
- {
-@@ -1253,11 +1303,13 @@
-     }
+   /* IPC */
+   fprintf(fd, "# Allow processes like the GUI front-end\n# to connect to the daemon.\n\n");
+   fprintf(fd, "IpcConnect {\n");
+@@ -149,6 +152,7 @@
    }
- }
-+#endif /* SVEN_OLA_UNBLOAT */
  
- /**
-  * write the 3 best upstream DNS servers to resolv.conf file
-  * best means the 3 with the best etx value in routing table
-  */
-+#ifndef SVEN_OLA_UNBLOAT
- void
- write_resolv_file(void)
- {
-@@ -1341,6 +1393,7 @@
-   fclose(resolv);
-   forwarder_table_changed = OLSR_FALSE;
- }
+   fprintf(fd, "}\n\n");
 +#endif /* SVEN_OLA_UNBLOAT */
  
- /**
-  * completely free a list of name_entries
-@@ -1359,9 +1412,11 @@
-     case NAME_HOST:
-       name_table_changed = OLSR_TRUE;
-       break;
-+#ifndef SVEN_OLA_UNBLOAT
-     case NAME_FORWARDER:
-       forwarder_table_changed = OLSR_TRUE;
-       break;
-+#endif /* SVEN_OLA_UNBLOAT */
-     case NAME_SERVICE:
-       service_table_changed = OLSR_TRUE;
-       break;
-@@ -1459,8 +1514,14 @@
-    * these are then used by allowed_hostname_or_ip_in_service
-    * see regexec(3) for more infos */
-   if (!is_service_wellformed(service_line)) {
-+#ifdef SVEN_OLA_UNBLOAT
-+    olsr_printf(1, "NAME PLUGIN: %s: Not 'x://y:z/|tcp|Text'\n", service_line);
-+#endif /* SVEN_OLA_UNBLOAT */
-     return OLSR_FALSE;
-   } else if (!allowed_hostname_or_ip_in_service(service_line, &(regmatch_t_service[1]))) {
-+#ifdef SVEN_OLA_UNBLOAT
-+    olsr_printf(1, "NAME PLUGIN: %s: IP/Addr not yours and not HNA\n", service_line);
+   /* Hysteresis */
+   fprintf(fd, "# Hysteresis adds more robustness to the\n# link sensing.\n# Used by default. 'yes' or 'no'\n\n");
+@@ -367,7 +371,9 @@
+   struct olsr_if *in = cnf->interfaces;
+   struct plugin_entry *pe = cnf->plugins;
+   struct plugin_param *pp;
++#ifndef SVEN_OLA_UNBLOAT
+   struct ip_prefix_list *ie = cnf->ipc_nets;
 +#endif /* SVEN_OLA_UNBLOAT */
-     return OLSR_FALSE;
-   }
+   struct olsr_lq_mult *mult;
  
-diff -Nur olsrd-0.5.6-r3.orig/Makefile.inc olsrd-0.5.6-r3/Makefile.inc
---- olsrd-0.5.6-r3.orig/Makefile.inc   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/Makefile.inc        2008-12-03 10:01:07.000000000 +0100
-@@ -204,6 +204,10 @@
- $(warning Use CPPFLAGS instead of DEFINES for -D)
- endif
+   int size = 0;
+@@ -434,6 +440,7 @@
+   else
+     WRITE_TO_BUF("Willingness\t%d\n\n", cnf->willingness);
  
-+ifeq ($(SVEN_OLA_UNBLOAT),1)
-+CPPFLAGS += -DSVEN_OLA_UNBLOAT -DNODEBUG
-+endif
-+
- TAGFILE ?=    src/TAGS
- help:
-diff -Nur olsrd-0.5.6-r3.orig/src/apm.h olsrd-0.5.6-r3/src/apm.h
---- olsrd-0.5.6-r3.orig/src/apm.h      2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/apm.h   2008-12-03 10:01:07.000000000 +0100
-@@ -41,6 +41,7 @@
- #ifndef _OLSR_APM
- #define _OLSR_APM
 +#ifndef SVEN_OLA_UNBLOAT
+   /* IPC */
+   WRITE_TO_BUF("# Allow processes like the GUI front-end\n# to connect to the daemon.\n\n");
+   WRITE_TO_BUF("IpcConnect {\n");
+@@ -449,6 +456,7 @@
+   }
  
- /*
-  * Interface to OS dependent power management information
-@@ -69,6 +70,7 @@
- int apm_read(struct olsr_apm_info *);
- #endif
+   WRITE_TO_BUF("}\n\n");
 +#endif /* SVEN_OLA_UNBLOAT */
  
- /*
-  * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/local.mk olsrd-0.5.6-r3/src/cfgparser/local.mk
---- olsrd-0.5.6-r3.orig/src/cfgparser/local.mk 2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/cfgparser/local.mk      2008-12-03 10:01:07.000000000 +0100
+   /* Hysteresis */
+   WRITE_TO_BUF("# Hysteresis adds more robustness to the\n# link sensing.\n# Used by default. 'yes' or 'no'\n\n");
+--- a/src/cfgparser/local.mk
++++ b/src/cfgparser/local.mk
 @@ -41,8 +41,13 @@
  C=$(if $(CFGDIR),$(CFGDIR)/)
  
@@ -514,9 +267,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/local.mk olsrd-0.5.6-r3/src/cfgparse
  HDRS += $(foreach file,olsrd_conf oparse,$(C)$(file).h)
  
  $(C)oscan.c: $(C)oscan.lex $(C)Makefile
-diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/olsrd_conf.c olsrd-0.5.6-r3/src/cfgparser/olsrd_conf.c
---- olsrd-0.5.6-r3.orig/src/cfgparser/olsrd_conf.c     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/cfgparser/olsrd_conf.c  2008-12-03 10:01:07.000000000 +0100
+--- a/src/cfgparser/olsrd_conf.c
++++ b/src/cfgparser/olsrd_conf.c
 @@ -81,11 +81,13 @@
    }
  
@@ -533,26 +285,26 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/olsrd_conf.c olsrd-0.5.6-r3/src/cfgp
      printf("Failed parsing \"%s\"\n", argv[1]);
 @@ -152,7 +154,9 @@
      /* set various stuff */
-     in->configured = OLSR_FALSE;
+     in->configured = false;
      in->interf = NULL;
 +#ifndef SVEN_OLA_UNBLOAT
-     in->host_emul = OLSR_FALSE;
+     in->host_emul = false;
 +#endif /* SVEN_OLA_UNBLOAT */
    }
    return olsr_cnf;
  }
-@@ -389,7 +393,9 @@
+@@ -416,7 +420,9 @@
  
    cnf->debug_level = DEF_DEBUGLVL;
-   cnf->no_fork = OLSR_FALSE;
+   cnf->no_fork = false;
 +#ifndef SVEN_OLA_UNBLOAT
-   cnf->host_emul = OLSR_FALSE;
+   cnf->host_emul = false;
 +#endif /* SVEN_OLA_UNBLOAT */
    cnf->ip_version = AF_INET;
    cnf->ipsize = sizeof(struct in_addr);
    cnf->maxplen = 32;
-@@ -398,7 +404,9 @@
-   cnf->rttable = 254;
+@@ -427,7 +433,9 @@
+   cnf->rtproto = DEF_RTPROTO;
    cnf->rttable_default = 0;
    cnf->willingness_auto = DEF_WILL_AUTO;
 +#ifndef SVEN_OLA_UNBLOAT
@@ -561,7 +313,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/olsrd_conf.c olsrd-0.5.6-r3/src/cfgp
    cnf->fib_metric = DEF_FIB_METRIC;
  
    cnf->use_hysteresis = DEF_USE_HYST;
-@@ -477,6 +485,7 @@
+@@ -506,6 +514,7 @@
  
  }
  
@@ -569,7 +321,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/olsrd_conf.c olsrd-0.5.6-r3/src/cfgp
  void
  olsrd_print_cnf(struct olsrd_config *cnf)
  {
-@@ -613,6 +622,7 @@
+@@ -649,6 +658,7 @@
      }
    }
  }
@@ -577,26 +329,25 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/olsrd_conf.c olsrd-0.5.6-r3/src/cfgp
  
  #if defined WIN32
  struct ioinfo {
-diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oparse.y olsrd-0.5.6-r3/src/cfgparser/oparse.y
---- olsrd-0.5.6-r3.orig/src/cfgparser/oparse.y 2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/cfgparser/oparse.y      2008-12-03 10:01:07.000000000 +0100
-@@ -176,7 +176,6 @@
- %token TOK_RTTABLE
+--- a/src/cfgparser/oparse.y
++++ b/src/cfgparser/oparse.y
+@@ -178,7 +178,6 @@
+ %token TOK_RTPROTO
  %token TOK_RTTABLE_DEFAULT
  %token TOK_WILLINGNESS
 -%token TOK_IPCCON
  %token TOK_FIBMETRIC
  %token TOK_USEHYST
  %token TOK_HYSTSCALE
-@@ -199,7 +198,6 @@
+@@ -203,7 +202,6 @@
  
  %token TOK_HOSTLABEL
  %token TOK_NETLABEL
 -%token TOK_MAXIPC
  
  %token TOK_IP4BROADCAST
- %token TOK_IP6ADDRTYPE
-@@ -258,7 +256,6 @@
+ %token TOK_IFMODE
+@@ -267,7 +265,6 @@
  
  block:      TOK_HNA4 hna4body
            | TOK_HNA6 hna6body
@@ -604,7 +355,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oparse.y olsrd-0.5.6-r3/src/cfgparse
            | ifblock ifbody
            | plblock plbody
  ;
-@@ -283,18 +280,6 @@
+@@ -292,18 +289,6 @@
           | ihna6entry
  ;
  
@@ -623,7 +374,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oparse.y olsrd-0.5.6-r3/src/cfgparse
  ifblock:   ifstart ifnicks
  ;
  
-@@ -335,77 +320,6 @@
+@@ -345,77 +330,6 @@
            | vcomment
  ;
  
@@ -701,10 +452,9 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oparse.y olsrd-0.5.6-r3/src/cfgparse
  iifweight:       TOK_IFWEIGHT TOK_INTEGER
  {
    int ifcnt = ifs_in_curr_cfg;
-diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oscan.lex olsrd-0.5.6-r3/src/cfgparser/oscan.lex
---- olsrd-0.5.6-r3.orig/src/cfgparser/oscan.lex        2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/cfgparser/oscan.lex     2008-12-03 10:01:07.000000000 +0100
-@@ -253,11 +253,6 @@
+--- a/src/cfgparser/oscan.lex
++++ b/src/cfgparser/oscan.lex
+@@ -252,11 +252,6 @@
      return TOK_NETLABEL;
  }
  
@@ -716,7 +466,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oscan.lex olsrd-0.5.6-r3/src/cfgpars
  "DebugLevel" {
      yylval = NULL;
      return TOK_DEBUGLEVEL;
-@@ -323,11 +318,6 @@
+@@ -333,11 +328,6 @@
      return TOK_WILLINGNESS;
  }
  
@@ -728,19 +478,18 @@ diff -Nur olsrd-0.5.6-r3.orig/src/cfgparser/oscan.lex olsrd-0.5.6-r3/src/cfgpars
  "FIBMetric" {
      yylval = NULL;
      return TOK_FIBMETRIC;
-diff -Nur olsrd-0.5.6-r3.orig/src/defs.h olsrd-0.5.6-r3/src/defs.h
---- olsrd-0.5.6-r3.orig/src/defs.h     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/defs.h  2008-12-03 10:01:07.000000000 +0100
-@@ -190,6 +190,8 @@
-  */
- unsigned long olsr_times(void);
+--- a/src/defs.h
++++ b/src/defs.h
+@@ -189,6 +189,8 @@
+ uint32_t olsr_times(void);
  
 +#ifndef SVEN_OLA_UNBLOAT
 +
  /*
   *IPC functions
   *These are moved to a plugin soon
-@@ -207,6 +209,7 @@
+@@ -206,6 +208,7 @@
  int ipc_output(struct olsr *);
  
  #endif
@@ -748,18 +497,17 @@ diff -Nur olsrd-0.5.6-r3.orig/src/defs.h olsrd-0.5.6-r3/src/defs.h
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/duplicate_set.c olsrd-0.5.6-r3/src/duplicate_set.c
---- olsrd-0.5.6-r3.orig/src/duplicate_set.c    2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/duplicate_set.c 2008-12-03 10:01:07.000000000 +0100
-@@ -174,6 +174,7 @@
-   return OLSR_FALSE;            /* no duplicate */
+--- a/src/duplicate_set.c
++++ b/src/duplicate_set.c
+@@ -177,6 +177,7 @@
+   return false;                 /* no duplicate */
  }
  
 +#ifndef SVEN_OLA_UNBLOAT
  void
  olsr_print_duplicate_table(void)
  {
-@@ -192,6 +193,7 @@
+@@ -195,6 +196,7 @@
    } OLSR_FOR_ALL_DUP_ENTRIES_END(entry);
  #endif
  }
@@ -767,10 +515,9 @@ diff -Nur olsrd-0.5.6-r3.orig/src/duplicate_set.c olsrd-0.5.6-r3/src/duplicate_s
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/hna_set.c olsrd-0.5.6-r3/src/hna_set.c
---- olsrd-0.5.6-r3.orig/src/hna_set.c  2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/hna_set.c       2008-12-03 10:01:07.000000000 +0100
-@@ -279,6 +279,7 @@
+--- a/src/hna_set.c
++++ b/src/hna_set.c
+@@ -280,6 +280,7 @@
   *
   *@return nada
   */
@@ -778,7 +525,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/hna_set.c olsrd-0.5.6-r3/src/hna_set.c
  void
  olsr_print_hna_set(void)
  {
-@@ -320,6 +321,7 @@
+@@ -321,6 +322,7 @@
    }
  #endif
  }
@@ -786,9 +533,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/hna_set.c olsrd-0.5.6-r3/src/hna_set.c
  
  /**
   *Process incoming HNA message.
-diff -Nur olsrd-0.5.6-r3.orig/src/interfaces.c olsrd-0.5.6-r3/src/interfaces.c
---- olsrd-0.5.6-r3.orig/src/interfaces.c       2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/interfaces.c    2008-12-03 10:01:07.000000000 +0100
+--- a/src/interfaces.c
++++ b/src/interfaces.c
 @@ -93,12 +93,16 @@
    OLSR_PRINTF(1, "\n ---- Interface configuration ---- \n\n");
    /* Run trough all interfaces immedeatly */
@@ -823,15 +569,14 @@ diff -Nur olsrd-0.5.6-r3.orig/src/interfaces.c olsrd-0.5.6-r3/src/interfaces.c
    interf_n->configured = 0;
  
 +#ifndef SVEN_OLA_UNBLOAT
-   interf_n->host_emul = hemu ? OLSR_TRUE : OLSR_FALSE;
+   interf_n->host_emul = hemu ? true : false;
 +#endif /* SVEN_OLA_UNBLOAT */
  
    strscpy(interf_n->name, name, name_size);
    interf_n->next = olsr_cnf->interfaces;
-diff -Nur olsrd-0.5.6-r3.orig/src/interfaces.h olsrd-0.5.6-r3/src/interfaces.h
---- olsrd-0.5.6-r3.orig/src/interfaces.h       2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/interfaces.h    2008-12-03 10:01:07.000000000 +0100
-@@ -196,7 +196,12 @@
+--- a/src/interfaces.h
++++ b/src/interfaces.h
+@@ -200,7 +200,12 @@
  
  struct interface *if_ifwithindex(const int if_index);
  
@@ -845,41 +590,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/interfaces.h olsrd-0.5.6-r3/src/interfaces.h
  
  int add_ifchgf(int (*f) (struct interface *, int));
  
-diff -Nur olsrd-0.5.6-r3.orig/src/ipcalc.c olsrd-0.5.6-r3/src/ipcalc.c
---- olsrd-0.5.6-r3.orig/src/ipcalc.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/ipcalc.c        2008-12-03 10:01:07.000000000 +0100
-@@ -122,6 +122,7 @@
-   return prefix;
- }
-+#ifndef SVEN_OLA_UNBLOAT
- const char *
- olsr_ip_prefix_to_string(const struct olsr_ip_prefix *prefix)
- {
-@@ -148,6 +149,7 @@
-   }
-   return rv;
- }
-+#endif /* SVEN_OLA_UNBLOAT */
- /* see if the ipaddr is in the net. That is equivalent to the fact that the net part
-  * of both are equal. So we must compare the first <prefixlen> bits.
-diff -Nur olsrd-0.5.6-r3.orig/src/ipcalc.h olsrd-0.5.6-r3/src/ipcalc.h
---- olsrd-0.5.6-r3.orig/src/ipcalc.h   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/ipcalc.h        2008-12-03 10:01:07.000000000 +0100
-@@ -146,7 +146,9 @@
-   return inet_ntop(olsr_cnf->ip_version, addr, buf->buf, sizeof(buf->buf));
- }
-+#ifndef SVEN_OLA_UNBLOAT
- const char *olsr_ip_prefix_to_string(const struct olsr_ip_prefix *prefix);
-+#endif /* SVEN_OLA_UNBLOAT */
- static INLINE const char *
- sockaddr4_to_string(struct ipaddr_str *const buf, const struct sockaddr *const addr)
-diff -Nur olsrd-0.5.6-r3.orig/src/ipc_frontend.c olsrd-0.5.6-r3/src/ipc_frontend.c
---- olsrd-0.5.6-r3.orig/src/ipc_frontend.c     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/ipc_frontend.c  2008-12-03 10:01:07.000000000 +0100
+--- a/src/ipc_frontend.c
++++ b/src/ipc_frontend.c
 @@ -46,6 +46,7 @@
   *
   */
@@ -896,9 +608,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/ipc_frontend.c olsrd-0.5.6-r3/src/ipc_frontend
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/ipc_frontend.h olsrd-0.5.6-r3/src/ipc_frontend.h
---- olsrd-0.5.6-r3.orig/src/ipc_frontend.h     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/ipc_frontend.h  2008-12-03 10:01:07.000000000 +0100
+--- a/src/ipc_frontend.h
++++ b/src/ipc_frontend.h
 @@ -48,6 +48,7 @@
  
  #ifndef _OLSR_IPC
@@ -915,10 +626,39 @@ diff -Nur olsrd-0.5.6-r3.orig/src/ipc_frontend.h olsrd-0.5.6-r3/src/ipc_frontend
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/link_set.c olsrd-0.5.6-r3/src/link_set.c
---- olsrd-0.5.6-r3.orig/src/link_set.c 2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/link_set.c      2008-12-03 10:01:07.000000000 +0100
-@@ -746,6 +746,7 @@
+--- a/src/ipcalc.c
++++ b/src/ipcalc.c
+@@ -121,6 +121,7 @@
+   return prefix;
+ }
++#ifndef SVEN_OLA_UNBLOAT
+ const char *
+ olsr_ip_prefix_to_string(const struct olsr_ip_prefix *prefix)
+ {
+@@ -147,6 +148,7 @@
+   }
+   return rv;
+ }
++#endif /* SVEN_OLA_UNBLOAT */
+ /* see if the ipaddr is in the net. That is equivalent to the fact that the net part
+  * of both are equal. So we must compare the first <prefixlen> bits.
+--- a/src/ipcalc.h
++++ b/src/ipcalc.h
+@@ -146,7 +146,9 @@
+   return inet_ntop(olsr_cnf->ip_version, addr, buf->buf, sizeof(buf->buf));
+ }
++#ifndef SVEN_OLA_UNBLOAT
+ const char *olsr_ip_prefix_to_string(const struct olsr_ip_prefix *prefix);
++#endif /* SVEN_OLA_UNBLOAT */
+ static INLINE const char *
+ sockaddr4_to_string(struct ipaddr_str *const buf, const struct sockaddr *const addr)
+--- a/src/link_set.c
++++ b/src/link_set.c
+@@ -770,6 +770,7 @@
    return ret;
  }
  
@@ -926,7 +666,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/link_set.c olsrd-0.5.6-r3/src/link_set.c
  void
  olsr_print_link_set(void)
  {
-@@ -767,6 +768,7 @@
+@@ -791,6 +792,7 @@
    } OLSR_FOR_ALL_LINK_ENTRIES_END(walker);
  #endif
  }
@@ -934,9 +674,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/link_set.c olsrd-0.5.6-r3/src/link_set.c
  
  /*
   * called for every LQ HELLO message.
-diff -Nur olsrd-0.5.6-r3.orig/src/linux/apm.c olsrd-0.5.6-r3/src/linux/apm.c
---- olsrd-0.5.6-r3.orig/src/linux/apm.c        2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/linux/apm.c     2008-12-03 10:01:07.000000000 +0100
+--- a/src/linux/apm.c
++++ b/src/linux/apm.c
 @@ -44,6 +44,7 @@
   * Acpi-Power Enlightenment epplet
   */
@@ -953,26 +692,64 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/apm.c olsrd-0.5.6-r3/src/linux/apm.c
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/linux/kernel_routes.c olsrd-0.5.6-r3/src/linux/kernel_routes.c
---- olsrd-0.5.6-r3.orig/src/linux/kernel_routes.c      2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/linux/kernel_routes.c   2008-12-03 10:01:07.000000000 +0100
-@@ -144,10 +144,12 @@
-         h = NLMSG_NEXT(h, ret);
-       }
-     }
+--- a/src/linux/kernel_routes.c
++++ b/src/linux/kernel_routes.c
+@@ -486,7 +486,11 @@
+   }
+   /* send ipc update on success */
+   if ( ( cmd != RTM_NEWRULE ) && ( cmd != RTM_DELRULE )
+-      && (flag = RT_ORIG_REQUEST) && (0 <= rt_ret && olsr_cnf->ipc_connections > 0) ) {
++      && (flag = RT_ORIG_REQUEST) && (0 <= rt_ret
 +#ifndef SVEN_OLA_UNBLOAT
-     if (0 <= ret && olsr_cnf->ipc_connections > 0) {
-       ipc_route_send_rtentry(&rt->rt_dst.prefix, &nexthop->gateway, metric, RTM_NEWROUTE == cmd,
-                              if_ifwithindex_name(nexthop->iif_index));
-     }
++      && olsr_cnf->ipc_connections > 0
 +#endif /* SVEN_OLA_UNBLOAT */
++      ) ) {
+     ipc_route_send_rtentry(&rt->rt_dst.prefix, &nexthop->gateway, metric,
+         RTM_NEWROUTE == cmd, if_ifwithindex_name(nexthop->iif_index));
    }
-   return ret;
- }
-diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
---- olsrd-0.5.6-r3.orig/src/linux/net.c        2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/linux/net.c     2008-12-03 10:01:07.000000000 +0100
-@@ -69,8 +69,10 @@
+@@ -528,7 +532,9 @@
+   int rslt;
+ #endif /* LINUX_POLICY_ROUTING */
++#ifndef SVEN_OLA_UNBLOAT
+   OLSR_PRINTF(2, "KERN: Adding %s\n", olsr_rtp_to_string(rt->rt_best));
++#endif /* SVEN_OLA_UNBLOAT */
+ #if !LINUX_POLICY_ROUTING
+   memset(&kernel_route, 0, sizeof(struct rtentry));
+@@ -604,7 +610,9 @@
+   struct in6_rtmsg kernel_route;
+   int rslt;
++#ifndef SVEN_OLA_UNBLOAT
+   OLSR_PRINTF(2, "KERN: Adding %s\n", olsr_rtp_to_string(rt->rt_best));
++#endif /* SVEN_OLA_UNBLOAT */
+   memset(&kernel_route, 0, sizeof(struct in6_rtmsg));
+@@ -658,7 +666,9 @@
+   int rslt;
+ #endif /* LINUX_POLICY_ROUTING */
++#ifndef SVEN_OLA_UNBLOAT
+   OLSR_PRINTF(2, "KERN: Deleting %s\n", olsr_rt_to_string(rt));
++#endif /* SVEN_OLA_UNBLOAT */
+ #if !LINUX_POLICY_ROUTING
+   memset(&kernel_route, 0, sizeof(struct rtentry));
+@@ -727,7 +737,9 @@
+   int rslt;
+ #endif /* LINUX_POLICY_ROUTING */
++#ifndef SVEN_OLA_UNBLOAT
+   OLSR_PRINTF(2, "KERN: Deleting %s\n", olsr_rt_to_string(rt));
++#endif /* SVEN_OLA_UNBLOAT */
+ #if !LINUX_POLICY_ROUTING
+   memset(&kernel_route, 0, sizeof(struct in6_rtmsg));
+--- a/src/linux/net.c
++++ b/src/linux/net.c
+@@ -70,8 +70,10 @@
  #define SIOCGIWRATE   0x8B21  /* get default bit rate (bps) */
  
  /* The original state of the IP forwarding proc entry */
@@ -983,7 +760,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
  
  /**
   *Bind a socket to a device
-@@ -91,6 +93,8 @@
+@@ -92,6 +94,8 @@
    return setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, dev_name, strlen(dev_name) + 1);
  }
  
@@ -992,7 +769,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
  /**
   *Enable IP forwarding.
   *Just writing "1" to the /proc/sys/net/ipv4/ip_forward
-@@ -110,6 +114,9 @@
+@@ -111,6 +115,9 @@
    const char *const procfile = version == AF_INET ? "/proc/sys/net/ipv4/ip_forward" : "/proc/sys/net/ipv6/conf/all/forwarding";
  
    if ((proc_fwd = fopen(procfile, "r")) == NULL) {
@@ -1002,7 +779,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      /* IPv4 */
      if (version == AF_INET)
        fprintf(stderr,
-@@ -122,6 +129,7 @@
+@@ -123,6 +130,7 @@
                procfile);
  
      sleep(3);
@@ -1010,7 +787,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      return 0;
    }
  
-@@ -131,9 +139,13 @@
+@@ -132,9 +140,13 @@
      OLSR_PRINTF(3, "\nIP forwarding is enabled on this system\n");
    } else {
      if ((proc_fwd = fopen(procfile, "w")) == NULL) {
@@ -1024,7 +801,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
        return 0;
      } else {
        syslog(LOG_INFO, "Writing \"1\" to %s\n", procfile);
-@@ -154,11 +166,15 @@
+@@ -155,11 +167,15 @@
      return -1;
  
    if ((proc_redirect = fopen(procfile, "r")) == NULL) {
@@ -1040,7 +817,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      return -1;
    }
    orig_global_redirect_state = fgetc(proc_redirect);
-@@ -168,9 +184,13 @@
+@@ -169,9 +185,13 @@
      return 0;
  
    if ((proc_redirect = fopen(procfile, "w")) == NULL) {
@@ -1054,7 +831,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      return 0;
    }
    syslog(LOG_INFO, "Writing \"0\" to %s", procfile);
-@@ -196,19 +216,27 @@
+@@ -197,19 +217,27 @@
    snprintf(procfile, sizeof(procfile), REDIRECT_PROC, if_name);
  
    if ((proc_redirect = fopen(procfile, "r")) == NULL) {
@@ -1082,7 +859,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      return 0;
    }
    syslog(LOG_INFO, "Writing \"0\" to %s", procfile);
-@@ -234,20 +262,28 @@
+@@ -235,20 +263,28 @@
    sprintf(procfile, SPOOF_PROC, if_name);
  
    if ((proc_spoof = fopen(procfile, "r")) == NULL) {
@@ -1111,7 +888,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      return 0;
    }
    syslog(LOG_INFO, "Writing \"0\" to %s", procfile);
-@@ -272,7 +308,11 @@
+@@ -273,7 +309,11 @@
      FILE *proc_fd;
  
      if ((proc_fd = fopen(procfile, "w")) == NULL) {
@@ -1123,7 +900,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      } else {
        syslog(LOG_INFO, "Resetting %s to %c\n", procfile, orig_fwd_state);
        fputc(orig_fwd_state, proc_fd);
-@@ -287,7 +327,11 @@
+@@ -288,7 +328,11 @@
        FILE *proc_fd;
  
        if ((proc_fd = fopen(procfile, "w")) == NULL) {
@@ -1135,7 +912,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
        } else {
          syslog(LOG_INFO, "Resetting %s to %c\n", procfile, orig_global_redirect_state);
          fputc(orig_global_redirect_state, proc_fd);
-@@ -311,7 +355,11 @@
+@@ -312,7 +356,11 @@
      snprintf(procfile, sizeof(procfile), REDIRECT_PROC, ifs->int_name);
  
      if ((proc_fd = fopen(procfile, "w")) == NULL)
@@ -1147,7 +924,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      else {
        syslog(LOG_INFO, "Resetting %s to %c\n", procfile, ifs->nic_state.redirect);
  
-@@ -324,7 +372,11 @@
+@@ -325,7 +373,11 @@
      /* Generate the procfile name */
      sprintf(procfile, SPOOF_PROC, ifs->int_name);
      if ((proc_fd = fopen(procfile, "w")) == NULL)
@@ -1159,7 +936,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
      else {
        syslog(LOG_INFO, "Resetting %s to %c\n", procfile, ifs->nic_state.spoof);
  
-@@ -372,6 +424,8 @@
+@@ -373,6 +425,8 @@
    return sock;
  }
  
@@ -1168,9 +945,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/linux/net.c olsrd-0.5.6-r3/src/linux/net.c
  /**
   *Creates a nonblocking broadcast socket.
   *@param sa sockaddr struct. Used for bind(2).
-diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin.c olsrd-0.5.6-r3/src/lq_plugin.c
---- olsrd-0.5.6-r3.orig/src/lq_plugin.c        2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/lq_plugin.c     2008-12-03 10:01:07.000000000 +0100
+--- a/src/lq_plugin.c
++++ b/src/lq_plugin.c
 @@ -67,12 +67,18 @@
  init_lq_handler_tree(void)
  {
@@ -1190,7 +966,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin.c olsrd-0.5.6-r3/src/lq_plugin.c
  }
  
  /*
-@@ -417,7 +423,11 @@
+@@ -385,7 +391,11 @@
   * @return pointer to hello_neighbor
   */
  struct hello_neighbor *
@@ -1202,7 +978,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin.c olsrd-0.5.6-r3/src/lq_plugin.c
  {
    struct hello_neighbor *h;
  
-@@ -439,7 +449,11 @@
+@@ -407,7 +417,11 @@
   * @return pointer to tc_mpr_addr
   */
  struct tc_mpr_addr *
@@ -1214,7 +990,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin.c olsrd-0.5.6-r3/src/lq_plugin.c
  {
    struct tc_mpr_addr *t;
  
-@@ -461,7 +475,11 @@
+@@ -429,7 +443,11 @@
   * @return pointer to lq_hello_neighbor
   */
  struct lq_hello_neighbor *
@@ -1226,7 +1002,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin.c olsrd-0.5.6-r3/src/lq_plugin.c
  {
    struct lq_hello_neighbor *h;
  
-@@ -483,7 +501,11 @@
+@@ -451,7 +469,11 @@
   * @return pointer to link_entry
   */
  struct link_entry *
@@ -1238,9 +1014,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin.c olsrd-0.5.6-r3/src/lq_plugin.c
  {
    struct link_entry *h;
  
-diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.c olsrd-0.5.6-r3/src/lq_plugin_default_float.c
---- olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.c  2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/lq_plugin_default_float.c       2008-12-03 10:01:07.000000000 +0100
+--- a/src/lq_plugin_default_float.c
++++ b/src/lq_plugin_default_float.c
 @@ -39,6 +39,7 @@
   *
   */
@@ -1249,7 +1024,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.c olsrd-0.5.6-r3/src/l
  #include "tc_set.h"
  #include "link_set.h"
  #include "olsr_spf.h"
-@@ -223,6 +224,7 @@
+@@ -228,6 +229,7 @@
  
    return buffer->buf;
  }
@@ -1257,9 +1032,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.c olsrd-0.5.6-r3/src/l
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.h olsrd-0.5.6-r3/src/lq_plugin_default_float.h
---- olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.h  2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/lq_plugin_default_float.h       2008-12-03 10:01:07.000000000 +0100
+--- a/src/lq_plugin_default_float.h
++++ b/src/lq_plugin_default_float.h
 @@ -39,6 +39,7 @@
   *
   */
@@ -1268,7 +1042,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.h olsrd-0.5.6-r3/src/l
  #ifndef LQ_PLUGIN_DEFAULT_H_
  #define LQ_PLUGIN_DEFAULT_H_
  
-@@ -77,6 +78,7 @@
+@@ -57,6 +58,7 @@
  extern struct lq_handler lq_etx_float_handler;
  
  #endif /*LQ_PLUGIN_DEFAULT_H_ */
@@ -1276,9 +1050,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_float.h olsrd-0.5.6-r3/src/l
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.c olsrd-0.5.6-r3/src/lq_plugin_default_fpm.c
---- olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.c    2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/lq_plugin_default_fpm.c 2008-12-03 10:01:07.000000000 +0100
+--- a/src/lq_plugin_default_fpm.c
++++ b/src/lq_plugin_default_fpm.c
 @@ -39,6 +39,7 @@
   *
   */
@@ -1287,7 +1060,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.c olsrd-0.5.6-r3/src/lq_
  #include "tc_set.h"
  #include "link_set.h"
  #include "lq_plugin.h"
-@@ -235,6 +236,7 @@
+@@ -239,6 +240,7 @@
    snprintf(buffer->buf, sizeof(buffer->buf), "%.3f", (float)(cost) / LQ_FPM_LINKCOST_MULTIPLIER);
    return buffer->buf;
  }
@@ -1295,9 +1068,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.c olsrd-0.5.6-r3/src/lq_
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.h olsrd-0.5.6-r3/src/lq_plugin_default_fpm.h
---- olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.h    2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/lq_plugin_default_fpm.h 2008-12-03 10:01:07.000000000 +0100
+--- a/src/lq_plugin_default_fpm.h
++++ b/src/lq_plugin_default_fpm.h
 @@ -39,6 +39,7 @@
   *
   */
@@ -1306,7 +1078,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.h olsrd-0.5.6-r3/src/lq_
  #ifndef LQ_ETX_FPM_
  #define LQ_ETX_FPM_
  
-@@ -83,6 +84,7 @@
+@@ -61,6 +62,7 @@
  extern struct lq_handler lq_etx_fpm_handler;
  
  #endif /*LQ_ETX_FPM_ */
@@ -1314,10 +1086,9 @@ diff -Nur olsrd-0.5.6-r3.orig/src/lq_plugin_default_fpm.h olsrd-0.5.6-r3/src/lq_
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
---- olsrd-0.5.6-r3.orig/src/main.c     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/main.c  2008-12-03 10:01:07.000000000 +0100
-@@ -243,13 +243,17 @@
+--- a/src/main.c
++++ b/src/main.c
+@@ -289,13 +289,17 @@
    /*
     * Print configuration
     */
@@ -1335,7 +1106,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
  
    /*
     * socket for ioctl calls
-@@ -285,7 +289,9 @@
+@@ -331,7 +335,9 @@
    /*
     *enable ip forwarding on host
     */
@@ -1345,7 +1116,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
  
    /* Initialize parser */
    olsr_init_parser();
-@@ -303,6 +309,7 @@
+@@ -349,6 +355,7 @@
     *Set up willingness/APM
     */
    if (olsr_cnf->willingness_auto) {
@@ -1353,7 +1124,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
      if (apm_init() < 0) {
        OLSR_PRINTF(1, "Could not read APM info - setting default willingness(%d)\n", WILL_DEFAULT);
  
-@@ -311,10 +318,13 @@
+@@ -359,10 +366,13 @@
        olsr_cnf->willingness_auto = 0;
        olsr_cnf->willingness = WILL_DEFAULT;
      } else {
@@ -1367,7 +1138,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
    }
  
    /* Initialize net */
-@@ -342,9 +352,11 @@
+@@ -392,9 +402,11 @@
  
    /* Initialize the IPC socket */
  
@@ -1379,7 +1150,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
    /* Initialisation of different tables to be used. */
    olsr_init_tables();
  
-@@ -450,9 +462,11 @@
+@@ -533,9 +545,11 @@
    OLSR_PRINTF(1, "Closing sockets...\n");
  
    /* front-end IPC socket */
@@ -1391,7 +1162,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
  
    /* OLSR sockets */
    for (ifn = ifnet; ifn; ifn = ifn->int_next)
-@@ -462,7 +476,9 @@
+@@ -545,7 +559,9 @@
    olsr_close_plugins();
  
    /* Reset network settings */
@@ -1401,26 +1172,26 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
  
    /* ioctl socket */
    close(olsr_cnf->ioctl_s);
-@@ -498,7 +514,11 @@
-           "usage: olsrd [-f <configfile>] [ -i interface1 interface2 ... ]\n"
-           "  [-d <debug_level>] [-ipv6] [-multi <IPv6 multicast address>]\n"
-           "  [-lql <LQ level>] [-lqw <LQ winsize>] [-lqnt <nat threshold>]\n"
+@@ -585,7 +601,11 @@
+         "usage: olsrd [-f <configfile>] [ -i interface1 interface2 ... ]\n"
+         "  [-d <debug_level>] [-ipv6] [-multi <IPv6 multicast address>]\n"
+         "  [-lql <LQ level>] [-lqw <LQ winsize>] [-lqnt <nat threshold>]\n"
 +#ifdef SVEN_OLA_UNBLOAT
-+          "  [-bcast <broadcastaddr>] [-delgw] (Note: no -ipc,-dispin,-dispout)\n"
-+#else /* SVEN_OLA_UNBLOAT */
-           "  [-bcast <broadcastaddr>] [-ipc] [-dispin] [-dispout] [-delgw]\n"
++        "  [-bcast <broadcastaddr>] [-delgw] (Note: no -ipc,-dispin,-dispout)\n"
++#else
+         "  [-bcast <broadcastaddr>] [-ipc] [-dispin] [-dispout] [-delgw]\n"
 +#endif /* SVEN_OLA_UNBLOAT */
-           "  [-hint <hello interval (secs)>] [-tcint <tc interval (secs)>]\n"
-           "  [-midint <mid interval (secs)>] [-hnaint <hna interval (secs)>]\n"
-           "  [-T <Polling Rate (secs)>] [-nofork] [-hemu <ip_address>]\n" "  [-lql <LQ level>] [-lqa <LQ aging factor>]\n");
-@@ -662,12 +682,20 @@
+         "  [-hint <hello interval (secs)>] [-tcint <tc interval (secs)>]\n"
+         "  [-midint <mid interval (secs)>] [-hnaint <hna interval (secs)>]\n"
+         "  [-T <Polling Rate (secs)>] [-nofork] [-hemu <ip_address>]\n" "  [-lql <LQ level>] [-lqa <LQ aging factor>]\n");
+@@ -749,12 +769,20 @@
          olsr_exit(__func__, EXIT_FAILURE);
        }
        printf("Queuing if %s\n", *argv);
 +#ifdef SVEN_OLA_UNBLOAT
 +      queue_if(*argv);
 +#else /* SVEN_OLA_UNBLOAT */
-       queue_if(*argv, OLSR_FALSE);
+       queue_if(*argv, false);
 +#endif /* SVEN_OLA_UNBLOAT */
  
        while ((argc - 1) && (argv[1][0] != '-')) {
@@ -1429,12 +1200,12 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
 +#ifdef SVEN_OLA_UNBLOAT
 +        queue_if(*argv);
 +#else /* SVEN_OLA_UNBLOAT */
-         queue_if(*argv, OLSR_FALSE);
+         queue_if(*argv, false);
 +#endif /* SVEN_OLA_UNBLOAT */
        }
  
        continue;
-@@ -729,7 +757,7 @@
+@@ -817,7 +845,7 @@
        sscanf(*argv, "%f", &cnf->pollrate);
        continue;
      }
@@ -1443,7 +1214,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
      /*
       * Should we display the contents of packages beeing sent?
       */
-@@ -753,6 +781,7 @@
+@@ -841,6 +869,7 @@
        cnf->ipc_connections = 1;
        continue;
      }
@@ -1451,7 +1222,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
  
      /*
       * IPv6 multicast addr
-@@ -770,7 +799,7 @@
+@@ -858,7 +887,7 @@
  
        continue;
      }
@@ -1460,7 +1231,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
      /*
       * Host emulation
       */
-@@ -798,6 +827,7 @@
+@@ -886,6 +915,7 @@
  
        continue;
      }
@@ -1468,9 +1239,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/main.c olsrd-0.5.6-r3/src/main.c
  
      /*
       * Delete possible default GWs
-diff -Nur olsrd-0.5.6-r3.orig/src/neighbor_table.c olsrd-0.5.6-r3/src/neighbor_table.c
---- olsrd-0.5.6-r3.orig/src/neighbor_table.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/neighbor_table.c        2008-12-03 10:01:07.000000000 +0100
+--- a/src/neighbor_table.c
++++ b/src/neighbor_table.c
 @@ -362,6 +362,7 @@
   *
   *@return nada
@@ -1487,9 +1257,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/neighbor_table.c olsrd-0.5.6-r3/src/neighbor_t
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/net_olsr.c olsrd-0.5.6-r3/src/net_olsr.c
---- olsrd-0.5.6-r3.orig/src/net_olsr.c 2008-12-03 10:01:07.000000000 +0100
-+++ olsrd-0.5.6-r3/src/net_olsr.c      2008-12-03 10:01:07.000000000 +0100
+--- a/src/net_olsr.c
++++ b/src/net_olsr.c
 @@ -44,7 +44,9 @@
  #include "log.h"
  #include "olsr.h"
@@ -1528,10 +1297,9 @@ diff -Nur olsrd-0.5.6-r3.orig/src/net_olsr.c olsrd-0.5.6-r3/src/net_olsr.c
        retval = -1;
      }
    }
-diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
---- olsrd-0.5.6-r3.orig/src/olsr.c     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/olsr.c  2008-12-03 10:01:07.000000000 +0100
-@@ -149,7 +149,9 @@
+--- a/src/olsr.c
++++ b/src/olsr.c
+@@ -150,7 +150,9 @@
      return;
  
    if (olsr_cnf->debug_level > 0 && olsr_cnf->clear_screen && isatty(1)) {
@@ -1541,7 +1309,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
      printf("       *** %s (%s on %s) ***\n", olsrd_version, build_date, build_host);
    }
  
-@@ -165,7 +167,7 @@
+@@ -166,7 +168,7 @@
    if (changes_neighborhood || changes_topology || changes_hna) {
      olsr_calculate_routing_table();
    }
@@ -1550,7 +1318,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
    if (olsr_cnf->debug_level > 0) {
      if (olsr_cnf->debug_level > 2) {
        olsr_print_mid_set();
-@@ -184,6 +186,7 @@
+@@ -185,6 +187,7 @@
      olsr_print_tc_table();
  #endif
    }
@@ -1558,8 +1326,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
  
    for (tmp_pc_list = pcf_list; tmp_pc_list != NULL; tmp_pc_list = tmp_pc_list->next) {
      tmp_pc_list->function(changes_neighborhood, changes_topology, changes_hna);
-@@ -415,12 +418,15 @@
olsr_u8_t
+@@ -421,12 +424,15 @@
uint8_t
  olsr_calculate_willingness(void)
  {
 +#ifndef SVEN_OLA_UNBLOAT
@@ -1574,7 +1342,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
    if (apm_read(&ainfo) < 1)
      return WILL_DEFAULT;
  
-@@ -437,8 +443,12 @@
+@@ -443,8 +449,12 @@
     * 26% > juice will: 1
     */
    return (ainfo.battery_percentage / 26);
@@ -1585,9 +1353,9 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
  
 +#ifndef SVEN_OLA_UNBLOAT
  const char *
- olsr_msgtype_to_string(olsr_u8_t msgtype)
+ olsr_msgtype_to_string(uint8_t msgtype)
  {
-@@ -508,6 +518,7 @@
+@@ -514,6 +524,7 @@
    snprintf(type, sizeof(type), "UNKNOWN(%d)", status);
    return type;
  }
@@ -1595,7 +1363,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
  
  /**
   *Termination function to be called whenever a error occures
-@@ -536,6 +547,7 @@
+@@ -542,6 +553,7 @@
   *
   * @return a void pointer to the memory allocated
   */
@@ -1603,7 +1371,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
  void *
  olsr_malloc(size_t size, const char *id)
  {
-@@ -560,6 +572,7 @@
+@@ -566,6 +578,7 @@
  
    return ptr;
  }
@@ -1611,49 +1379,72 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr.c olsrd-0.5.6-r3/src/olsr.c
  
  /**
   *Wrapper for printf that prints to a specific
-diff -Nur olsrd-0.5.6-r3.orig/src/olsr_cfg.h olsrd-0.5.6-r3/src/olsr_cfg.h
---- olsrd-0.5.6-r3.orig/src/olsr_cfg.h 2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/olsr_cfg.h      2008-12-03 10:01:07.000000000 +0100
-@@ -140,8 +140,10 @@
+--- a/src/olsr.h
++++ b/src/olsr.h
+@@ -72,15 +72,21 @@
+ uint8_t olsr_calculate_willingness(void);
++#ifndef SVEN_OLA_UNBLOAT
+ const char *olsr_msgtype_to_string(uint8_t);
+ const char *olsr_link_to_string(uint8_t);
+ const char *olsr_status_to_string(uint8_t);
++#endif /* SVEN_OLA_UNBLOAT */
+ void olsr_exit(const char *, int);
++#ifdef SVEN_OLA_UNBLOAT
++#define olsr_malloc(size, msg) calloc(1, size)
++#else /* SVEN_OLA_UNBLOAT */
+ void *olsr_malloc(size_t, const char *);
++#endif /* SVEN_OLA_UNBLOAT */
+ int olsr_printf(int, const char *, ...) __attribute__ ((format(printf, 2, 3)));
+--- a/src/olsr_cfg.h
++++ b/src/olsr_cfg.h
+@@ -154,8 +154,10 @@
    char *name;
    char *config;
-   olsr_bool configured;
+   bool configured;
 +#ifndef SVEN_OLA_UNBLOAT
-   olsr_bool host_emul;
+   bool host_emul;
    union olsr_ip_addr hemu_ip;
-+#endif                                 /* SVEN_OLA_UNBLOAT */
++#endif /* SVEN_OLA_UNBLOAT */
    struct interface *interf;
    struct if_config_options *cnf;
    struct olsr_if *next;
-@@ -183,7 +185,9 @@
- struct olsrd_config {
+@@ -198,7 +200,9 @@
+   uint16_t olsrport;
    int debug_level;
-   olsr_bool no_fork;
+   bool no_fork;
 +#ifndef SVEN_OLA_UNBLOAT
-   olsr_bool host_emul;
-+#endif                                 /* SVEN_OLA_UNBLOAT */
+   bool host_emul;
++#endif /* SVEN_OLA_UNBLOAT */
    int ip_version;
-   olsr_bool allow_no_interfaces;
-   olsr_u16_t tos;
-@@ -191,13 +195,17 @@
-   olsr_u8_t rttable_default;
-   olsr_u8_t willingness;
-   olsr_bool willingness_auto;
+   bool allow_no_interfaces;
+   uint16_t tos;
+@@ -207,13 +211,17 @@
+   uint8_t rttable_default;
+   uint8_t willingness;
+   bool willingness_auto;
 +#ifndef SVEN_OLA_UNBLOAT
    int ipc_connections;
-+#endif                                 /* SVEN_OLA_UNBLOAT */
-   olsr_bool use_hysteresis;
++#endif /* SVEN_OLA_UNBLOAT */
+   bool use_hysteresis;
    olsr_fib_metric_options fib_metric;
    struct hyst_param hysteresis_param;
    struct plugin_entry *plugins;
    struct ip_prefix_list *hna_entries;
 +#ifndef SVEN_OLA_UNBLOAT
    struct ip_prefix_list *ipc_nets;
-+#endif                                 /* SVEN_OLA_UNBLOAT */
++#endif /* SVEN_OLA_UNBLOAT */
    struct olsr_if *interfaces;
    float pollrate;
    float nic_chgs_pollrate;
-@@ -257,7 +265,9 @@
+@@ -275,7 +283,9 @@
  
    void olsrd_free_cnf(struct olsrd_config *);
  
@@ -1663,34 +1454,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/olsr_cfg.h olsrd-0.5.6-r3/src/olsr_cfg.h
  
    int olsrd_write_cnf(struct olsrd_config *, const char *);
  
-diff -Nur olsrd-0.5.6-r3.orig/src/olsr.h olsrd-0.5.6-r3/src/olsr.h
---- olsrd-0.5.6-r3.orig/src/olsr.h     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/olsr.h  2008-12-03 10:01:07.000000000 +0100
-@@ -72,15 +72,21 @@
- olsr_u8_t olsr_calculate_willingness(void);
-+#ifndef SVEN_OLA_UNBLOAT
- const char *olsr_msgtype_to_string(olsr_u8_t);
- const char *olsr_link_to_string(olsr_u8_t);
- const char *olsr_status_to_string(olsr_u8_t);
-+#endif /* SVEN_OLA_UNBLOAT */
- void olsr_exit(const char *, int);
-+#ifdef SVEN_OLA_UNBLOAT
-+#define olsr_malloc(size, msg) calloc(1, size)
-+#else /* SVEN_OLA_UNBLOAT */
- void *olsr_malloc(size_t, const char *);
-+#endif /* SVEN_OLA_UNBLOAT */
- int olsr_printf(int, const char *, ...) __attribute__ ((format(printf, 2, 3)));
-diff -Nur olsrd-0.5.6-r3.orig/src/parser.c olsrd-0.5.6-r3/src/parser.c
---- olsrd-0.5.6-r3.orig/src/parser.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/parser.c        2008-12-03 10:01:07.000000000 +0100
+--- a/src/parser.c
++++ b/src/parser.c
 @@ -51,7 +51,9 @@
  #include "rebuild_packet.h"
  #include "net_os.h"
@@ -1701,7 +1466,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/parser.c olsrd-0.5.6-r3/src/parser.c
  #include "net_olsr.h"
  
  #ifdef WIN32
-@@ -280,8 +282,10 @@
+@@ -281,8 +283,10 @@
    //printf("Message from %s\n\n", olsr_ip_to_string(&buf, from_addr));
  
    /* Display packet */
@@ -1712,9 +1477,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/parser.c olsrd-0.5.6-r3/src/parser.c
  
    if (olsr_cnf->ip_version == AF_INET)
      msgsize = ntohs(m->v4.olsr_msgsize);
-diff -Nur olsrd-0.5.6-r3.orig/src/print_packet.c olsrd-0.5.6-r3/src/print_packet.c
---- olsrd-0.5.6-r3.orig/src/print_packet.c     2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/print_packet.c  2008-12-03 10:01:07.000000000 +0100
+--- a/src/print_packet.c
++++ b/src/print_packet.c
 @@ -39,6 +39,7 @@
   *
   */
@@ -1731,23 +1495,22 @@ diff -Nur olsrd-0.5.6-r3.orig/src/print_packet.c olsrd-0.5.6-r3/src/print_packet
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/process_routes.c olsrd-0.5.6-r3/src/process_routes.c
---- olsrd-0.5.6-r3.orig/src/process_routes.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/process_routes.c        2008-12-03 10:01:07.000000000 +0100
-@@ -159,6 +159,7 @@
+--- a/src/process_routes.c
++++ b/src/process_routes.c
+@@ -158,6 +158,7 @@
  static void
  olsr_delete_kernel_route(struct rt_entry *rt)
  {
 +#ifndef SVEN_OLA_UNBLOAT
    if (!olsr_cnf->host_emul) {
-     olsr_16_t error = olsr_cnf->ip_version == AF_INET ? olsr_delroute_function(rt) : olsr_delroute6_function(rt);
+     int16_t error = olsr_cnf->ip_version == AF_INET ? olsr_delroute_function(rt) : olsr_delroute6_function(rt);
  
-@@ -170,6 +171,12 @@
+@@ -169,6 +170,12 @@
        olsr_syslog(OLSR_LOG_ERR, "Delete route %s: %s", routestr, err_msg);
      }
    }
 +#else /* SVEN_OLA_UNBLOAT */
-+  olsr_16_t error = olsr_cnf->ip_version == AF_INET ? olsr_delroute_function(rt) : olsr_delroute6_function(rt);
++  int16_t error = olsr_cnf->ip_version == AF_INET ? olsr_delroute_function(rt) : olsr_delroute6_function(rt);
 +  if (0 > error) {
 +    olsr_syslog(OLSR_LOG_ERR, "Delete route: %s", strerror(errno));
 +  }
@@ -1755,20 +1518,20 @@ diff -Nur olsrd-0.5.6-r3.orig/src/process_routes.c olsrd-0.5.6-r3/src/process_ro
  }
  
  /**
-@@ -181,6 +188,7 @@
+@@ -180,6 +187,7 @@
  olsr_add_kernel_route(struct rt_entry *rt)
  {
  
 +#ifndef SVEN_OLA_UNBLOAT
    if (!olsr_cnf->host_emul) {
-     olsr_16_t error = (olsr_cnf->ip_version == AF_INET) ? olsr_addroute_function(rt) : olsr_addroute6_function(rt);
+     int16_t error = (olsr_cnf->ip_version == AF_INET) ? olsr_addroute_function(rt) : olsr_addroute6_function(rt);
  
-@@ -199,6 +207,14 @@
+@@ -198,6 +206,14 @@
        rt->rt_metric = rt->rt_best->rtp_metric;
      }
    }
 +#else /* SVEN_OLA_UNBLOAT */
-+  olsr_16_t error = olsr_cnf->ip_version == AF_INET ? olsr_addroute_function(rt) : olsr_addroute6_function(rt);
++  int16_t error = olsr_cnf->ip_version == AF_INET ? olsr_addroute_function(rt) : olsr_addroute6_function(rt);
 +  if (0 > error) {
 +    olsr_syslog(OLSR_LOG_ERR, "Add route: %s", strerror(errno));
 +  } else {
@@ -1778,18 +1541,21 @@ diff -Nur olsrd-0.5.6-r3.orig/src/process_routes.c olsrd-0.5.6-r3/src/process_ro
  }
  
  /**
-@@ -385,7 +401,7 @@
-   /* route additions */
-   olsr_add_kernel_routes(&add_kernel_list);
+@@ -348,9 +364,11 @@
+   /* route changes */
+   olsr_chg_kernel_routes(&chg_kernel_list);
  
 -#if DEBUG
++#ifndef SVEN_OLA_UNBLOAT
 +#ifdef DEBUG
    olsr_print_routing_table(&routingtree);
  #endif
++#endif /* SVEN_OLA_UNBLOAT */
  }
-diff -Nur olsrd-0.5.6-r3.orig/src/rebuild_packet.c olsrd-0.5.6-r3/src/rebuild_packet.c
---- olsrd-0.5.6-r3.orig/src/rebuild_packet.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/rebuild_packet.c        2008-12-03 10:01:07.000000000 +0100
+ /*
+--- a/src/rebuild_packet.c
++++ b/src/rebuild_packet.c
 @@ -60,7 +60,11 @@
  mid_chgestruct(struct mid_message *mmsg, const union olsr_message *m)
  {
@@ -1834,10 +1600,9 @@ diff -Nur olsrd-0.5.6-r3.orig/src/rebuild_packet.c olsrd-0.5.6-r3/src/rebuild_pa
    }
  
  }
-diff -Nur olsrd-0.5.6-r3.orig/src/routing_table.c olsrd-0.5.6-r3/src/routing_table.c
---- olsrd-0.5.6-r3.orig/src/routing_table.c    2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/routing_table.c 2008-12-03 10:01:07.000000000 +0100
-@@ -623,6 +623,7 @@
+--- a/src/routing_table.c
++++ b/src/routing_table.c
+@@ -628,6 +628,7 @@
  /**
   * format a route entry into a buffer
   */
@@ -1845,7 +1610,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/routing_table.c olsrd-0.5.6-r3/src/routing_tab
  char *
  olsr_rt_to_string(const struct rt_entry *rt)
  {
-@@ -654,11 +655,13 @@
+@@ -659,11 +660,13 @@
  
    return buff;
  }
@@ -1859,7 +1624,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/routing_table.c olsrd-0.5.6-r3/src/routing_tab
  void
  olsr_print_routing_table(struct avl_tree *tree)
  {
-@@ -692,6 +695,7 @@
+@@ -697,6 +700,7 @@
  #endif
    tree = NULL;                  /* squelch compiler warnings */
  }
@@ -1867,12 +1632,11 @@ diff -Nur olsrd-0.5.6-r3.orig/src/routing_table.c olsrd-0.5.6-r3/src/routing_tab
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/routing_table.h olsrd-0.5.6-r3/src/routing_table.h
---- olsrd-0.5.6-r3.orig/src/routing_table.h    2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/routing_table.h 2008-12-03 10:01:07.000000000 +0100
+--- a/src/routing_table.h
++++ b/src/routing_table.h
 @@ -210,9 +210,11 @@
olsr_bool olsr_cmp_rt(const struct rt_entry *, const struct rt_entry *);
olsr_u8_t olsr_fib_metric(const struct rt_metric *);
+ bool olsr_cmp_rt(const struct rt_entry *, const struct rt_entry *);
uint8_t olsr_fib_metric(const struct rt_metric *);
  
 +#ifndef SVEN_OLA_UNBLOAT
  char *olsr_rt_to_string(const struct rt_entry *);
@@ -1882,9 +1646,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/routing_table.h olsrd-0.5.6-r3/src/routing_tab
  
  const struct rt_nexthop *olsr_get_nh(const struct rt_entry *);
  
-diff -Nur olsrd-0.5.6-r3.orig/src/tc_set.c olsrd-0.5.6-r3/src/tc_set.c
---- olsrd-0.5.6-r3.orig/src/tc_set.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/tc_set.c        2008-12-03 10:01:07.000000000 +0100
+--- a/src/tc_set.c
++++ b/src/tc_set.c
 @@ -336,6 +336,7 @@
  /**
   * Format tc_edge contents into a buffer.
@@ -1901,7 +1664,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/tc_set.c olsrd-0.5.6-r3/src/tc_set.c
  
  /**
   * Wrapper for the timer callback.
-@@ -685,6 +687,7 @@
+@@ -693,6 +695,7 @@
  /**
   * Print the topology table to stdout
   */
@@ -1909,7 +1672,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/tc_set.c olsrd-0.5.6-r3/src/tc_set.c
  void
  olsr_print_tc_table(void)
  {
-@@ -710,6 +713,7 @@
+@@ -718,6 +721,7 @@
    } OLSR_FOR_ALL_TC_ENTRIES_END(tc);
  #endif
  }
@@ -1917,22 +1680,20 @@ diff -Nur olsrd-0.5.6-r3.orig/src/tc_set.c olsrd-0.5.6-r3/src/tc_set.c
  
  /*
   * calculate the border IPs of a tc edge set according to the border flags
-diff -Nur olsrd-0.5.6-r3.orig/src/tc_set.h olsrd-0.5.6-r3/src/tc_set.h
---- olsrd-0.5.6-r3.orig/src/tc_set.h   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/tc_set.h        2008-12-03 10:01:07.000000000 +0100
+--- a/src/tc_set.h
++++ b/src/tc_set.h
 @@ -157,7 +157,9 @@
  
  /* tc_edge_entry manipulation */
olsr_bool olsr_delete_outdated_tc_edges(struct tc_entry *);
+ bool olsr_delete_outdated_tc_edges(struct tc_entry *);
 +#ifndef SVEN_OLA_UNBLOAT
  char *olsr_tc_edge_to_string(struct tc_edge_entry *);
 +#endif /* SVEN_OLA_UNBLOAT */
  struct tc_edge_entry *olsr_lookup_tc_edge(struct tc_entry *, union olsr_ip_addr *);
- struct tc_edge_entry *olsr_add_tc_edge_entry(struct tc_entry *, union olsr_ip_addr *, olsr_u16_t);
+ struct tc_edge_entry *olsr_add_tc_edge_entry(struct tc_entry *, union olsr_ip_addr *, uint16_t);
  void olsr_delete_tc_entry(struct tc_entry *);
-diff -Nur olsrd-0.5.6-r3.orig/src/two_hop_neighbor_table.c olsrd-0.5.6-r3/src/two_hop_neighbor_table.c
---- olsrd-0.5.6-r3.orig/src/two_hop_neighbor_table.c   2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/two_hop_neighbor_table.c        2008-12-03 10:01:07.000000000 +0100
+--- a/src/two_hop_neighbor_table.c
++++ b/src/two_hop_neighbor_table.c
 @@ -203,6 +203,8 @@
    return NULL;
  }
@@ -1950,9 +1711,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/two_hop_neighbor_table.c olsrd-0.5.6-r3/src/tw
  
  /*
   * Local Variables:
-diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
---- olsrd-0.5.6-r3.orig/src/unix/ifnet.c       2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/unix/ifnet.c    2008-12-03 10:01:07.000000000 +0100
+--- a/src/unix/ifnet.c
++++ b/src/unix/ifnet.c
 @@ -70,6 +70,8 @@
  
  #define BUFSPACE  (127*1024)    /* max. input buffer size to request */
@@ -1996,7 +1756,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
  
    ifp = iface->interf;
  
-@@ -279,7 +287,9 @@
+@@ -278,7 +286,9 @@
    } else
      /* IP version 4 */
    {
@@ -2006,8 +1766,20 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
      /* Check interface address (IPv4) */
      if (ioctl(olsr_cnf->ioctl_s, SIOCGIFADDR, &ifr) < 0) {
        OLSR_PRINTF(1, "\tCould not get address of interface - removing it\n");
-@@ -301,7 +311,9 @@
+@@ -291,17 +301,21 @@
+     if (memcmp
+         (&((struct sockaddr_in *)(ARM_NOWARN_ALIGN)&ifp->int_addr)->sin_addr.s_addr, &((struct sockaddr_in *)(ARM_NOWARN_ALIGN)&ifr.ifr_addr)->sin_addr.s_addr,
+          olsr_cnf->ipsize) != 0) {
++#ifndef SVEN_OLA_UNBLOAT
+       /* New address */
+       OLSR_PRINTF(1, "IPv4 address changed for %s\n", ifr.ifr_name);
+       OLSR_PRINTF(1, "\tOld:%s\n", ip4_to_string(&buf, ifp->int_addr.sin_addr));
+       OLSR_PRINTF(1, "\tNew:%s\n", sockaddr4_to_string(&buf, &ifr.ifr_addr));
++#endif /* SVEN_OLA_UNBLOAT */
  
+       ifp->int_addr = *(struct sockaddr_in *)(ARM_NOWARN_ALIGN)&ifr.ifr_addr;
+       /* deactivated to prevent change of originator IP */
+ #if 0
        if (memcmp(&olsr_cnf->main_addr, &ifp->ip_addr, olsr_cnf->ipsize) == 0) {
          OLSR_PRINTF(1, "New main address: %s\n", sockaddr4_to_string(&buf, &ifr.ifr_addr));
 +#ifndef SVEN_OLA_UNBLOAT
@@ -2015,10 +1787,10 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
 +#endif /* SVEN_OLA_UNBLOAT */
          memcpy(&olsr_cnf->main_addr, &((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr, olsr_cnf->ipsize);
        }
+ #endif
+@@ -375,7 +389,9 @@
+   ifp = iface->interf;
  
-@@ -363,7 +375,9 @@
- remove_interface:
    OLSR_PRINTF(1, "Removing interface %s\n", iface->name);
 +#ifndef SVEN_OLA_UNBLOAT
    olsr_syslog(OLSR_LOG_INFO, "Removing interface %s\n", iface->name);
@@ -2026,7 +1798,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
  
    olsr_delete_link_entry_by_ip(&ifp->ip_addr);
  
-@@ -393,10 +407,14 @@
+@@ -417,10 +433,14 @@
        memset(&olsr_cnf->main_addr, 0, olsr_cnf->ipsize);
        OLSR_PRINTF(1, "No more interfaces...\n");
      } else {
@@ -2040,8 +1812,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
 +#endif /* SVEN_OLA_UNBLOAT */
      }
    }
-@@ -420,7 +438,9 @@
+ #endif
+@@ -444,13 +464,17 @@
  
    if ((ifnet == NULL) && (!olsr_cnf->allow_no_interfaces)) {
      OLSR_PRINTF(1, "No more active interfaces - exiting.\n");
@@ -2051,7 +1823,6 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
      olsr_cnf->exit_value = EXIT_FAILURE;
      kill(getpid(), SIGINT);
    }
-@@ -429,6 +449,8 @@
  
  }
  
@@ -2060,7 +1831,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
  /**
   * Initializes the special interface used in
   * host-client emulation
-@@ -578,6 +600,7 @@
+@@ -602,6 +626,7 @@
  
    return 1;
  }
@@ -2068,7 +1839,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
  
  static char basenamestr[32];
  static const char *if_basename(const char *name);
-@@ -613,8 +636,10 @@
+@@ -637,8 +662,10 @@
    int tos_bits = IPTOS_TOS(olsr_cnf->tos);
  #endif
  
@@ -2079,8 +1850,8 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
  
    memset(&ifr, 0, sizeof(struct ifreq));
    memset(&ifs, 0, sizeof(struct interface));
-@@ -721,11 +746,13 @@
-       ifs.int_broadaddr = *(struct sockaddr_in *)&ifr.ifr_broadaddr;
+@@ -745,11 +772,13 @@
+       ifs.int_broadaddr = *(struct sockaddr_in *)(ARM_NOWARN_ALIGN)&ifr.ifr_broadaddr;
      }
  
 +#ifndef SVEN_OLA_UNBLOAT
@@ -2093,7 +1864,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
  
    }
  
-@@ -755,7 +782,9 @@
+@@ -779,7 +808,9 @@
  
    OLSR_PRINTF(1, "\tMTU - IPhdr: %d\n", ifs.int_mtu);
  
@@ -2103,7 +1874,7 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
    OLSR_PRINTF(1, "\tIndex %d\n", ifs.if_index);
  
    if (olsr_cnf->ip_version == AF_INET) {
-@@ -860,10 +889,14 @@
+@@ -884,10 +915,14 @@
     */
    memset(&null_addr, 0, olsr_cnf->ipsize);
    if (ipequal(&null_addr, &olsr_cnf->main_addr)) {
@@ -2111,16 +1882,15 @@ diff -Nur olsrd-0.5.6-r3.orig/src/unix/ifnet.c olsrd-0.5.6-r3/src/unix/ifnet.c
      struct ipaddr_str buf;
 +#endif
      olsr_cnf->main_addr = ifp->ip_addr;
-     OLSR_PRINTF(1, "New main address: %s\n", olsr_ip_to_string(&buf, &olsr_cnf->main_addr));
 +#ifndef SVEN_OLA_UNBLOAT
+     OLSR_PRINTF(1, "New main address: %s\n", olsr_ip_to_string(&buf, &olsr_cnf->main_addr));
      olsr_syslog(OLSR_LOG_INFO, "New main address: %s\n", olsr_ip_to_string(&buf, &olsr_cnf->main_addr));
 +#endif /* SVEN_OLA_UNBLOAT */
    }
  
    /*
-diff -Nur olsrd-0.5.6-r3.orig/src/unix/misc.c olsrd-0.5.6-r3/src/unix/misc.c
---- olsrd-0.5.6-r3.orig/src/unix/misc.c        2008-12-02 11:50:01.000000000 +0100
-+++ olsrd-0.5.6-r3/src/unix/misc.c     2008-12-03 10:01:07.000000000 +0100
+--- a/src/unix/misc.c
++++ b/src/unix/misc.c
 @@ -44,6 +44,7 @@
  #include "misc.h"
  #include "olsr_types.h"