Added OS X support. Pulled tunneling from the Windows version - this
authorThomas Lopatic <thomas@lopatic.de>
Fri, 5 Nov 2004 14:33:32 +0000 (14:33 +0000)
committerThomas Lopatic <thomas@lopatic.de>
Fri, 5 Nov 2004 14:33:32 +0000 (14:33 +0000)
will never work, as Microsoft's IP tunneling driver is not officially
supported and getting worse from one Winwows release to the next.
We need a different approach for tunneling on Windows. Removed TRUE/FALSE
workaround from the Windows version.

22 files changed:
Makefile
src/defs.h
src/ipc_frontend.c
src/link_set.c
src/main.c
src/net.c
src/olsr_protocol.h
src/process_package.c
src/process_routes.c
src/unix/ifnet.c
src/win32/apm.c
src/win32/arpa/inet.h
src/win32/compat.c
src/win32/ifnet.c
src/win32/kernel_routes.c
src/win32/net.c
src/win32/net/route.h
src/win32/netinet/in.h
src/win32/pthread.h
src/win32/sys/time.h
src/win32/tunnel.c [deleted file]
src/win32/tunnel.h [deleted file]

index 04087c3..60fd15a 100644 (file)
--- a/Makefile
+++ b/Makefile
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
 #
-# $Id: Makefile,v 1.13 2004/11/05 09:31:46 kattemat Exp $
+# $Id: Makefile,v 1.14 2004/11/05 14:33:30 tlopatic Exp $
 #
 
 OS ?=          linux
 #OS =          fbsd
 #OS =          win32
+#OS =          osx
 
 CC ?=          gcc
 
@@ -77,7 +78,6 @@ CFLAGS ?=     -Isrc -Wall -Wmissing-prototypes -Wstrict-prototypes \
 
 LIBS =         -pthread -lm
 
-
 endif
 ifeq ($(OS), win32)
 
@@ -93,6 +93,21 @@ CFLAGS ?=    -Isrc -Isrc/win32 -Wall -Wmissing-prototypes \
 LIBS =         -mno-cygwin -lws2_32 -liphlpapi
 
 endif
