Configure the NAT-T port via sysctl on Mac OS X to enable handling of incoming UDP...
authorTobias Brunner <tobias@strongswan.org>
Wed, 29 Jul 2009 09:34:47 +0000 (11:34 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 30 Jul 2009 12:06:26 +0000 (14:06 +0200)
src/charon/network/socket.c

index 8627ca7..2ad695e 100644 (file)
@@ -34,6 +34,9 @@
 #include <netinet/ip6.h>
 #include <netinet/udp.h>
 #include <net/if.h>
 #include <netinet/ip6.h>
 #include <netinet/udp.h>
 #include <net/if.h>
+#ifdef __APPLE__
+#include <sys/sysctl.h>
+#endif
 
 #include "socket.h"
 
 
 #include "socket.h"
 
@@ -611,6 +614,18 @@ socket_t *socket_create()
        this->ipv6 = 0;
        this->ipv4_natt = 0;
        this->ipv6_natt = 0;
        this->ipv6 = 0;
        this->ipv4_natt = 0;
        this->ipv6_natt = 0;
+
+#ifdef __APPLE__
+       {
+               int natt_port = IKEV2_NATT_PORT;
+               if (sysctlbyname("net.inet.ipsec.esp_port", NULL, NULL, &natt_port,
+                                                sizeof(natt_port)) != 0)
+               {
+                       DBG1(DBG_NET, "could not set net.inet.ipsec.esp_port to %d: %s",
+                                natt_port, strerror(errno));
+               }
+       }
+#endif
        
        this->ipv4 = open_socket(this, AF_INET, IKEV2_UDP_PORT);
        if (this->ipv4 == 0)
        
        this->ipv4 = open_socket(this, AF_INET, IKEV2_UDP_PORT);
        if (this->ipv4 == 0)