solved problem with adding/deleting kernel routes in vxWorks and FreeBSD
authorThomas Martin <Thomas.Martin@rohde-schwarz.com>
Thu, 8 May 2008 11:23:08 +0000 (13:23 +0200)
committerThomas Martin <Thomas.Martin@rohde-schwarz.com>
Thu, 8 May 2008 11:23:08 +0000 (13:23 +0200)
src/bsd/kernel_routes.c
src/bsd/net.c

index 6161b04..b866566 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * The olsr.org Optimized Link-State Routing daemon(olsrd)
  * Copyright (c) 2004, Thomas Lopatic (thomas@lopatic.de)
 #include "ipcalc.h"
 
 #include <net/if_dl.h>
-#include <ifaddrs.h>
+#include <net/ifaddrs.h>
+
+#ifdef _WRS_KERNEL
+#include <wrn/coreip/net/route.h>
+#include <m2Lib.h>
+#define OLSR_PID taskIdSelf ()
+#else
+#define OLSR_PID getpid ()
+#endif
 
 static unsigned int seq = 0;
 
-static int add_del_route(const struct rt_entry *rt, int add)
+/*
+ * Sends an add or delete message via the routing socket.
+ * The message consists of:
+ *  - a header i.e. struct rt_msghdr
+ *  - 0-8 socket address structures
+ */
+static int
+add_del_route(const struct rt_entry *rt, int add)
 {
-  struct rt_msghdr *rtm;
+  struct rt_msghdr *rtm;              /* message to configure a route */
+                                       /* contains data to be written to the
+                                          routing socket */
   unsigned char buff[512];
-  unsigned char *walker;
-  struct sockaddr_in sin;
-  struct sockaddr_dl *sdl;
+  unsigned char *walker;              /* points within the buffer */
+  struct sockaddr_in sin;             /* internet style sockaddr */
+  struct sockaddr_dl *sdl;            /* link level sockaddr */
   struct ifaddrs *addrs;
   struct ifaddrs *awalker;
   const struct rt_nexthop *nexthop;
-  union olsr_ip_addr mask;
-  int step, step2;
-  int len;
-  int flags;
+  union olsr_ip_addr mask;            /* netmask as ip address */
+  int sin_size, sdl_size;              /* size of addresses - e.g. destination
+                                          (payload of the message) */
+  int len;                             /* message size written to routing socket */
 
   if (add) {
-      OLSR_PRINTF(2, "KERN: Adding %s\n", olsr_rtp_to_string(rt->rt_best));
+    OLSR_PRINTF(2, "KERN: Adding %s\n", olsr_rtp_to_string(rt->rt_best));
   } else {
-      OLSR_PRINTF(2, "KERN: Deleting %s\n", olsr_rt_to_string(rt));
+    OLSR_PRINTF(2, "KERN: Deleting %s\n", olsr_rt_to_string(rt));
   }
 
-  memset(buff, 0, sizeof (buff));
-  memset(&sin, 0, sizeof (sin));
+  memset(buff, 0, sizeof(buff));
+  memset(&sin, 0, sizeof(sin));
 
-  sin.sin_len = sizeof (sin);
+  sin.sin_len = sizeof(sin);
   sin.sin_family = AF_INET;
 
-  step = 1 + ((sizeof (struct sockaddr_in) - 1) | 3);
-  step2 = 1 + ((sizeof (struct sockaddr_dl) - 1) | 3);
-
-  rtm = (struct rt_msghdr *)buff;
-
-  flags = olsr_rt_flags(rt);
+  sin_size = 1 + ((sizeof(struct sockaddr_in) - 1) | 3);
+  sdl_size = 1 + ((sizeof(struct sockaddr_dl) - 1) | 3);
 
-  // the host is directly reachable, so use cloning and a /32 net
-  // routing table entry
+  /**********************************************************************
+   *                  FILL THE ROUTING MESSAGE HEADER
+   **********************************************************************/
 
-  if ((flags & RTF_GATEWAY) == 0)
-  {
-    flags |= RTF_CLONING;
-    flags &= ~RTF_HOST;
-  }
+  /* position header to the beginning of the buffer */
+  rtm = (struct rt_msghdr *)buff;
 
   rtm->rtm_version = RTM_VERSION;
-  rtm->rtm_type = (add != 0) ? RTM_ADD : RTM_DELETE;
-  rtm->rtm_index = 0;
-  rtm->rtm_flags = flags;
-  rtm->rtm_addrs = RTA_DST | RTA_NETMASK | RTA_GATEWAY;
+  rtm->rtm_type = add ? RTM_ADD : RTM_DELETE;
+  rtm->rtm_index = 0;          /* is ignored in outgoing messages */
+  /* RTF_UP [and RTF_HOST and/or RTF_GATEWAY] */
+  rtm->rtm_flags = olsr_rt_flags(rt);
+  rtm->rtm_pid = OLSR_PID;
   rtm->rtm_seq = ++seq;
 
-  walker = buff + sizeof (struct rt_msghdr);
+  /* walk to the end of the header */
+  walker = buff + sizeof(struct rt_msghdr);
+
+  /**********************************************************************
+   *                  SET  DESTINATION OF THE ROUTE
+   **********************************************************************/
+
+  rtm->rtm_addrs = RTA_DST;    /* part of the header */
 
   sin.sin_addr = rt->rt_dst.prefix.v4;
+  OLSR_PRINTF(8, "\t- Destination of the route: %s\n", inet_ntoa(sin.sin_addr));
 
-  memcpy(walker, &sin, sizeof (sin));
-  walker += step;
+  /* change proto or tos here */
+  OLSR_PRINTF(8, "\t- Setting Protocol: 0\n");
+  ((struct sockaddr_rt *)(&sin))->srt_proto = 0;
+  OLSR_PRINTF(8, "\t- Setting TOS: 0\n");
+  ((struct sockaddr_rt *)(&sin))->srt_tos = 0;
 
-  nexthop = olsr_get_nh(rt);
-  if ((flags & RTF_GATEWAY) != 0)
-  {
-    sin.sin_addr = nexthop->gateway.v4;
+  memcpy(walker, &sin, sizeof(sin));
+  walker += sin_size;
 
-    memcpy(walker, &sin, sizeof (sin));
-    walker += step;
-  }
+  /**********************************************************************
+   *                  SET GATEWAY OF THE ROUTE
+   **********************************************************************/
 
-  // the host is directly reachable, so add the output interface's
-  // MAC address
+  if (add || (rtm->rtm_addrs & RTF_GATEWAY)) {
+    rtm->rtm_addrs |= RTA_GATEWAY;     /* part of the header */
+    nexthop = olsr_get_nh(rt);
 
-  else
-  {
-    if (getifaddrs(&addrs))
-    {
-      fprintf(stderr, "getifaddrs() failed\n");
-      return -1;
+    if ((rtm->rtm_flags & RTF_GATEWAY)) {      /* GATEWAY */
+      sin.sin_addr = nexthop->gateway.v4;
+
+      memcpy(walker, &sin, sizeof(sin));
+      walker += sin_size;
+
+      OLSR_PRINTF(8, "\t- Gateway of the route: %s\n", inet_ntoa(sin.sin_addr));
     }
+    /* NO GATEWAY - destination is directly reachable */
+    else {
+      rtm->rtm_flags |= RTF_CLONING;   /* part of the header! */
+
+      /*
+       * Host is directly reachable, so add the output interface MAC address.
+       */
+      if (getifaddrs(&addrs)) {
+       fprintf(stderr, "\ngetifaddrs() failed\n");
+       return -1;
+      }
+
+      for (awalker = addrs; awalker != NULL; awalker = awalker->ifa_next)
+       if (awalker->ifa_addr->sa_family == AF_LINK &&
+           strcmp(awalker->ifa_name,
+                  if_ifwithindex_name(nexthop->iif_index)) == 0)
+         break;
+
+      if (awalker == NULL) {
+       fprintf(stderr, "\nInterface %s not found\n",
+               if_ifwithindex_name(nexthop->iif_index));
+       freeifaddrs(addrs);
+       return -1;
+      }
+
+      /* sdl is "struct sockaddr_dl" */
+      sdl = (struct sockaddr_dl *)awalker->ifa_addr;
+#ifdef DEBUG
+      OLSR_PRINTF(8,"\t- Link layer address of the non gateway route: %s\n",
+                  LLADDR(sdl));
+#endif
 
-    for (awalker = addrs; awalker != NULL; awalker = awalker->ifa_next)
-      if (awalker->ifa_addr->sa_family == AF_LINK &&
-          strcmp(awalker->ifa_name, if_ifwithindex_name(nexthop->iif_index)) == 0)
-        break;
+      memcpy(walker, sdl, sdl->sdl_len);
+      walker += sdl_size;
 
-    if (awalker == NULL)
-    {
-      fprintf(stderr, "interface %s not found\n", if_ifwithindex_name(nexthop->iif_index));
       freeifaddrs(addrs);
-      return -1;
     }
+  } else {
+    /* Route with no gateway is deleted */
+  }
 
-    sdl = (struct sockaddr_dl *)awalker->ifa_addr;
+  /**********************************************************************
+   *                         SET  NETMASK
+   **********************************************************************/
 
-    memcpy(walker, sdl, sdl->sdl_len);
-    walker += step2;
+  if ((rtm->rtm_flags & RTF_HOST)) {
+    OLSR_PRINTF(8, "\t- No netmask needed for a host route.\n");
+  } else {                     /* NO! hoste route */
 
-    freeifaddrs(addrs);
-  }
+    rtm->rtm_addrs |= RTA_NETMASK; /* part of the header */
 
-  if (!olsr_prefix_to_netmask(&mask, rt->rt_dst.prefix_len)) {
-    return -1;
+    if (!olsr_prefix_to_netmask(&mask, rt->rt_dst.prefix_len)) {
+      return -1;
+    }
+    sin.sin_addr = mask.v4;
+
+    memcpy(walker, &sin, sizeof(sin));
+    walker += sin_size;
+
+    OLSR_PRINTF(8, "\t- Netmask of the route: %s\n", inet_ntoa(sin.sin_addr));
   }
-  sin.sin_addr = mask.v4;
 
-  memcpy(walker, &sin, sizeof (sin));
-  walker += step;
+  /**********************************************************************
+   *           WRITE CONFIGURATION MESSAGE TO THE ROUTING SOCKET
+   **********************************************************************/
 
   rtm->rtm_msglen = (unsigned short)(walker - buff);
 
   len = write(olsr_cnf->rts, buff, rtm->rtm_msglen);
+  OLSR_PRINTF(8, "\nWrote %d bytes to rts socket (FD=%d)\n", len,
+             olsr_cnf->rts);
 
-  if (len < rtm->rtm_msglen)
-    fprintf(stderr, "cannot write to routing socket: %s\n", strerror(errno));
+  if (0 != rtm->rtm_errno || len < rtm->rtm_msglen) {
+    fprintf(stderr,
+           "\nCannot write to routing socket: (rtm_errno= 0x%x) (last error message: %s)\n",
+           rtm->rtm_errno, strerror(errno));
+  }
+
+  OLSR_PRINTF(8,
+             "\nWriting the following information to routing socket (message header):"
+             "\n\trtm_msglen: %u" "\n\trtm_version: %u" "\n\trtm_type: %u"
+             "\n\trtm_index: %u" "\n\trtm_flags: 0x%x" "\n\trtm_addrs: %u"
+             "\n\trtm_pid: 0x%x" "\n\trtm_seq: %u" "\n\trtm_errno: 0x%x"
+             "\n\trtm_use %u" "\n\trtm_inits: %u\n",
+             (unsigned int)rtm->rtm_msglen, (unsigned int)rtm->rtm_version,
+             (unsigned int)rtm->rtm_type, (unsigned int)rtm->rtm_index,
+             (unsigned int)rtm->rtm_flags, (unsigned int)rtm->rtm_addrs,
+             (unsigned int)rtm->rtm_pid, (unsigned int)rtm->rtm_seq,
+             (unsigned int)rtm->rtm_errno, (unsigned int)rtm->rtm_use,
+             (unsigned int)rtm->rtm_inits);
 
   return 0;
 }
 
-int olsr_ioctl_add_route(const struct rt_entry *rt)
+int
+olsr_ioctl_add_route(const struct rt_entry *rt)
 {
   return add_del_route(rt, 1);
 }
 
-int olsr_ioctl_del_route(const struct rt_entry *rt)
+int
+olsr_ioctl_del_route(const struct rt_entry *rt)
 {
   return add_del_route(rt, 0);
 }
 
-static int add_del_route6(const struct rt_entry *rt, int add)
+static int
+add_del_route6(const struct rt_entry *rt, int add)
 {
   struct rt_msghdr *rtm;
   unsigned char buff[512];
@@ -188,22 +270,22 @@ static int add_del_route6(const struct rt_entry *rt, int add)
   int len;
 
   if (add) {
-      OLSR_PRINTF(2, "KERN: Adding %s\n", olsr_rtp_to_string(rt->rt_best));
+    OLSR_PRINTF(2, "KERN: Adding %s\n", olsr_rtp_to_string(rt->rt_best));
   } else {
-      OLSR_PRINTF(2, "KERN: Deleting %s\n", olsr_rt_to_string(rt));
+    OLSR_PRINTF(2, "KERN: Deleting %s\n", olsr_rt_to_string(rt));
   }
 
-  memset(buff, 0, sizeof (buff));
-  memset(&sin6, 0, sizeof (sin6));
-  memset(&sdl, 0, sizeof (sdl));
+  memset(buff, 0, sizeof(buff));
+  memset(&sin6, 0, sizeof(sin6));
+  memset(&sdl, 0, sizeof(sdl));
 
-  sin6.sin6_len = sizeof (sin6);
+  sin6.sin6_len = sizeof(sin6);
   sin6.sin6_family = AF_INET6;
-  sdl.sdl_len = sizeof (sdl);
+  sdl.sdl_len = sizeof(sdl);
   sdl.sdl_family = AF_LINK;
 
-  step = 1 + ((sizeof (struct sockaddr_in6) - 1) | 3);
-  step_dl = 1 + ((sizeof (struct sockaddr_dl) - 1) | 3);
+  step = 1 + ((sizeof(struct sockaddr_in6) - 1) | 3);
+  step_dl = 1 + ((sizeof(struct sockaddr_dl) - 1) | 3);
 
   rtm = (struct rt_msghdr *)buff;
   rtm->rtm_version = RTM_VERSION;
@@ -213,53 +295,54 @@ static int add_del_route6(const struct rt_entry *rt, int add)
   rtm->rtm_addrs = RTA_DST | RTA_GATEWAY;
   rtm->rtm_seq = ++seq;
 
-  walker = buff + sizeof (struct rt_msghdr);
+  walker = buff + sizeof(struct rt_msghdr);
 
-  memcpy(&sin6.sin6_addr.s6_addr, &rt->rt_dst.prefix.v6, sizeof(struct in6_addr));
+  memcpy(&sin6.sin6_addr.s6_addr, &rt->rt_dst.prefix.v6,
+        sizeof(struct in6_addr));
 
-  memcpy(walker, &sin6, sizeof (sin6));
+  memcpy(walker, &sin6, sizeof(sin6));
   walker += step;
 
   nexthop = olsr_get_nh(rt);
-  if ((rtm->rtm_flags & RTF_GATEWAY) != 0)
-  {
-    memcpy(&sin6.sin6_addr.s6_addr, &nexthop->gateway.v6, sizeof(struct in6_addr));
+  if ((rtm->rtm_flags & RTF_GATEWAY) != 0) {
+    memcpy(&sin6.sin6_addr.s6_addr, &nexthop->gateway.v6,
+          sizeof(struct in6_addr));
 
     memset(&sin6.sin6_addr.s6_addr, 0, 8);
     sin6.sin6_addr.s6_addr[0] = 0xfe;
     sin6.sin6_addr.s6_addr[1] = 0x80;
     sin6.sin6_scope_id = nexthop->iif_index;
 #ifdef __KAME__
-    *(u_int16_t *)&sin6.sin6_addr.s6_addr[2] = htons(sin6.sin6_scope_id);
+    *(u_int16_t *) & sin6.sin6_addr.s6_addr[2] = htons(sin6.sin6_scope_id);
     sin6.sin6_scope_id = 0;
 #endif
-    memcpy(walker, &sin6, sizeof (sin6));
+    memcpy(walker, &sin6, sizeof(sin6));
     walker += step;
   }
 
-  // the host is directly reachable, so add the output interface's address
+  /* the host is directly reachable, so add the output interface's address */
 
-  else
-  {
-    memcpy(&sin6.sin6_addr.s6_addr,  &rt->rt_dst.prefix.v6, sizeof(struct in6_addr));
+  else {
+    memcpy(&sin6.sin6_addr.s6_addr, &rt->rt_dst.prefix.v6,
+          sizeof(struct in6_addr));
     memset(&sin6.sin6_addr.s6_addr, 0, 8);
     sin6.sin6_addr.s6_addr[0] = 0xfe;
     sin6.sin6_addr.s6_addr[1] = 0x80;
     sin6.sin6_scope_id = nexthop->iif_index;
 #ifdef __KAME__
-    *(u_int16_t *)&sin6.sin6_addr.s6_addr[2] = htons(sin6.sin6_scope_id);
+    *(u_int16_t *) & sin6.sin6_addr.s6_addr[2] = htons(sin6.sin6_scope_id);
     sin6.sin6_scope_id = 0;
 #endif
 
-    memcpy(walker, &sin6, sizeof (sin6));
+    memcpy(walker, &sin6, sizeof(sin6));
     walker += step;
     rtm->rtm_flags |= RTF_GATEWAY;
   }
 
-  if ((rtm->rtm_flags & RTF_HOST) == 0)
-  {
-    olsr_prefix_to_netmask((union olsr_ip_addr *)&sin6.sin6_addr, rt->rt_dst.prefix_len);
-    memcpy(walker, &sin6, sizeof (sin6));
+  if ((rtm->rtm_flags & RTF_HOST) == 0) {
+    olsr_prefix_to_netmask((union olsr_ip_addr *)&sin6.sin6_addr,
+                          rt->rt_dst.prefix_len);
+    memcpy(walker, &sin6, sizeof(sin6));
     walker += step;
     rtm->rtm_addrs |= RTA_NETMASK;
   }
@@ -275,7 +358,7 @@ static int add_del_route6(const struct rt_entry *rt, int add)
     struct rt_msghdr *drtm;
     unsigned char dbuff[512];
 
-    memset(dbuff, 0, sizeof (dbuff));
+    memset(dbuff, 0, sizeof(dbuff));
     drtm = (struct rt_msghdr *)dbuff;
     drtm->rtm_version = RTM_VERSION;
     drtm->rtm_type = RTM_DELETE;
@@ -284,10 +367,10 @@ static int add_del_route6(const struct rt_entry *rt, int add)
     drtm->rtm_flags = olsr_rt_flags(rt);
     drtm->rtm_seq = ++seq;
 
-    walker = dbuff + sizeof (struct rt_msghdr);
+    walker = dbuff + sizeof(struct rt_msghdr);
     memcpy(&sin6.sin6_addr.s6_addr, &rt->rt_dst.prefix.v6,
-       sizeof(struct in6_addr));
-    memcpy(walker, &sin6, sizeof (sin6));
+          sizeof(struct in6_addr));
+    memcpy(walker, &sin6, sizeof(sin6));
     walker += step;
     drtm->rtm_msglen = (unsigned short)(walker - dbuff);
     len = write(olsr_cnf->rts, dbuff, drtm->rtm_msglen);
@@ -302,12 +385,14 @@ static int add_del_route6(const struct rt_entry *rt, int add)
   return 0;
 }
 
-int olsr_ioctl_add_route6(const struct rt_entry *rt)
+int
+olsr_ioctl_add_route6(const struct rt_entry *rt)
 {
   return add_del_route6(rt, 1);
 }
 
-int olsr_ioctl_del_route6(const struct rt_entry *rt)
+int
+olsr_ioctl_del_route6(const struct rt_entry *rt)
 {
   return add_del_route6(rt, 0);
 }
index 401b38c..7515f68 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * The olsr.org Optimized Link-State Routing daemon(olsrd)
  * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
 #include "../defs.h"
 #include "../net_os.h"
 #include "../ipcalc.h"
-#include "../parser.h" /* dnc: needed for call to packet_parser() */
+#include "../parser.h"         /* dnc: needed for call to packet_parser() */
 #include "../olsr_protocol.h"
 
-#include <sys/param.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <stdio.h>
 #include <netinet/in.h>
 #include <net/if.h>
 
+#ifdef _WRS_KERNEL
+#include <vxWorks.h>
+#include "wrn/coreip/netinet6/in6_var.h"
+#include <sockLib.h>
+#include <sys/socket.h>
+#include "wrn/coreip/net/ifaddrs.h"
+#include <selectLib.h>
+#include <logLib.h>
+#define syslog(a, b) fdprintf(a, b);
+#else
+#include <sys/param.h>
+#endif
+
+
 #ifdef __NetBSD__
 #include <net/if_ether.h>
 #endif
@@ -68,7 +82,7 @@
 #include <netinet/ip_icmp.h>
 #include <netinet/icmp_var.h>
 #include <netinet/icmp6.h>
-#include <netinet6/in6_var.h> /* For struct in6_ifreq */
+#include <netinet6/in6_var.h>  /* For struct in6_ifreq */
 #include <ifaddrs.h>
 #include <sys/uio.h>
 #include <net80211/ieee80211.h>
 #include <libnet.h>
 #endif /* SPOOF */
 
-//#define      SIOCGIFGENERIC  _IOWR('i', 58, struct ifreq)    /* generic IF get op */
-//#define SIOCGWAVELAN SIOCGIFGENERIC
+#if 0
+#define        SIOCGIFGENERIC  _IOWR('i', 58, struct ifreq)    /* generic IF get op */
+#define SIOCGWAVELAN SIOCGIFGENERIC
+#endif
 
 #include <sys/sysctl.h>
 
@@ -107,13 +123,14 @@ static int ignore_redir;
 static int send_redir;
 static int gateway;
 
-static int set_sysctl_int(const char *name, int new)
+static int
+set_sysctl_int(const char *name, int new)
 {
   int old;
 #if __MacOSX__ || __OpenBSD__
-  size_t len = sizeof (old);
+  size_t len = sizeof(old);
 #else
-  unsigned int len = sizeof (old);
+  unsigned int len = sizeof(old);
 #endif
 
 #ifdef __OpenBSD__
@@ -125,50 +142,45 @@ static int set_sysctl_int(const char *name, int new)
   mib[2] = IPPROTO_IP;
   mib[3] = IPCTL_FORWARDING;
 
-  if (!strcmp(name, "net.inet6.ip6.forwarding"))
-  {
+  if (!strcmp(name, "net.inet6.ip6.forwarding")) {
     mib[1] = PF_INET6;
     mib[2] = IPPROTO_IPV6;
-  }
-  else if (!strcmp(name, "net.inet.icmp.rediraccept"))
-  {
+  } else if (!strcmp(name, "net.inet.icmp.rediraccept")) {
     mib[2] = IPPROTO_ICMP;
     mib[3] = ICMPCTL_REDIRACCEPT;
-  }
-  else if (!strcmp(name, "net.inet6.icmp6.rediraccept"))
-  {
+  } else if (!strcmp(name, "net.inet6.icmp6.rediraccept")) {
     mib[2] = IPPROTO_ICMPV6;
     mib[3] = ICMPV6CTL_REDIRACCEPT;
-  }
-  else if (!strcmp(name, "net.inet.ip.redirect"))
-  {
+  } else if (!strcmp(name, "net.inet.ip.redirect")) {
     mib[3] = IPCTL_SENDREDIRECTS;
-  }
-  else if (!strcmp(name, "net.inet6.ip6.redirect"))
-  {
+  } else if (!strcmp(name, "net.inet6.ip6.redirect")) {
     mib[1] = PF_INET6;
     mib[2] = IPPROTO_IPV6;
     mib[3] = IPCTL_SENDREDIRECTS;
   }
 
-  if (sysctl(mib, 4, &old, &len, &new, sizeof (new)) < 0)
+  if (sysctl(mib, 4, &old, &len, &new, sizeof(new)) < 0)
     return -1;
 #else
 
-  if (sysctlbyname(name, &old, &len, &new, sizeof (new)) < 0)
+  if (sysctlbyname((char *)name, &old, &len, &new, sizeof(new)) < 0)
     return -1;
 #endif
 
   return old;
 }
 
-int enable_ip_forwarding(int version)
+int
+enable_ip_forwarding(int version)
 {
-  const char *name = version == AF_INET ? "net.inet.ip.forwarding" : "net.inet6.ip6.forwarding";
+  const char *name =
+    version == AF_INET ? "net.inet.ip.forwarding" : "net.inet6.ip6.forwarding";
 
   gateway = set_sysctl_int(name, 1);
   if (gateway < 0) {
-    fprintf(stderr, "Cannot enable IP forwarding. Please enable IP forwarding manually. Continuing in 3 seconds...\n");
+    fprintf(stderr,
+           "Cannot enable IP forwarding. Please enable IP forwarding manually."
+            " Continuing in 3 seconds...\n");
     sleep(3);
   }
 
@@ -180,7 +192,7 @@ disable_redirects_global(int version)
 {
   const char *name;
 
-  // do not accept ICMP redirects
+  /* do not accept ICMP redirects */
 
 #ifdef __OpenBSD__
   if (version == AF_INET)
@@ -190,13 +202,10 @@ disable_redirects_global(int version)
 
   ignore_redir = set_sysctl_int(name, 0);
 #elif defined __FreeBSD__ || defined __MacOSX__
-  if (version == AF_INET)
-  {
+  if (version == AF_INET) {
     name = "net.inet.icmp.drop_redirect";
     ignore_redir = set_sysctl_int(name, 1);
-  }
-  else
-  {
+  } else {
     name = "net.inet6.icmp6.rediraccept";
     ignore_redir = set_sysctl_int(name, 0);
   }
@@ -209,13 +218,14 @@ disable_redirects_global(int version)
   ignore_redir = set_sysctl_int(name, 1);
 #endif
 
-  if (ignore_redir < 0)
-    {
-      fprintf(stderr, "Cannot disable incoming ICMP redirect messages. Please disable them manually. Continuing in 3 seconds...\n");
-      sleep(3);
-    }
+  if (ignore_redir < 0) {
+    fprintf(stderr,
+           "Cannot disable incoming ICMP redirect messages. "
+            "Please disable them manually. Continuing in 3 seconds...\n");
+    sleep(3);
+  }
 
-  // do not send ICMP redirects
+  /* do not send ICMP redirects */
 
   if (version == AF_INET)
     name = "net.inet.ip.redirect";
@@ -223,48 +233,66 @@ disable_redirects_global(int version)
     name = "net.inet6.ip6.redirect";
 
   send_redir = set_sysctl_int(name, 0);
-  if (send_redir < 0)
-    {
-      fprintf(stderr, "Cannot disable outgoing ICMP redirect messages. Please disable them manually. Continuing in 3 seconds...\n");
-      sleep(3);
-    }
+  if (send_redir < 0) {
+    fprintf(stderr,
+           "Cannot disable outgoing ICMP redirect messages. "
+            "Please disable them manually. Continuing in 3 seconds...\n");
+    sleep(3);
+  }
 
   return 1;
 }
 
-int disable_redirects(const char *if_name __attribute__((unused)), struct interface *iface __attribute__((unused)), int version __attribute__((unused)))
+int
+disable_redirects(const char *if_name
+                 __attribute__ ((unused)), struct interface *iface
+                 __attribute__ ((unused)), int version
+                 __attribute__ ((unused)))
 {
-  // this function gets called for each interface olsrd uses; however,
-  // FreeBSD can only globally control ICMP redirects, and not on a
-  // per-interface basis; hence, only disable ICMP redirects in the "global"
-  // function
+  /*
+   *  this function gets called for each interface olsrd uses; however,
+   * FreeBSD can only globally control ICMP redirects, and not on a
+   * per-interface basis; hence, only disable ICMP redirects in the "global"
+   * function
+   */
   return 1;
 }
 
-int deactivate_spoof(const char *if_name __attribute__((unused)), struct interface *iface __attribute__((unused)), int version __attribute__((unused)))
+int
+deactivate_spoof(const char *if_name
+                __attribute__ ((unused)), struct interface *iface
+                __attribute__ ((unused)), int version __attribute__ ((unused)))
 {
   return 1;
 }
 
-int restore_settings(int version)
+int
+restore_settings(int version)
 {
-  // reset IP forwarding
-  const char *name = version == AF_INET ? "net.inet.ip.forwarding" : "net.inet6.ip6.forwarding";
+  /* reset IP forwarding */
+  const char *name =
+    version == AF_INET ? "net.inet.ip.forwarding" : "net.inet6.ip6.forwarding";
 
   set_sysctl_int(name, gateway);
 
-  // reset incoming ICMP redirects
+  /* reset incoming ICMP redirects */
 
 #ifdef __OpenBSD__
-  name = version == AF_INET ? "net.inet.icmp.rediraccept"   : "net.inet6.icmp6.rediraccept";
+  name =
+    version ==
+    AF_INET ? "net.inet.icmp.rediraccept" : "net.inet6.icmp6.rediraccept";
 #elif defined __FreeBSD__ || defined __MacOSX__
-  name = version == AF_INET ? "net.inet.icmp.drop_redirect" : "net.inet6.icmp6.rediraccept";
+  name =
+    version ==
+    AF_INET ? "net.inet.icmp.drop_redirect" : "net.inet6.icmp6.rediraccept";
 #else
-  name = version == AF_INET ? "net.inet.icmp.drop_redirect" : "net.inet6.icmp6.drop_redirect";
+  name =
+    version ==
+    AF_INET ? "net.inet.icmp.drop_redirect" : "net.inet6.icmp6.drop_redirect";
 #endif
   set_sysctl_int(name, ignore_redir);
 
-  // reset outgoing ICMP redirects
+  /* reset outgoing ICMP redirects */
   name = version == AF_INET ? "net.inet.ip.redirect" : "net.inet6.ip6.redirect";
   set_sysctl_int(name, send_redir);
   return 1;
@@ -284,187 +312,169 @@ gethemusocket(struct sockaddr_in *pin)
   OLSR_PRINTF(1, "       Connecting to switch daemon port 10150...");
 
 
-  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) 
-    {
-      perror("hcsocket");
-      syslog(LOG_ERR, "hcsocket: %m");
-      return (-1);
-    }
+  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
+    perror("hcsocket");
+    syslog(LOG_ERR, "hcsocket: %m");
+    return (-1);
+  }
 
-  if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) 
-    {
-      perror("SO_REUSEADDR failed");
-      close(sock);
-      return (-1);
-    }
+  if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0) {
+    perror("SO_REUSEADDR failed");
+    close(sock);
+    return (-1);
+  }
   /* connect to PORT on HOST */
-  if (connect(sock,(struct sockaddr *) pin, sizeof(*pin)) < 0) 
-    {
-      printf("FAILED\n");
-      fprintf(stderr, "Error connecting %d - %s\n", errno, strerror(errno));
-      printf("connection refused\n");
-      close(sock);
-      return (-1);
-    }
+  if (connect(sock, (struct sockaddr *)pin, sizeof(*pin)) < 0) {
+    printf("FAILED\n");
+    fprintf(stderr, "Error connecting %d - %s\n", errno, strerror(errno));
+    printf("connection refused\n");
+    close(sock);
+    return (-1);
+  }
 
   printf("OK\n");
 
-  /* Keep TCP socket blocking */  
+  /* Keep TCP socket blocking */
   return (sock);
 }
 
 
 int
-getsocket(int bufspace, char *int_name __attribute__((unused)))
+getsocket(int bufspace, char *int_name __attribute__ ((unused)))
 {
   struct sockaddr_in sin;
   int on;
   int sock = socket(AF_INET, SOCK_DGRAM, 0);
-  if (sock < 0) 
-    {
-      perror("socket");
-      syslog(LOG_ERR, "socket: %m");
-      return -1;
-    }
+  if (sock < 0) {
+    perror("socket");
+    syslog(LOG_ERR, "socket: %m");
+    return -1;
+  }
 
   on = 1;
-  if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof (on)) < 0)
-    {
-      perror("setsockopt");
-      syslog(LOG_ERR, "setsockopt SO_BROADCAST: %m");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&on, sizeof(on)) < 0) {
+    perror("setsockopt");
+    syslog(LOG_ERR, "setsockopt SO_BROADCAST: %m");
+    close(sock);
+    return -1;
+  }
 
-  if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) 
-    {
-      perror("SO_REUSEADDR failed");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0) {
+    perror("SO_REUSEADDR failed");
+    close(sock);
+    return -1;
+  }
 
-  if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) 
-    {
-      perror("SO_REUSEPORT failed");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char *)&on, sizeof(on)) < 0) {
+    perror("SO_REUSEPORT failed");
+    close(sock);
+    return -1;
+  }
 
