* applied osx-ip6.patch made by Gregoire Henry <gregoire.henry@pps.jussieu.fr>, poste...
authorBernd Petrovitsch <bernd@firmix.at>
Wed, 14 Mar 2007 14:01:14 +0000 (14:01 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Wed, 14 Mar 2007 14:01:14 +0000 (14:01 +0000)
src/bsd/net.c
src/unix/ifnet.c

index fc29c81..66c9d0f 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: net.c,v 1.31 2007/02/14 13:03:13 kattemat Exp $
+ * $Id: net.c,v 1.32 2007/03/14 14:01:13 bernd67 Exp $
  */
 
 #include "defs.h"
  */
 
 #include "defs.h"
 #endif
 #endif
 
 #endif
 #endif
 
+#ifdef __MacOSX__
+#include <ifaddrs.h>
+#include <net/if_var.h>
+#include <net/ethernet.h>
+#include <netinet/in_var.h>
+#endif
+
 #include <net/if_dl.h>
 #ifdef SPOOF
 #include <libnet.h>
 #include <net/if_dl.h>
 #ifdef SPOOF
 #include <libnet.h>
@@ -90,7 +97,11 @@ static int gateway;
 static int set_sysctl_int(char *name, int new)
 {
   int old;
 static int set_sysctl_int(char *name, int new)
 {
   int old;
+#if __MacOSX__
+  size_t len = sizeof (old);
+#else
   unsigned int len = sizeof (old);
   unsigned int len = sizeof (old);
+#endif
 
 #ifdef __OpenBSD__
   int mib[4];
 
 #ifdef __OpenBSD__
   int mib[4];
@@ -174,7 +185,7 @@ disable_redirects_global(int version)
     name = "net.inet6.icmp6.rediraccept";
 
   ignore_redir = set_sysctl_int(name, 0);
     name = "net.inet6.icmp6.rediraccept";
 
   ignore_redir = set_sysctl_int(name, 0);
-#elif defined __FreeBSD__
+#elif defined __FreeBSD__ || defined __MacOSX__
   if (olsr_cnf->ip_version == AF_INET)
   {
     name = "net.inet.icmp.drop_redirect";
   if (olsr_cnf->ip_version == AF_INET)
   {
     name = "net.inet.icmp.drop_redirect";
@@ -256,7 +267,7 @@ int restore_settings(int version)
   else
     name = "net.inet6.icmp6.rediraccept";
 
   else
     name = "net.inet6.icmp6.rediraccept";
 
-#elif defined __FreeBSD__
+#elif defined __FreeBSD__ || defined __MacOSX__
   if (olsr_cnf->ip_version == AF_INET)
     name = "net.inet.icmp.drop_redirect";
 
   if (olsr_cnf->ip_version == AF_INET)
     name = "net.inet.icmp.drop_redirect";
 
@@ -435,11 +446,19 @@ int getsocket6(struct sockaddr_in6 *sin, int bufspace, char *int_name)
       return (-1);
     }
 
       return (-1);
     }
 
+#ifdef IPV6_RECVPKTINFO
   if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)) < 0)
     {
       perror("IPV6_RECVPKTINFO failed");
       return (-1);
     }
   if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)) < 0)
     {
       perror("IPV6_RECVPKTINFO failed");
       return (-1);
     }
+#elif defined IPV6_PKTINFO
+    if (setsockopt(sock, IPPROTO_IPV6, IPV6_PKTINFO, &on, sizeof(on)) < 0)
+      {
+       perror("IPV6_PKTINFO failed");
+       return (-1);
+      }
+#endif
 
   if (bind(sock, (struct sockaddr *)sin, sizeof (*sin)) < 0) 
     {
 
   if (bind(sock, (struct sockaddr *)sin, sizeof (*sin)) < 0) 
     {
index e70fe6e..a5a4710 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: ifnet.c,v 1.45 2007/02/10 19:59:51 bernd67 Exp $
+ * $Id: ifnet.c,v 1.46 2007/03/14 14:01:14 bernd67 Exp $
  */
 
 
  */
 
 
@@ -817,6 +817,10 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
       /* Set port */
       ifs.int6_multaddr.sin6_port = htons(OLSRPORT);
       
       /* Set port */
       ifs.int6_multaddr.sin6_port = htons(OLSRPORT);
       
+#ifdef __MacOSX__
+      ifs.int6_multaddr.sin6_scope_id = 0;
+#endif
+
       OLSR_PRINTF(debuglvl, "\tMulticast: %s\n", ip6_to_string(&ifs.int6_multaddr.sin6_addr))
       
     }
       OLSR_PRINTF(debuglvl, "\tMulticast: %s\n", ip6_to_string(&ifs.int6_multaddr.sin6_addr))
       
     }