From Lorenz Shori <lorenz.schori@gmx.ch>: Mac OSX fixes
authorHannes Gredler <hannes@gredler.at>
Thu, 27 Dec 2007 10:44:50 +0000 (11:44 +0100)
committerHannes Gredler <hannes@gredler.at>
Thu, 27 Dec 2007 10:44:50 +0000 (11:44 +0100)
src/bsd/kernel_routes.c
src/bsd/net.c
src/ifnet.h

index ec986ff..6161b04 100644 (file)
@@ -44,6 +44,7 @@
 #include "defs.h"
 #include "process_routes.h"
 #include "net_olsr.h"
+#include "ipcalc.h"
 
 #include <net/if_dl.h>
 #include <ifaddrs.h>
index f40ae72..cc0ef54 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "../defs.h"
 #include "../net_os.h"
+#include "../ipcalc.h"
 #include "../parser.h" /* dnc: needed for call to packet_parser() */
 #include "../olsr_protocol.h"
 
@@ -391,8 +392,9 @@ getsocket(int bufspace, char *int_name)
   return (sock);
 }
 
-int getsocket6(struct sockaddr_in6 *sin, int bufspace, char *int_name)
+int getsocket6(int bufspace, char *int_name)
 {
+  struct sockaddr_in6 sin;
   int on;
   int sock = socket(AF_INET6, SOCK_DGRAM, 0);
 
@@ -445,7 +447,10 @@ int getsocket6(struct sockaddr_in6 *sin, int bufspace, char *int_name)
     }
 #endif
 
-  if (bind(sock, (struct sockaddr *)sin, sizeof (*sin)) < 0) 
+  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");
@@ -778,7 +783,8 @@ olsr_recvfrom(int  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)):
+               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);
 
index e1182da..da55326 100644 (file)
@@ -47,7 +47,7 @@
 #define _OLSR_IFNET
 
 /* To get ifreq */
-//#include <arpa/inet.h>
+#include <arpa/inet.h>
 #include <net/if.h>
 
 #include "olsr_cfg.h"