-  if (setsockopt(sock, IPPROTO_IP, IP_RECVIF, &on, sizeof(on)) < 0) 
-    {
-      perror("IP_RECVIF failed");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, IPPROTO_IP, IP_RECVIF, (char *)&on, sizeof(on)) < 0) {
+    perror("IP_RECVIF failed");
+    close(sock);
+    return -1;
+  }
 
-  for (on = bufspace; ; on -= 1024) 
-    {
-      if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &on, sizeof (on)) == 0)
-       break;
-      if (on <= 8*1024) 
-       {
-         perror("setsockopt");
-         syslog(LOG_ERR, "setsockopt SO_RCVBUF: %m");
-         break;
-       }
+  for (on = bufspace;; on -= 1024) {
+    if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&on, sizeof(on)) == 0)
+      break;
+    if (on <= 8 * 1024) {
+      perror("setsockopt");
+      syslog(LOG_ERR, "setsockopt SO_RCVBUF: %m");
+      break;
     }
+  }
 
-  memset(&sin, 0, sizeof (sin));
+  memset(&sin, 0, sizeof(sin));
   sin.sin_family = AF_INET;
   sin.sin_port = htons(OLSRPORT);
   sin.sin_addr.s_addr = INADDR_ANY;
-  if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) 
-    {
-      perror("bind");
-      syslog(LOG_ERR, "bind: %m");
-      close(sock);
-      return -1;
-    }
+  if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+    perror("bind");
+    syslog(LOG_ERR, "bind: %m");
+    close(sock);
+    return -1;
+  }
 
   on = fcntl(sock, F_GETFL);
   if (on == -1) {
-      syslog(LOG_ERR, "fcntl (F_GETFL): %m\n");
+    syslog(LOG_ERR, "fcntl (F_GETFL): %m\n");
   } else {
-      if (fcntl(sock, F_SETFL, on|O_NONBLOCK) == -1) {
-          syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
-      }
+    if (fcntl(sock, F_SETFL, on | O_NONBLOCK) == -1) {
+      syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
+    }
   }
   return (sock);
 }
 