+ifeq ($(OS), osx)
+
+SRCS +=                $(wildcard src/bsd/*.c) $(wildcard src/unix/*.c)
+
+HDRS +=                $(wildcard src/bsd/*.h) $(wildcard src/unix/*.h)
+
+OBJS +=                $(patsubst %.c,%.o,$(wildcard src/bsd/*.c)) \
+               $(patsubst %.c,%.o,$(wildcard src/unix/*.c))
+
+CFLAGS ?=      -D__MacOSX__ -Isrc -Wall -Wmissing-prototypes \
+               -Wstrict-prototypes -O2 -g 
+
+LIBS =         -lm -ldl
+endif
 
 all:           olsrd
 
@@ -134,7 +149,7 @@ clean:
 uberclean:
                rm -f $(OBJS) $(DEPFILE) 
                rm -f $(CFGDIR)/oscan.c $(CFGDIR)/oparse.h $(CFGDIR)/oparse.c
-               rm -f bin/olsrd
+               rm -f bin/olsrd bin/olsrd.exe
                rm -f src/*~ src/linux/*~ src/unix/*~ src/win32/*~
                rm -f src/bsd/*~ src/cfgparser/*~
 
index 43a9be5..c26a38c 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: defs.h,v 1.23 2004/11/05 02:06:13 tlopatic Exp $
+ * $Id: defs.h,v 1.24 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -134,7 +134,7 @@ int ioctl_s;
 
 /* routing socket */
 
-#ifdef __FreeBSD__
+#if defined __FreeBSD__ || defined __MacOSX__
 int rts;
 #endif
 
index 1714c25..a0a0b0f 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: ipc_frontend.c,v 1.11 2004/11/05 11:52:55 kattemat Exp $
+ * $Id: ipc_frontend.c,v 1.12 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 #ifdef WIN32
 #define close(x) closesocket(x)
 #define perror(x) WinSockPError(x)
-#define MSG_NOSIGNAL 0
 void 
 WinSockPError(char *);
-#elif defined __FreeBSD__
+#endif
+
+#ifndef linux
 #define MSG_NOSIGNAL 0
 #endif
 
index a1b99a5..fdc93bd 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: link_set.c,v 1.15 2004/11/05 11:52:55 kattemat Exp $
+ * $Id: link_set.c,v 1.16 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -394,7 +394,7 @@ add_new_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, union olsr_
 {
   struct link_entry *tmp_link_set, *new_link;
   struct neighbor_entry *neighbor;
-#if !defined WIN32 && !defined __FreeBSD__
+#ifdef linux
   struct interface *local_if;
 #endif
 
@@ -512,7 +512,7 @@ add_new_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, union olsr_
     }
 
   /* Add to link-layer spy list */
-#if !defined WIN32 && !defined __FreeBSD__
+#ifdef linux
   if(llinfo)
     {
       local_if = if_ifwithaddr(local);
@@ -603,7 +603,7 @@ update_link_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, struct
 {
   int status;
   struct link_entry *entry;
-#if !defined WIN32 && !defined __FreeBSD__
+#ifdef linux
   struct interface *local_if;
 #endif
 
@@ -615,7 +615,7 @@ update_link_entry(union olsr_ip_addr *local, union olsr_ip_addr *remote, struct
 
   /* Update link layer info */
   /* Add to link-layer spy list */
-#if !defined WIN32 && !defined __FreeBSD__
+#ifdef linux
   if(llinfo && !entry->spy_activated)
     {
       local_if = if_ifwithaddr(local);
index c01f44a..62c97f3 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: main.c,v 1.28 2004/11/05 11:52:55 kattemat Exp $
+ * $Id: main.c,v 1.29 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 
 #ifdef linux
 #include "linux/tunnel.h"
-static void
-olsr_shutdown(int);
-#elif defined WIN32
+#endif
+
+#ifdef WIN32
 #define close(x) closesocket(x)
-#include "win32/tunnel.h"
 int __stdcall SignalHandler(unsigned long signal);
 void ListInterfaces(void);
-#elif defined __FreeBSD__
+#else
 static void
 olsr_shutdown(int);
-#else
-#       error "Unsupported system"
 #endif
 
 /*
@@ -488,7 +485,7 @@ main(int argc, char *argv[])
       olsr_exit(__func__, 0);
     }
 
-#ifdef __FreeBSD__
+#if defined __FreeBSD__ || defined __MacOSX__
   if ((rts = socket(PF_ROUTE, SOCK_RAW, 0)) < 0)
     {
       olsr_syslog(OLSR_LOG_ERR, "routing socket: %m");
@@ -591,7 +588,7 @@ main(int argc, char *argv[])
   if(olsr_cnf->open_ipc)
       ipc_init();
 
-#if !defined WIN32 && !defined __FreeBSD__
+#ifdef linux
   /* Initialize link-layer notifications */
   if(llinfo)
     init_link_layer_notification();
@@ -603,7 +600,7 @@ main(int argc, char *argv[])
   /* Load plugins */
   olsr_load_plugins();
 
-#ifndef __FreeBSD__
+#ifdef linux
   /* Set up recieving tunnel if Inet gw */
   if(use_tunnel && check_inet_gw())
     set_up_gw_tunnel(&main_addr);
@@ -702,7 +699,7 @@ olsr_shutdown(int signal)
   /* ioctl socket */
   close(ioctl_s);
 
-#ifdef __FreeBSD__
+#if defined __FreeBSD__ || defined __MacOSX__
   /* routing socket */
   close(rts);
 #endif
index 8200552..d43ec27 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: net.c,v 1.18 2004/11/05 02:06:13 tlopatic Exp $
+ * $Id: net.c,v 1.19 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -410,7 +410,7 @@ join_mcast(struct interface *ifs, int sock)
   COPY_IP(&mcastreq.ipv6mr_multiaddr, &ifs->int6_multaddr.sin6_addr);
   mcastreq.ipv6mr_interface = ifs->if_index;
 
-#if !defined __FreeBSD__
+#if !defined __FreeBSD__ && !defined __MacOSX__
   olsr_printf(3, "Interface %s joining multicast %s...",       ifs->int_name, olsr_ip_to_string((union olsr_ip_addr *)&ifs->int6_multaddr.sin6_addr));
   /* Send multicast */
   if(setsockopt(sock, 
index 96f2175..e911243 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsr_protocol.h,v 1.10 2004/11/05 11:52:56 kattemat Exp $
+ * $Id: olsr_protocol.h,v 1.11 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -77,6 +77,15 @@ typedef char            olsr_8_t;
 typedef short           olsr_16_t;
 typedef int             olsr_32_t;
  
+#elif defined __MacOSX__
+
+typedef u_int8_t        olsr_u8_t;
+typedef u_int16_t       olsr_u16_t;
+typedef u_int32_t       olsr_u32_t;
+typedef int8_t          olsr_8_t;
+typedef int16_t         olsr_16_t;
+typedef int32_t         olsr_32_t;
+
 #else
 #       error "Unsupported system"
 #endif
index 04eff7c..aaa71e9 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: process_package.c,v 1.12 2004/11/05 11:52:56 kattemat Exp $
+ * $Id: process_package.c,v 1.13 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -38,8 +38,6 @@
 
 #ifdef linux 
 #include "linux/tunnel.h"
-#elif defined WIN32
-#include "win32/tunnel.h"
 #endif
 
 
@@ -405,7 +403,7 @@ olsr_process_received_hna(union olsr_message *m, struct interface *in_if, union
 
   while(hna_tmp)
     {
-#ifndef __FreeBSD__
+#ifdef linux
       /*
        * Set up tunnel to Internet gateway
        */
index af3f639..29eef14 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: process_routes.c,v 1.11 2004/11/05 02:06:14 tlopatic Exp $
+ * $Id: process_routes.c,v 1.12 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 
 #ifdef linux
 #include "linux/tunnel.h"
-#elif defined WIN32
-#include "win32/tunnel.h"
+#endif
+
+#ifdef WIN32
 #undef strerror
 #define strerror(x) StrError(x)
-#elif defined __FreeBSD__
-#else
-#       error "Unsupported system"
 #endif
 
 
@@ -155,13 +153,13 @@ olsr_delete_all_kernel_routes()
   struct destination_n *delete_kernel_list=NULL;
   struct destination_n *tmp=NULL;
   union olsr_ip_addr *tmp_addr;
-#ifndef __FreeBSD__
+#ifdef linux
   olsr_u32_t tmp_tnl_addr;
 #endif
 
   olsr_printf(1, "Deleting all routes...\n");
 
-#ifndef __FreeBSD__
+#ifdef linux
   if(use_tunnel)
     {
       /* Delete Internet GW tunnel */
index 06c5302..cb4bf01 100644 (file)
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: ifnet.c,v 1.2 2004/11/05 08:07:32 kattemat Exp $
+ * $Id: ifnet.c,v 1.3 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -39,7 +39,7 @@
 #define SIOCGIWMODE    0x8B07          /* get operation mode */
 #define SIOCSIWSENS    0x8B08          /* set sensitivity (dBm) */
 #define SIOCGIWSENS    0x8B09          /* get sensitivity (dBm) */
-#elif defined __FreeBSD__
+#elif defined __FreeBSD__ || defined __MacOSX__
 #define ifr_netmask ifr_addr
 #endif
 
@@ -747,7 +747,7 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
   /* Register socket */
   add_olsr_socket(ifp->olsr_socket, &olsr_input);
   
-#if defined linux 
+#ifdef linux 
   /* Set TOS */
   
   if (setsockopt(ifp->olsr_socket, SOL_SOCKET, SO_PRIORITY, (char*)&precedence, sizeof(precedence)) < 0)
index 8c97d77..2816cb5 100644 (file)
@@ -21,7 +21,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: apm.c,v 1.6 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: apm.c,v 1.7 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 #include <stdio.h>
 #include <string.h>
 
-#undef interface
-#undef TRUE
-#undef FALSE
-
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
+#undef interface
 
 extern int olsr_printf(int, char *, ...);
 
index d7ce6a9..730158d 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: inet.h,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: inet.h,v 1.5 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -30,8 +30,6 @@
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #undef interface
-#undef TRUE
-#undef FALSE
 
 int inet_aton(char *cp, struct in_addr *addr);
 int inet_pton(int af, char *src, void *dst);
index ff690b1..34fe297 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: compat.c,v 1.5 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: compat.c,v 1.6 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 #include <ctype.h>
 #include "defs.h"
 
-#undef interface
-#undef TRUE
-#undef FALSE
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
 struct ThreadPara
 {
   void *(*Func)(void *);
index 2c20907..dbf6129 100644 (file)
@@ -21,7 +21,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: ifnet.c,v 1.8 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: ifnet.c,v 1.9 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 #include "../scheduler.h"
 #include "../mantissa.h"
 
-#undef interface
-#undef TRUE
-#undef FALSE
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
 #include <iphlpapi.h>
 #include <iprtrmib.h>
 
index 4dca4c4..5f172d1 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: kernel_routes.c,v 1.6 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: kernel_routes.c,v 1.7 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 #include "../kernel_routes.h"
 #include "../defs.h"
 
-#undef interface
-#undef TRUE
-#undef FALSE
-
 #define WIN32_LEAN_AND_MEAN
-#include <windows.h>
 #include <iprtrmib.h>
 #include <iphlpapi.h>
+#undef interface
 
 char *StrError(unsigned int ErrNo);
 
index 875319e..fe0dac1 100644 (file)
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: net.c,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: net.c,v 1.5 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 #include <stdio.h>
 
-#undef interface
-#undef TRUE
-#undef FALSE
-
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #include <iphlpapi.h>
+#undef interface
 
 void WinSockPError(char *Str);
 void PError(char *);
index 8efed1c..63340f3 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: route.h,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: route.h,v 1.5 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
 
 #define TL_NET_ROUTE_H_INCLUDED
 
-#define WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#undef interface
-#undef TRUE
-#undef FALSE
-
-struct in6_rtmsg
-{
-  struct in6_addr rtmsg_dst;
-  struct in6_addr rtmsg_src;
-  struct in6_addr rtmsg_gateway;
-  unsigned int rtmsg_type;
-  unsigned short rtmsg_dst_len;
-  unsigned short rtmsg_src_len;
-  unsigned int rtmsg_metric;
-  unsigned long rtmsg_info;
-  unsigned int rtmsg_flags;
-  int rtmsg_ifindex;
-};
-
-struct rtentry
-{
-  unsigned long rt_pad1;
-  struct sockaddr rt_dst;
-  struct sockaddr rt_gateway;
-  struct sockaddr rt_genmask;
-  unsigned short rt_flags;
-  short rt_pad2;
-  unsigned long rt_pad3;
-  unsigned char rt_tos;
-  unsigned char rt_class;
-  short rt_pad4;
-  short rt_metric;
-  char *rt_dev;
-  unsigned long rt_mtu;
-  unsigned long rt_window;
-  unsigned short rt_irtt;
-};
-
 #define RTF_UP 1
 #define RTF_HOST 2
 #define RTF_GATEWAY 4
index a6400d8..abae7cd 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: in.h,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: in.h,v 1.5 2004/11/05 14:33:32 tlopatic Exp $
  *
  */
 
@@ -30,7 +30,5 @@
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #undef interface
-#undef TRUE
-#undef FALSE
 
 #endif
index 40b16d6..a51bb1f 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: pthread.h,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: pthread.h,v 1.5 2004/11/05 14:33:31 tlopatic Exp $
  *
  */
 
@@ -29,8 +29,6 @@
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #undef interface
-#undef TRUE
-#undef FALSE
 
 typedef HANDLE pthread_mutex_t;
 typedef HANDLE pthread_t;
index 7ff8708..214b79c 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: time.h,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
+ * $Id: time.h,v 1.5 2004/11/05 14:33:32 tlopatic Exp $
  *
  */
 
@@ -30,8 +30,6 @@
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #undef interface
-#undef TRUE
-#undef FALSE
 
 #define timeradd(x, y, z)                       \
   do                                            \
diff --git a/src/win32/tunnel.c b/src/win32/tunnel.c
deleted file mode 100644 (file)
index 6137d24..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-/* 
- * OLSR ad-hoc routing table management protocol
- * Copyright (C) 2004 Thomas Lopatic (thomas@lopatic.de)
- *
- * This file is part of the olsr.org OLSR daemon.
- *
- * olsr.org is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * olsr.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with olsr.org; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: tunnel.c,v 1.4 2004/11/03 18:19:54 tlopatic Exp $
- *
- */
-
-#include "../olsr_protocol.h"
-#include "tunnel.h"
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <stdio.h>
-#undef interface
-#undef TRUE
-#undef FALSE
-
-#include "../olsr.h"
-
-void PError(char *Str);
-
-struct ip_tunnel_parm ipt;
-
-static unsigned int TunnelIndex;
-static int StopThread;
-static HANDLE TunnelHandle;
-static HANDLE EventHandle;
-
-static char Subkey[] = "System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\{EECD2AB6-C2FC-4826-B92E-CAA53B29D67C}";
-static unsigned char Guid[] =
-{
-  0xb6, 0x2a, 0xcd, 0xee, 0xfc, 0xc2, 0x26, 0x48,
-  0xb9, 0x2e, 0xca, 0xa5, 0x3b, 0x29, 0xd6, 0x7c
-};
-
-static unsigned long __stdcall TunnelMonitor(void *Para)
-{
-  char GetBuff[1000];
-  struct IpInIpGetTunnelTable *Get;
-  int Idx;
-  struct IpInIpTunnelEntry *Ent;
-  struct IpInIpProcessNotification Not;
-  unsigned long Bytes;
-  OVERLAPPED Over;
-
-  memset(&Over, 0, sizeof (OVERLAPPED));
-  Over.hEvent = EventHandle;
-
-  if ((!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_GET_TUNNEL_TABLE,
-                       NULL, 0, GetBuff, sizeof (GetBuff), &Bytes, &Over) &&
-       GetLastError() != ERROR_IO_PENDING) ||
-      !GetOverlappedResult(TunnelHandle, &Over, &Bytes, TRUE))
-  {
-    PError("DeviceIoControl(GET_TUNNEL_TABLE)/GetOverlappedResult()");
-    return 1;
-  }
-  
-  Get = (struct IpInIpGetTunnelTable *)GetBuff;
-
-  for (Idx = 0; Idx < Get->Num; Idx++)
-  {
-    Ent = &Get->Entries[Idx];
-
-    olsr_printf(3, "Tunnel %08x: %08x, %08x, %08x, %d\n",
-           Ent->Index, Ent->LocalAddr, Ent->RemoteAddr, Ent->Unknown1,
-           Ent->TimeToLive);
-  }
-
-  for (;;)
-  {
-    memset(&Over, 0, sizeof (OVERLAPPED));
-    Over.hEvent = EventHandle;
-
-    if (!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_PROCESS_NOTIFICATION,
-                         &Not, sizeof (Not), &Not, sizeof (Not), &Bytes,
-                         &Over) &&
-        GetLastError() != ERROR_IO_PENDING)
-    {
-      PError("DeviceIoControl(PROCESS_NOTIFICATION)");
-      return 1;
-    }
-
-    if (WaitForSingleObject(EventHandle, INFINITE) != WAIT_OBJECT_0)
-    {
-      PError("WaitForSingleObject()");
-      return 1;
-    }
-
-    if (StopThread != 0)
-    {
-      olsr_printf(5, "Leaving monitor thread.\n");
-      return 0;
-    }
-
-    if (!GetOverlappedResult(TunnelHandle, &Over, &Bytes, FALSE))
-    {
-      PError("GetOverlappedResult()");
-      return 1;
-    }
-
-    if (Not.Down)
-    {
-      printf("IP-in-IP tunnel went down. (");
-
-      switch (Not.Reason)
-      {
-      case 0:
-        printf("ICMP time exceeded");
-        break;
-
-      case 1:
-        printf("ICMP destination unreachable");
-        break;
-
-      default:
-        printf("no known reason");
-        break;
-      }
-
-      printf(")");
-    }
-
-    else
-      printf("IP-in-IP tunnel went up.\n");
-  }
-
-  return 0;
-}
-
-int InitRegistry(void)
-{
-  HKEY Key;
-  unsigned long Res;
-  unsigned long Zero = 0;
-
-  olsr_printf(5, "InitRegistry()\n");
-
-  Res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, Subkey, 0, NULL,
-                       REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,
-                       &Key, NULL);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    fprintf(stderr, "Cannot create HKLM\\%s.", Subkey);
-    PError("RegCreateKeyEx()");
-    return -1;
-  }
-
-  Res = RegSetValueEx(Key, "DefaultGateway", 0, REG_MULTI_SZ, "\0", 2);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    PError("RegSetValueEx()");
-
-    Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-    if (Res != ERROR_SUCCESS)
-      PError("RegDeleteKey()");
-
-    return -1;
-  }
-
-  Res = RegSetValueEx(Key, "EnableDHCP", 0, REG_DWORD, (char *)&Zero, 4);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    PError("RegSetValueEx()");
-
-    Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-    if (Res != ERROR_SUCCESS)
-      PError("RegDeleteKey()");
-
-    return -1;
-  }
-
-  Res = RegSetValueEx(Key, "IPAddress", 0, REG_MULTI_SZ, "0.0.0.0\0", 9);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    PError("RegSetValueEx()");
-
-    Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-    if (Res != ERROR_SUCCESS)
-      PError("RegDeleteKey()");
-
-    return -1;
-  }
-
-  Res = RegSetValueEx(Key, "NTEContextList", 0, REG_MULTI_SZ, "\0", 2);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    PError("RegSetValueEx()");
-
-    Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-    if (Res != ERROR_SUCCESS)
-      PError("RegDeleteKey()");
-
-    return -1;
-  }
-
-  Res = RegSetValueEx(Key, "SubnetMask", 0, REG_MULTI_SZ, "0.0.0.0\0", 9);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    PError("RegSetValueEx()");
-
-    Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-    if (Res != ERROR_SUCCESS)
-      PError("RegDeleteKey()");
-
-    return -1;
-  }
-
-  Res = RegSetValueEx(Key, "UseZeroBroadcast", 0, REG_DWORD, (char *)&Zero, 4);
-
-  if (Res != ERROR_SUCCESS)
-  {
-    PError("RegSetValueEx()");
-
-    Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-    if (Res != ERROR_SUCCESS)
-      PError("RegDeleteKey()");
-
-    return -1;
-  }
-
-  return 0;
-}
-
-void CleanRegistry(void)
-{
-  unsigned long Res;
-
-  olsr_printf(5, "CleanRegistry()\n");
-
-  Res = RegDeleteKey(HKEY_LOCAL_MACHINE, Subkey);
-
-  if (Res != ERROR_SUCCESS)
-    PError("RegDeleteKey()");
-}
-
-// XXX - to be extended
-
-void set_up_source_tnl(union olsr_ip_addr *Local, union olsr_ip_addr *Remote,
-                       int Inter)
-{
-  unsigned long Bytes;
-  OVERLAPPED Over;
-  struct IpInIpAddTunnelInterface Add;
-  struct IpInIpSetTunnelInfo Set;
-  struct IpInIpDeleteTunnelInterface Del;
-  unsigned long ThreadId;
-  HANDLE Thread;
-
-  olsr_printf(5, "set_up_source_tnl(), interface index = %08x\n", Inter);
-
-  if (InitRegistry() < 0)
-    return;
-
-  EventHandle = CreateEvent(NULL, FALSE, FALSE, NULL);
-
-  if (EventHandle == NULL)
-  {
-    PError("CreateEvent()");
-    return;
-  }
-
-  TunnelHandle = CreateFile("\\\\.\\IPINIP", GENERIC_READ | GENERIC_WRITE,
-                            FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
-                            OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
-
-  if (TunnelHandle == INVALID_HANDLE_VALUE)
-  {
-    fprintf(stderr,
-            "Cannot open tunnel device - is the IP-in-IP service running?\n");
-    CloseHandle(EventHandle);
-    CleanRegistry();
-    return;
-  }
-
-  olsr_printf(5, "Tunnel device opened.\n");
-
-  memcpy(&Add.Guid, Guid, 16);
-
-  memset(&Over, 0, sizeof (OVERLAPPED));
-  Over.hEvent = EventHandle;
-
-  if ((!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_ADD_TUNNEL_INTERFACE, &Add,
-                        sizeof (Add), &Add, sizeof (Add), &Bytes, &Over) &&
-       GetLastError() != ERROR_IO_PENDING) ||
-      !GetOverlappedResult(TunnelHandle, &Over, &Bytes, TRUE))
-  {
-    PError("DeviceIoControl(ADD_TUNNEL_INTERFACE)/GetOverlappedResult()");
-    CloseHandle(TunnelHandle);
-    CloseHandle(EventHandle);
-    CleanRegistry();
-    return;
-  }
-
-  TunnelIndex = Add.Index;
-
-  olsr_printf(5, "Tunnel interface added, index = %08x.\n", TunnelIndex);
-
-  if (TunnelIndex == 0)
-  {
-    fprintf(stderr, "Tunnel interface already in use.\n");
-    CloseHandle(TunnelHandle);
-    CloseHandle(EventHandle);
-    CleanRegistry();
-    return;
-  }
-
-  Set.Index = TunnelIndex;
-  Set.LocalAddr = Local->v4;
-  Set.RemoteAddr = Remote->v4;
-  Set.TimeToLive = 64;
-
-  olsr_printf(5, "Local endpoint = %08x, remote endpoint = %08x.\n",
-              Set.LocalAddr, Set.RemoteAddr);
-
-  memset(&Over, 0, sizeof (OVERLAPPED));
-  Over.hEvent = EventHandle;
-
-  if ((!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_SET_TUNNEL_INFO, &Set,
-                        sizeof (Set), &Set, sizeof (Set), &Bytes, &Over) &&
-       GetLastError() != ERROR_IO_PENDING) ||
-      !GetOverlappedResult(TunnelHandle, &Over, &Bytes, TRUE))
-  {
-    PError("DeviceIoControl(SET_TUNNEL_INFO)/GetOverlappedResult()");
-
-    Del.Index = TunnelIndex;
-
-    memset(&Over, 0, sizeof (OVERLAPPED));
-    Over.hEvent = EventHandle;
-
-    if ((!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_DELETE_TUNNEL_INTERFACE,
-                          &Del, sizeof (Del), NULL, 0, &Bytes, &Over) &&
-         GetLastError() != ERROR_IO_PENDING) ||
-        !GetOverlappedResult(TunnelHandle, &Over, &Bytes, TRUE))
-      PError("DeviceIoControl(DELETE_TUNNEL_INTERFACE)/GetOverlappedResult()");
-
-    CloseHandle(TunnelHandle);
-    CloseHandle(EventHandle);
-    CleanRegistry();
-    return;
-  }
-
-  StopThread = 0;
-
-  Thread = CreateThread(NULL, 0, TunnelMonitor, NULL, 0, &ThreadId);
-
-  if (Thread == NULL)
-  {
-    PError("CreateThread()");
-
-    Del.Index = TunnelIndex;
-
-    memset(&Over, 0, sizeof (OVERLAPPED));
-    Over.hEvent = EventHandle;
-
-    if ((!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_DELETE_TUNNEL_INTERFACE,
-                          &Del, sizeof (Del), NULL, 0, &Bytes, &Over) &&
-         GetLastError() != ERROR_IO_PENDING) ||
-        !GetOverlappedResult(TunnelHandle, &Over, &Bytes, TRUE))
-      PError("DeviceIoControl(DELETE_TUNNEL_INTERFACE)/GetOverlappedResult()");
-
-    CloseHandle(TunnelHandle);
-    CloseHandle(EventHandle);
-    CleanRegistry();
-    return;
-  }
-}
-
-// XXX - to be extended
-
-int del_ip_tunnel(struct ip_tunnel_parm *Para)
-{
-  struct IpInIpDeleteTunnelInterface Del;
-  unsigned long Bytes;
-  OVERLAPPED Over;
-
-  olsr_printf(5, "del_ip_tunnel()\n");
-
-  StopThread = 1;
-
-  if (!SetEvent(EventHandle))
-    PError("SetEvent()");
-
-  Del.Index = TunnelIndex;
-
-  memset(&Over, 0, sizeof (OVERLAPPED));
-  Over.hEvent = EventHandle;
-
-  if ((!DeviceIoControl(TunnelHandle, IOCTL_IPINIP_DELETE_TUNNEL_INTERFACE,
-                       &Del, sizeof (Del), NULL, 0, &Bytes, &Over) &&
-       GetLastError() != ERROR_IO_PENDING) ||
-      !GetOverlappedResult(TunnelHandle, &Over, &Bytes, TRUE))
-    PError("DeviceIoControl(DELETE_TUNNEL_INTERFACE)");
-
-  CloseHandle(TunnelHandle);
-  CloseHandle(EventHandle);
-  CleanRegistry();
-  return 1;
-}
-
-// XXX - to be implemented
-
-int set_up_gw_tunnel(union olsr_ip_addr *Addr)
-{
-  return 1;
-}
diff --git a/src/win32/tunnel.h b/src/win32/tunnel.h
deleted file mode 100644 (file)
index 5b151fc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/* 
- * OLSR ad-hoc routing table management protocol
- * Copyright (C) 2004 Thomas Lopatic (thomas@lopatic.de)
- *
- * This file is part of the olsr.org OLSR daemon.
- *
- * olsr.org is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * olsr.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with olsr.org; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: tunnel.h,v 1.3 2004/10/19 13:58:46 tlopatic Exp $
- *
- */
-
-#if !defined TL_TUNNEL_H_INCLUDED
-
-#define TL_TUNNEL_H_INCLUDED
-
-struct ip_tunnel_parm
-{
-  int dummy;
-};
-
-void set_up_source_tnl(union olsr_ip_addr *, union olsr_ip_addr *, int);
-int del_ip_tunnel(struct ip_tunnel_parm *);
-int set_up_gw_tunnel();
-
-#define IOCTL_IPINIP_ADD_TUNNEL_INTERFACE 0x00128000
-#define IOCTL_IPINIP_DELETE_TUNNEL_INTERFACE 0x00128004
-#define IOCTL_IPINIP_SET_TUNNEL_INFO 0x00128008
-#define IOCTL_IPINIP_GET_TUNNEL_TABLE 0x0012800c
-#define IOCTL_IPINIP_PROCESS_NOTIFICATION 0x00128010
-
-#define STATUS_NON_OPERATIONAL 0
-#define STATUS_OPERATIONAL 5
-
-struct IpInIpAddTunnelInterface
-{
-  // interface index (out)
-
-  unsigned int Index;
-
-  // interface GUID (in)
-
-  unsigned char Guid[16];
-};
-
-struct IpInIpDeleteTunnelInterface
-{
-  // interface index (in)
-
-  unsigned int Index;
-};
-
-struct IpInIpSetTunnelInfo
-{
-  // interface index (in)
-
-  unsigned int Index;
-
-  // interface status (out)
-  // can be either STATUS_OPERATIONAL or STATUS_NON_OPERATIONAL
-
-  unsigned int Status;
-
-  // remote tunnel endpoint (in)
-  // given in network byte order
-
-  unsigned int RemoteAddr;
-
-  // local tunnel endpoint (in)
-  // given in network byte order
-
-  unsigned int LocalAddr;
-
-  // TTL for outbound outer packets (in)
-
-  unsigned char TimeToLive;
-};
-
-struct IpInIpTunnelEntry
-{
-  // interface index
-
-  unsigned int Index;
-
-  // remote tunnel endpoint
-
-  unsigned int RemoteAddr;
-
-  // local tunnel endpoint
-
-  unsigned int LocalAddr;
-
-  // ???
-  // can be either 0x08000000 or 0x00000000
-
-  unsigned int Unknown1;
-
-  // TTL for outbound outer packets
-
-  unsigned char TimeToLive;
-};
-
-struct IpInIpGetTunnelTable
-{
-  // number of tunnel entries (out)
-
-  unsigned int Num;
-
-  // array of tunnel entries
-
-  struct IpInIpTunnelEntry Entries[1];
-};
-
-struct IpInIpProcessNotification
-{
-  // interface status
-  // 0 = interface is up, 1 = interface is down
-
-  int Down;
-
-  // reason for the status change
-  // 0 = ICMP time exceeded, 1 = ICMP destination unreachable,
-  // -1 = detected by periodic status poll
-
-  int Reason;
-
-  // interface index
-
-  unsigned int Index;
-};
-
-#endif