-int getsocket6(int bufspace, char *int_name __attribute__((unused)))
+int
+getsocket6(int bufspace, char *int_name __attribute__ ((unused)))
 {
   struct sockaddr_in6 sin;
   int on;
   int sock = socket(AF_INET6, SOCK_DGRAM, 0);
 
-  if (sock < 0) 
-    {
-      perror("socket");
-      syslog(LOG_ERR, "socket: %m");
-      return -1;
-    }
-
-  for (on = bufspace; ; on -= 1024) 
-    {
-      if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &on, sizeof (on)) == 0)
-          break;
-      if (on <= 8*1024) 
-       {
-         perror("setsockopt");
-         syslog(LOG_ERR, "setsockopt SO_RCVBUF: %m");
-         break;
-       }
-    }
+  if (sock < 0) {
+    perror("socket");
+    syslog(LOG_ERR, "socket: %m");
+    return -1;
+  }
 
-  if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) 
-    {
-      perror("SO_REUSEADDR failed");
-      close(sock);
-      return -1;
+  for (on = bufspace;; on -= 1024) {
+    if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&on, sizeof(on)) == 0)
+      break;
+    if (on <= 8 * 1024) {
+      perror("setsockopt");
+      syslog(LOG_ERR, "setsockopt SO_RCVBUF: %m");
+      break;
     }
+  }
 
-  if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) 
-    {
-      perror("SO_REUSEPORT failed");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0) {
+    perror("SO_REUSEADDR failed");
+    close(sock);
+    return -1;
+  }
 
+  if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char *)&on, sizeof(on)) < 0) {
+    perror("SO_REUSEPORT failed");
+    close(sock);
+    return -1;
+  }
 #ifdef IPV6_RECVPKTINFO
-  if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)) < 0)
-    {
-      perror("IPV6_RECVPKTINFO failed");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, (char *)&on, sizeof(on))
+      < 0) {
+    perror("IPV6_RECVPKTINFO failed");
+    close(sock);
+    return -1;
+  }
 #elif defined IPV6_PKTINFO
-  if (setsockopt(sock, IPPROTO_IPV6, IPV6_PKTINFO, &on, sizeof(on)) < 0)
-    {
-      perror("IPV6_PKTINFO failed");
-      close(sock);
-      return -1;
-    }
+  if (setsockopt(sock, IPPROTO_IPV6, IPV6_PKTINFO, (char *)&on, sizeof(on)) < 0) {
+    perror("IPV6_PKTINFO failed");
+    close(sock);
+    return -1;
+  }
 #endif
 
   memset(&sin, 0, sizeof(sin));
   sin.sin6_family = AF_INET6;
   sin.sin6_port = htons(OLSRPORT);
-  if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
-    {
-      perror("bind");
-      syslog(LOG_ERR, "bind: %m");
-      close(sock);
-      return -1;
-    }
+  if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+    perror("bind");
+    syslog(LOG_ERR, "bind: %m");
+    close(sock);
+    return -1;
+  }
 
   on = fcntl(sock, F_GETFL);
   if (on == -1) {
-      syslog(LOG_ERR, "fcntl (F_GETFL): %m\n");
+    syslog(LOG_ERR, "fcntl (F_GETFL): %m\n");
   } else {
-      if (fcntl(sock, F_SETFL, on|O_NONBLOCK) == -1) {
-          syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
-      }
+    if (fcntl(sock, F_SETFL, on | O_NONBLOCK) == -1) {
+      syslog(LOG_ERR, "fcntl O_NONBLOCK: %m\n");
+    }
   }
   return sock;
 }
@@ -481,40 +491,39 @@ join_mcast(struct interface *ifs, int sock)
   mcastreq.ipv6mr_multiaddr = ifs->int6_multaddr.sin6_addr;
   mcastreq.ipv6mr_interface = ifs->if_index;
 
-  OLSR_PRINTF(3, "Interface %s joining multicast %s...", ifs->int_name, olsr_ip_to_string(&addrstr, (union olsr_ip_addr *)&ifs->int6_multaddr.sin6_addr));
+  OLSR_PRINTF(3, "Interface %s joining multicast %s...", ifs->int_name,
+             olsr_ip_to_string(&addrstr,
+                               (union olsr_ip_addr *)&ifs->int6_multaddr.
+                               sin6_addr));
 
   /* rfc 3493 */
 #ifdef IPV6_JOIN_GROUP
   /* Join reciever group */
-  if(setsockopt(sock, 
-               IPPROTO_IPV6, 
-               IPV6_JOIN_GROUP, 
-               (char *)&mcastreq, 
-               sizeof(struct ipv6_mreq)) 
-     < 0)
+  if (setsockopt(sock,
+                IPPROTO_IPV6,
+                IPV6_JOIN_GROUP, (char *)&mcastreq, sizeof(struct ipv6_mreq))
+      < 0)
 #else /* rfc 2133, obsoleted */
   /* Join receiver group */
-  if(setsockopt(sock, 
-               IPPROTO_IPV6, 
-               IPV6_ADD_MEMBERSHIP, 
-               (char *)&mcastreq, 
-               sizeof(struct ipv6_mreq)) < 0)
-#endif 
-    {
-      perror("Join multicast send");
-      return -1;
-    }
+  if (setsockopt(sock,
+                IPPROTO_IPV6,
+                IPV6_ADD_MEMBERSHIP,
+                (char *)&mcastreq, sizeof(struct ipv6_mreq)) < 0)
+#endif
+  {
+    perror("Join multicast send");
+    return -1;
+  }
 
-  
-  if(setsockopt(sock, 
-               IPPROTO_IPV6, 
-               IPV6_MULTICAST_IF, 
-               (char *)&mcastreq.ipv6mr_interface, 
-               sizeof(mcastreq.ipv6mr_interface)) < 0)
-    {
-      perror("Set multicast if");
-      return -1;
-    }
+
+  if (setsockopt(sock,
+                IPPROTO_IPV6,
+                IPV6_MULTICAST_IF,
+                (char *)&mcastreq.ipv6mr_interface,
+                sizeof(mcastreq.ipv6mr_interface)) < 0) {
+    perror("Set multicast if");
+    return -1;
+  }
 
 
   OLSR_PRINTF(3, "OK\n");
@@ -524,7 +533,8 @@ join_mcast(struct interface *ifs, int sock)
 
 
 
-int get_ipv6_address(char *ifname, struct sockaddr_in6 *saddr6, int scope_in)
+int
+get_ipv6_address(char *ifname, struct sockaddr_in6 *saddr6, int scope_in)
 {
   struct ifaddrs *ifap, *ifa;
   const struct sockaddr_in6 *sin6 = NULL;
@@ -533,59 +543,47 @@ int get_ipv6_address(char *ifname, struct sockaddr_in6 *saddr6, int scope_in)
   int s6;
   u_int32_t flags6;
 
-  if (getifaddrs(&ifap) != 0)
-    {
-      OLSR_PRINTF(3, "get_ipv6_address: getifaddrs() failed.\n");
-      return 0;
-    }
+  if (getifaddrs(&ifap) != 0) {
+    OLSR_PRINTF(3, "get_ipv6_address: getifaddrs() failed.\n");
+    return 0;
+  }
 
-  for (ifa = ifap; ifa; ifa = ifa->ifa_next)
-    {
-      if (ifa->ifa_addr->sa_family == AF_INET6 &&
-          strcmp(ifa->ifa_name, ifname) == 0)
-        {
-         sin6 = (const struct sockaddr_in6 *)ifa->ifa_addr;
-         if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
-           continue;
-         strncpy(ifr6.ifr_name, ifname, sizeof(ifr6.ifr_name));
-         if ((s6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0)
-           {
-             OLSR_PRINTF(3, "socket(AF_INET6,SOCK_DGRAM)");
-             break;
-           }
-         ifr6.ifr_addr = *sin6;
-         if (ioctl(s6, SIOCGIFAFLAG_IN6, &ifr6) < 0)
-           {
-             OLSR_PRINTF(3, "ioctl(SIOCGIFAFLAG_IN6)");
-             close(s6);
-             break;
-           }
-         close(s6);
-         flags6 = ifr6.ifr_ifru.ifru_flags6;
-         if ((flags6 & IN6_IFF_ANYCAST) != 0)
-           continue;
-         if (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr))
-           {
-             if (scope_in)
-               {
-                 memcpy(&saddr6->sin6_addr, &sin6->sin6_addr,
-                        sizeof(struct in6_addr));
-                 found = 1;
-                 break;
-               }
-           }
-         else
-           {
-             if (scope_in == 0)
-               {
-                 memcpy(&saddr6->sin6_addr, &sin6->sin6_addr,
-                        sizeof(struct in6_addr));
-                 found = 1;
-                 break;
-               }
-           }
+  for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
+    if ((ifa->ifa_addr->sa_family == AF_INET6) &&
+       (strcmp(ifa->ifa_name, ifname) == 0)) {
+      sin6 = (const struct sockaddr_in6 *)(ifa->ifa_addr);
+      if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
+       continue;
+      strncpy(ifr6.ifr_name, ifname, sizeof(ifr6.ifr_name));
+      if ((s6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+       OLSR_PRINTF(3, "socket(AF_INET6,SOCK_DGRAM)");
+       break;
+      }
+      ifr6.ifr_addr = *sin6;
+      if (ioctl(s6, SIOCGIFAFLAG_IN6, (int)&ifr6) < 0) {
+       OLSR_PRINTF(3, "ioctl(SIOCGIFAFLAG_IN6)");
+       close(s6);
+       break;
+      }
+      close(s6);
+      flags6 = ifr6.ifr_ifru.ifru_flags6;
+      if ((flags6 & IN6_IFF_ANYCAST) != 0)
+       continue;
+      if (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr)) {
+       if (scope_in) {
+         memcpy(&saddr6->sin6_addr, &sin6->sin6_addr, sizeof(struct in6_addr));
+         found = 1;
+         break;
+       }
+      } else {
+       if (scope_in == 0) {
+         memcpy(&saddr6->sin6_addr, &sin6->sin6_addr, sizeof(struct in6_addr));
+         found = 1;
+         break;
        }
+      }
     }
+  }
   freeifaddrs(ifap);
   if (found)
     return 1;
@@ -605,12 +603,11 @@ static u_int16_t ip_id = 0;
 #endif /* SPOOF */
 
 ssize_t
-olsr_sendto(int s, 
-           const void *buf, 
-           size_t len, 
-           int flags __attribute__((unused)), 
-           const struct sockaddr *to, 
-           socklen_t tolen)
+olsr_sendto(int s,
+           const void *buf,
+           size_t len,
+           int flags __attribute__ ((unused)),
+           const struct sockaddr *to, socklen_t tolen)
 {
 #ifdef SPOOF
   /* IPv4 for now! */
@@ -618,89 +615,84 @@ olsr_sendto(int s,
   libnet_t *context;
   char errbuf[LIBNET_ERRBUF_SIZE];
   libnet_ptag_t udp_tag, ip_tag, ether_tag;
-  unsigned char enet_broadcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+  unsigned char enet_broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
   int status;
-  struct sockaddr_in *to_in = (struct sockaddr_in *) to;
+  struct sockaddr_in *to_in = (struct sockaddr_in *)to;
   u_int32_t destip;
   struct interface *iface;
 
   udp_tag = ip_tag = ether_tag = 0;
   destip = to_in->sin_addr.s_addr;
-  iface = if_ifwithsock (s);
+  iface = if_ifwithsock(s);
 
   /* initialize libnet */
   context = libnet_init(LIBNET_LINK, iface->int_name, errbuf);
-  if (context == NULL)
-    {
-      OLSR_PRINTF (1, "libnet init: %s\n", libnet_geterror (context));
-      return (0);
-    }
+  if (context == NULL) {
+    OLSR_PRINTF(1, "libnet init: %s\n", libnet_geterror(context));
+    return (0);
+  }
 
   /* initialize IP ID field if necessary */
-  if (ip_id == 0)
-    {
-      ip_id = (u_int16_t) (arc4random () & 0xffff);
-    }
+  if (ip_id == 0) {
+    ip_id = (u_int16_t) (arc4random() & 0xffff);
+  }
 
-  udp_tag = libnet_build_udp (698,                             /* src port */
-                             698,                              /* dest port */
-                             LIBNET_UDP_H + len,               /* length */
-                             0,                                /* checksum */
-                             buf,                              /* payload */
-                             len,                              /* payload size */
-                             context,                          /* context */
-                             udp_tag);                         /* pblock */
-  if (udp_tag == -1)
-    {
-      OLSR_PRINTF (1, "libnet UDP header: %s\n", libnet_geterror (context));
-       return (0);
-    }
+  udp_tag = libnet_build_udp(698,      /* src port */
+                            698,       /* dest port */
+                            LIBNET_UDP_H + len,        /* length */
+                            0, /* checksum */
+                            buf,       /* payload */
+                            len,       /* payload size */
+                            context,   /* context */
+                            udp_tag);  /* pblock */
+  if (udp_tag == -1) {
+    OLSR_PRINTF(1, "libnet UDP header: %s\n", libnet_geterror(context));
+    return (0);
+  }
 
-  ip_tag = libnet_build_ipv4 (LIBNET_IPV4_H + LIBNET_UDP_H + len, /* len */
-                             0,                                /* TOS */
-                             ip_id++,                          /* IP id */
-                             0,                                /* IP frag */
-                             1,                                /* IP TTL */
-                             IPPROTO_UDP,                      /* protocol */
-                             0,                                /* checksum */
-                             libnet_get_ipaddr4 (context),     /* src IP */
-                             destip,                           /* dest IP */
-                             NULL,                             /* payload */
-                             0,                                /* payload len */
-                             context,                          /* context */
-                             ip_tag);                          /* pblock */
-  if (ip_tag == -1)
-    {
-      OLSR_PRINTF (1, "libnet IP header: %s\n", libnet_geterror (context));
-      return (0);
-    }
+  ip_tag = libnet_build_ipv4(LIBNET_IPV4_H + LIBNET_UDP_H + len,       /* len */
+                            0, /* TOS */
+                            ip_id++,   /* IP id */
+                            0, /* IP frag */
+                            1, /* IP TTL */
+                            IPPROTO_UDP,       /* protocol */
+                            0, /* checksum */
+                            libnet_get_ipaddr4(context),       /* src IP */
+                            destip,    /* dest IP */
+                            NULL,      /* payload */
+                            0, /* payload len */
+                            context,   /* context */
+                            ip_tag);   /* pblock */
+  if (ip_tag == -1) {
+    OLSR_PRINTF(1, "libnet IP header: %s\n", libnet_geterror(context));
+    return (0);
+  }
 
-  ether_tag = libnet_build_ethernet (enet_broadcast,           /* ethernet dest */
-                                    libnet_get_hwaddr (context), /* ethernet source */
-                                    ETHERTYPE_IP,              /* protocol type */
-                                    NULL,                      /* payload */
-                                    0,                         /* payload size */
-                                    context,                   /* libnet handle */
-                                    ether_tag);                /* pblock tag */
-  if (ether_tag == -1)
-    {
-      OLSR_PRINTF (1, "libnet ethernet header: %s\n", libnet_geterror (context));
-      return (0);
-    }
-  status = libnet_write (context);
-  if (status == -1)
-    {
-      OLSR_PRINTF (1, "libnet packet write: %s\n", libnet_geterror (context));
-      return (0);
-    }
+  ether_tag = libnet_build_ethernet(enet_broadcast,    /* ethernet dest */
+                                   libnet_get_hwaddr(context), /* ethernet source */
+                                   ETHERTYPE_IP,       /* protocol type */
+                                   NULL,       /* payload */
+                                   0,  /* payload size */
+                                   context,    /* libnet handle */
+                                   ether_tag); /* pblock tag */
+  if (ether_tag == -1) {
+    OLSR_PRINTF(1, "libnet ethernet header: %s\n", libnet_geterror(context));
+    return (0);
+  }
 
-  libnet_destroy (context);
+  status = libnet_write(context);
+  if (status == -1) {
+    OLSR_PRINTF(1, "libnet packet write: %s\n", libnet_geterror(context));
+    return (0);
+  }
+
+  libnet_destroy(context);
 
   return (len);
 
 #else
-  return sendto(s, buf, len, flags, to, tolen);
+  return sendto(s, (caddr_t) buf, (int)len, flags, (struct sockaddr *)to,
+               tolen);
 #endif
 }
 
@@ -709,23 +701,22 @@ olsr_sendto(int s,
  * Wrapper for recvfrom(2)
  */
 
-ssize_t  
-olsr_recvfrom(int  s, 
-             void *buf, 
-             size_t len, 
-             int flags __attribute__((unused)), 
-             struct sockaddr *from,
-             socklen_t *fromlen)
+ssize_t
+olsr_recvfrom(int s,
+             void *buf,
+             size_t len,
+             int flags __attribute__ ((unused)),
+             struct sockaddr *from, socklen_t * fromlen)
 {
   struct msghdr mhdr;
   struct iovec iov;
   union {
-       struct cmsghdr cmsg;
-       unsigned char chdr[4096];
+    struct cmsghdr cmsg;
+    unsigned char chdr[4096];
   } cmu;
   struct cmsghdr *cm;
   struct sockaddr_dl *sdl;
-  struct sockaddr_in *sin = (struct sockaddr_in *) from; //XXX
+  struct sockaddr_in *sin = (struct sockaddr_in *)from;
   struct sockaddr_in6 *sin6;
   struct in6_addr *iaddr6;
   struct in6_pktinfo *pkti;
@@ -741,55 +732,49 @@ olsr_recvfrom(int  s,
   mhdr.msg_namelen = *fromlen;
   mhdr.msg_iov = &iov;
   mhdr.msg_iovlen = 1;
-  mhdr.msg_control = (caddr_t) &cmu;
-  mhdr.msg_controllen = sizeof (cmu);
+  mhdr.msg_control = (caddr_t) & cmu;
+  mhdr.msg_controllen = sizeof(cmu);
 
   iov.iov_len = len;
   iov.iov_base = buf;
 
-  count = recvmsg (s, &mhdr, MSG_DONTWAIT);
-  if (count <= 0)
-    {
-      return (count);
-    }
+  count = recvmsg(s, &mhdr, MSG_DONTWAIT);
+  if (count <= 0) {
+    return (count);
+  }
 
   /* this needs to get communicated back to caller */
   *fromlen = mhdr.msg_namelen;
-  if (olsr_cnf->ip_version == AF_INET6)
-    {
-      for (cm = (struct cmsghdr *)CMSG_FIRSTHDR(&mhdr); cm;
-          cm = (struct cmsghdr *)CMSG_NXTHDR(&mhdr, cm))
-       {
-         if (cm->cmsg_level == IPPROTO_IPV6 && cm->cmsg_type == IPV6_PKTINFO)
-           {
-             pkti = (struct in6_pktinfo *) CMSG_DATA(cm);
-             iaddr6 = &pkti->ipi6_addr;
-             if_indextoname(pkti->ipi6_ifindex, iname);
-           }
-       }
-    }
-  else
-    {
-      cm = &cmu.cmsg;
-      sdl = (struct sockaddr_dl *) CMSG_DATA (cm);
-      memset (iname, 0, sizeof (iname));
-      memcpy (iname, sdl->sdl_data, sdl->sdl_nlen);
+  if (olsr_cnf->ip_version == AF_INET6) {
+    for (cm = (struct cmsghdr *)CMSG_FIRSTHDR(&mhdr); cm;
+        cm = (struct cmsghdr *)CMSG_NXTHDR(&mhdr, cm)) {
+      if (cm->cmsg_level == IPPROTO_IPV6 && cm->cmsg_type == IPV6_PKTINFO) {
+       pkti = (struct in6_pktinfo *)CMSG_DATA(cm);
+       iaddr6 = &pkti->ipi6_addr;
+       if_indextoname(pkti->ipi6_ifindex, iname);
+      }
     }
+  } else {
+    cm = &cmu.cmsg;
+    sdl = (struct sockaddr_dl *)CMSG_DATA(cm);
+    memset(iname, 0, sizeof(iname));
+    memcpy(iname, sdl->sdl_data, sdl->sdl_nlen);
+  }
 
-  ifc = if_ifwithsock (s);
+  ifc = if_ifwithsock(s);
 
   sin6 = (struct sockaddr_in6 *)from;
-  OLSR_PRINTF (4, "%d bytes from %s, socket associated %s really received on %s\n",
-              count,          
-               inet_ntop(olsr_cnf->ip_version, olsr_cnf->ip_version == AF_INET6 ?
-                         (char *)&sin6->sin6_addr : (char *)&sin->sin_addr, addrstr, sizeof(addrstr)),
-              ifc->int_name,
-              iname);
-
-  if (strcmp (ifc->int_name, iname) != 0)
-    {
-      return (0);
-    }
+  OLSR_PRINTF(4,
+             "%d bytes from %s, socket associated %s really received on %s\n",
+             count, inet_ntop(olsr_cnf->ip_version,
+                              olsr_cnf->ip_version ==
+                              AF_INET6 ? (char *)&sin6->
+                              sin6_addr : (char *)&sin->sin_addr, addrstr,
+                              sizeof(addrstr)), ifc->int_name, iname);
+
+  if (strcmp(ifc->int_name, iname) != 0) {
+    return (0);
+  }
 
   return (count);
 }
@@ -800,23 +785,18 @@ olsr_recvfrom(int  s,
 
 int
 olsr_select(int nfds,
-           fd_set *readfds,
-           fd_set *writefds,
-           fd_set *exceptfds,
-           struct timeval *timeout)
+           fd_set * readfds,
+           fd_set * writefds, fd_set * exceptfds, struct timeval *timeout)
 {
-  return select(nfds,
-               readfds,
-               writefds,
-               exceptfds,
-               timeout);
+  return select(nfds, readfds, writefds, exceptfds, timeout);
 }
 
 
-int 
+int
 check_wireless_interface(char *ifname)
 {
 #if defined __FreeBSD__ &&  !defined FBSD_NO_80211
+
 /* From FreeBSD ifconfig/ifieee80211.c ieee80211_status() */
   struct ieee80211req ireq;
   u_int8_t data[32];
@@ -831,9 +811,9 @@ check_wireless_interface(char *ifname)
   struct ieee80211_nodereq nr;
   bzero(&nr, sizeof(nr));
   strlcpy(nr.nr_ifname, ifname, sizeof(nr.nr_ifname));
-  return (ioctl(olsr_cnf->ioctl_s, SIOCG80211FLAGS, &nr) >=0) ? 1: 0;
+  return (ioctl(olsr_cnf->ioctl_s, SIOCG80211FLAGS, &nr) >= 0) ? 1 : 0;
 #else
-  ifname = NULL; /* squelsh compiler warning */
+  ifname = NULL;               /* squelsh compiler warning */
   return 0;
 #endif
 }
@@ -843,29 +823,25 @@ check_wireless_interface(char *ifname)
 int
 calculate_if_metric(char *ifname)
 {
-  if(check_wireless_interface(ifname))
-    {
-      /* Wireless */
-      return 1;
-    }
-  else
-    {
-      /* Ethernet */
+  if (check_wireless_interface(ifname)) {
+    /* Wireless */
+    return 1;
+  } else {
+    /* Ethernet */
 #if 0
-      /* Andreas: Perhaps SIOCGIFMEDIA is the way to do this? */
-      struct ifmediareq ifm;
+    /* Andreas: Perhaps SIOCGIFMEDIA is the way to do this? */
+    struct ifmediareq ifm;
 
-      memset(&ifm, 0, sizeof(ifm));
-      strlcpy(ifm.ifm_name, ifname, sizeof(ifm.ifm_name));
-
-      if(ioctl(olsr_cnf->ioctl_s, SIOCGIFMEDIA, &ifm) < 0)
-       {
-         OLSR_PRINTF(1, "Error SIOCGIFMEDIA(%s)\n", ifm.ifm_name);
-         return WEIGHT_ETHERNET_DEFAULT;
-       }
+    memset(&ifm, 0, sizeof(ifm));
+    strlcpy(ifm.ifm_name, ifname, sizeof(ifm.ifm_name));
 
-      OLSR_PRINTF(1, "%s: STATUS 0x%08x\n", ifm.ifm_name, ifm.ifm_status);
-#endif
+    if (ioctl(olsr_cnf->ioctl_s, SIOCGIFMEDIA, &ifm) < 0) {
+      OLSR_PRINTF(1, "Error SIOCGIFMEDIA(%s)\n", ifm.ifm_name);
       return WEIGHT_ETHERNET_DEFAULT;
     }
+
+    OLSR_PRINTF(1, "%s: STATUS 0x%08x\n", ifm.ifm_name, ifm.ifm_status);
+#endif
+    return WEIGHT_ETHERNET_DEFAULT;
+  }
 }