aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjjako <jjako>2004-09-17 11:30:40 +0000
committerjjako <jjako>2004-09-17 11:30:40 +0000
commit0fe0df0079873a7c1cdad3ddcea116267e1379d2 (patch)
treecce712b3dfcdffef34c33f62d50fc2e7ff756de2
parent12f9e6e26325db3d18c43517dc1f486a3f1da42d (diff)
qos length bugfix and apple support plus header cleanup
-rw-r--r--README.MacOSX33
-rw-r--r--ggsn/cmdline.ggo11
-rw-r--r--ggsn/ggsn.c14
-rw-r--r--ggsn/ippool.c6
-rw-r--r--ggsn/syserr.c7
-rw-r--r--ggsn/syserr.h5
-rw-r--r--ggsn/tun.c28
-rw-r--r--ggsn/tun.h5
-rw-r--r--gtp/gtp.c22
-rw-r--r--gtp/gtp.h9
-rw-r--r--gtp/gtpie.c11
-rw-r--r--gtp/gtpie.h7
-rw-r--r--gtp/pdp.c13
-rw-r--r--gtp/pdp.h5
-rw-r--r--gtp/queue.c12
-rw-r--r--gtp/queue.h11
-rw-r--r--sgsnemu/cmdline.ggo8
-rw-r--r--sgsnemu/ippool.c6
-rw-r--r--sgsnemu/sgsnemu.c7
-rw-r--r--sgsnemu/syserr.c7
-rw-r--r--sgsnemu/syserr.h5
-rw-r--r--sgsnemu/tun.c28
-rw-r--r--sgsnemu/tun.h5
23 files changed, 120 insertions, 145 deletions
diff --git a/README.MacOSX b/README.MacOSX
new file mode 100644
index 0000000..0a904cd
--- /dev/null
+++ b/README.MacOSX
@@ -0,0 +1,33 @@
+OpenGGSN/Mac OS X notes
+
+Mac OS X support is experimental, please test and report bugs. The
+Mac OS X port is tested on Mac OS X 10.3.5, but may also work on
+other versions.
+
+1. Compiling
+
+Everything should be straight-forward. Create a separate
+build directory, run ../openggsn/configure and then make.
+If you have problems with configure, execute
+
+$ aclocal && automake && autoheader && autoconf
+
+and then again configure and make.
+
+2. Kernel extensions
+
+You need to add a tunnel kernel extension to your kernel.
+The one I've used is available at
+http://www-user.rhrk.uni-kl.de/~nissler/tuntap/
+but there are others. If you want to compile that from
+sources (instead of using the binary installer), you
+will also need kernel sources from opensource.apple.com.
+
+3. Known problems
+
+None.
+
+--
+
+Pekka Nikander <pekka.nikander@nomadiclab.com>
+
diff --git a/ggsn/cmdline.ggo b/ggsn/cmdline.ggo
index ca4e2c7..e7e0f66 100644
--- a/ggsn/cmdline.ggo
+++ b/ggsn/cmdline.ggo
@@ -1,16 +1,13 @@
# OpenGGSN - Gateway GPRS Support Node
-# Copyright (C) 2002, 2003 Mondru AB.
+# Copyright (C) 2002, 2003, 2004 Mondru AB.
#
# The contents of this file may be used under the terms of the GNU
# General Public License Version 2, provided that the above copyright
# notice and this permission notice is included in all copies or
# substantial portions of the software.
-#
-# The initial developer of the original code is
-# Jens Jakobsen <jj@openggsn.org>
-#
-# Contributor(s):
-
+#
+# Use "gengetopt --conf-parser < cmdline.ggo"
+# to generate cmdline.c and cmdline.h
option "fg" f "Run in foreground" flag off
option "debug" d "Run in debug mode" flag off
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index a59d545..5d60b90 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002, 2003 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/* ggsn.c
@@ -22,6 +17,11 @@
#define _GNU_SOURCE 1 /* strdup() prototype, broken arpa/inet.h */
#endif
+#include "../config.h"
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
#include <syslog.h>
#include <ctype.h>
@@ -47,8 +47,6 @@
#include <time.h>
-#include "config.h"
-
#include "tun.h"
#include "ippool.h"
#include "syserr.h"
diff --git a/ggsn/ippool.c b/ggsn/ippool.c
index a942bce..efd927e 100644
--- a/ggsn/ippool.c
+++ b/ggsn/ippool.c
@@ -9,6 +9,12 @@
*
*/
+#include "../config.h"
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
#include <sys/types.h>
#include <netinet/in.h> /* in_addr */
#include <stdlib.h> /* calloc */
diff --git a/ggsn/syserr.c b/ggsn/syserr.c
index 7223414..8418956 100644
--- a/ggsn/syserr.c
+++ b/ggsn/syserr.c
@@ -1,17 +1,12 @@
/*
* Syslog functions.
- * Copyright (C) 2003 Mondru AB.
+ * Copyright (C) 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#include <stdarg.h>
diff --git a/ggsn/syserr.h b/ggsn/syserr.h
index ae07848..5a41817 100644
--- a/ggsn/syserr.h
+++ b/ggsn/syserr.h
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _SYSERR_H
diff --git a/ggsn/tun.c b/ggsn/tun.c
index 3436972..576e32e 100644
--- a/ggsn/tun.c
+++ b/ggsn/tun.c
@@ -1,17 +1,12 @@
/*
* TUN interface functions.
- * Copyright (C) 2002, 2003 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -55,6 +50,9 @@
#include <net/if.h>
#include <net/if_tun.h>
+#elif defined (__APPLE__)
+#include <net/if.h>
+
#elif defined (__sun__)
#include <stropts.h>
#include <sys/sockio.h>
@@ -336,7 +334,7 @@ int tun_addaddr(struct tun_t *this,
this->addrs++;
return 0;
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__APPLE__)
int fd;
struct ifaliasreq areq;
@@ -415,7 +413,7 @@ int tun_setaddr(struct tun_t *this,
#if defined(__linux__)
ifr.ifr_netmask.sa_family = AF_INET;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
((struct sockaddr_in *) &ifr.ifr_addr)->sin_len =
sizeof (struct sockaddr_in);
((struct sockaddr_in *) &ifr.ifr_dstaddr)->sin_len =
@@ -467,7 +465,7 @@ int tun_setaddr(struct tun_t *this,
((struct sockaddr_in *) &ifr.ifr_netmask)->sin_addr.s_addr =
netmask->s_addr;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr =
netmask->s_addr;
@@ -494,7 +492,7 @@ int tun_setaddr(struct tun_t *this,
/* TODO: How does it work on Solaris? */
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined (__APPLE__)
tun_sifflags(this, IFF_UP | IFF_RUNNING); /* TODO */
return tun_addroute(this, addr, addr, netmask);
#else
@@ -543,7 +541,7 @@ int tun_addroute(struct tun_t *this,
close(fd);
return 0;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
struct {
struct rt_msghdr rt;
@@ -610,7 +608,7 @@ int tun_new(struct tun_t **tun)
#if defined(__linux__)
struct ifreq ifr;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
char devname[IFNAMSIZ+5]; /* "/dev/" + ifname */
int devnum;
struct ifaliasreq areq;
@@ -657,7 +655,7 @@ int tun_new(struct tun_t **tun)
ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */
return 0;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
/* Find suitable device */
for (devnum = 0; devnum < 255; devnum++) { /* TODO 255 */
@@ -784,7 +782,7 @@ int tun_set_cb_ind(struct tun_t *this,
int tun_decaps(struct tun_t *this)
{
-#if defined(__linux__) || defined (__FreeBSD__)
+#if defined(__linux__) || defined (__FreeBSD__) || defined (__APPLE__)
unsigned char buffer[PACKET_MAX];
int status;
@@ -825,7 +823,7 @@ int tun_decaps(struct tun_t *this)
int tun_encaps(struct tun_t *tun, void *pack, unsigned len)
{
-#if defined(__linux__) || defined (__FreeBSD__)
+#if defined(__linux__) || defined (__FreeBSD__) || defined (__APPLE__)
return write(tun->fd, pack, len);
diff --git a/ggsn/tun.h b/ggsn/tun.h
index 8d4618d..eb82162 100644
--- a/ggsn/tun.h
+++ b/ggsn/tun.h
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _TUN_H
diff --git a/gtp/gtp.c b/gtp/gtp.c
index d7880a1..9d4ea7b 100644
--- a/gtp/gtp.c
+++ b/gtp/gtp.c
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -27,6 +22,10 @@
#define _GNU_SOURCE 1
#endif
+#include "../config.h"
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
#include <syslog.h>
#include <stdio.h>
@@ -48,7 +47,6 @@
/* #include <stdint.h> ISO C99 types */
-#include "../config.h"
#include "pdp.h"
#include "gtp.h"
#include "gtpie.h"
@@ -407,7 +405,7 @@ int gtp_req(struct gsn_t *gsn, int version, struct pdp_t *pdp,
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr = *inetaddr;
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
addr.sin_len = sizeof(addr);
#endif
@@ -766,7 +764,7 @@ int gtp_new(struct gsn_t **gsn, char *statedir, struct in_addr *listen,
addr.sin_family = AF_INET;
addr.sin_addr = *listen; /* Same IP for user traffic and signalling*/
addr.sin_port = htons(GTP0_PORT);
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
addr.sin_len = sizeof(addr);
#endif
@@ -787,7 +785,7 @@ int gtp_new(struct gsn_t **gsn, char *statedir, struct in_addr *listen,
addr.sin_family = AF_INET;
addr.sin_addr = *listen; /* Same IP for user traffic and signalling*/
addr.sin_port = htons(GTP1C_PORT);
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
addr.sin_len = sizeof(addr);
#endif
@@ -808,7 +806,7 @@ int gtp_new(struct gsn_t **gsn, char *statedir, struct in_addr *listen,
addr.sin_family = AF_INET;
addr.sin_addr = *listen; /* Same IP for user traffic and signalling*/
addr.sin_port = htons(GTP1U_PORT);
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
addr.sin_len = sizeof(addr);
#endif
@@ -2944,7 +2942,7 @@ int gtp_data_req(struct gsn_t *gsn, struct pdp_t* pdp,
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
addr.sin_len = sizeof(addr);
#endif
diff --git a/gtp/gtp.h b/gtp/gtp.h
index 7e09f6d..7b5083b 100644
--- a/gtp/gtp.h
+++ b/gtp/gtp.h
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _GTP_H
@@ -217,7 +212,7 @@ union gtp_packet {
struct gtp0_packet gtp0;
struct gtp1_packet_short gtp1s;
struct gtp1_packet_long gtp1l;
-} __attribute__((packed)) h;
+} __attribute__((packed));
diff --git a/gtp/gtpie.c b/gtp/gtpie.c
index ac98294..55d3f32 100644
--- a/gtp/gtpie.c
+++ b/gtp/gtpie.c
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -31,6 +26,12 @@
*
*/
+#include <../config.h>
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
diff --git a/gtp/gtpie.h b/gtp/gtpie.h
index c376124..9c0e3ca 100644
--- a/gtp/gtpie.h
+++ b/gtp/gtpie.h
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _GTPIE_H
diff --git a/gtp/pdp.c b/gtp/pdp.c
index 3a652b8..648d70d 100644
--- a/gtp/pdp.c
+++ b/gtp/pdp.c
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002, 2003 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -19,6 +14,12 @@
*
*/
+#include <../config.h>
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
diff --git a/gtp/pdp.h b/gtp/pdp.h
index a6780cd..59541c6 100644
--- a/gtp/pdp.h
+++ b/gtp/pdp.h
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _PDP_H
diff --git a/gtp/queue.c b/gtp/queue.c
index 845b4ba..7fdf9df 100644
--- a/gtp/queue.c
+++ b/gtp/queue.c
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -19,6 +14,11 @@
* Reliable delivery of signalling messages
*/
+#include <../config.h>
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
diff --git a/gtp/queue.h b/gtp/queue.h
index 1e95676..46fa22d 100644
--- a/gtp/queue.h
+++ b/gtp/queue.h
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -22,15 +17,15 @@
#ifndef _QUEUE_H
#define _QUEUE_H
-#define QUEUE_DEBUG 0 /* Print debug information */
+#define QUEUE_DEBUG 0 /* Print debug information */
-#define QUEUE_SIZE 1024 /* Size of retransmission queue */
+#define QUEUE_SIZE 1024 /* Size of retransmission queue */
#define QUEUE_HASH_SIZE 65536 /* Size of hash table (2^16) */
struct qmsg_t { /* Holder for queued packets */
int state; /* 0=empty, 1=full */
uint16_t seq; /* The sequence number */
- uint8_t type; /* The type of packet */
+ uint8_t type; /* The type of packet */
void *cbp; /* Application specific pointer */
union gtp_packet p; /* The packet stored */
int l; /* Length of the packet */
diff --git a/sgsnemu/cmdline.ggo b/sgsnemu/cmdline.ggo
index c3e2943..a000748 100644
--- a/sgsnemu/cmdline.ggo
+++ b/sgsnemu/cmdline.ggo
@@ -1,17 +1,11 @@
# OpenGGSN - Gateway GPRS Support Node
-# Copyright (C) 2002, 2003 Mondru AB.
+# Copyright (C) 2002, 2003, 2004 Mondru AB.
#
# The contents of this file may be used under the terms of the GNU
# General Public License Version 2, provided that the above copyright
# notice and this permission notice is included in all copies or
# substantial portions of the software.
#
-# The initial developer of the original code is
-# Jens Jakobsen <jj@openggsn.org>
-#
-# Contributor(s):
-#
-#
# Use "gengetopt --conf-parser < cmdline.ggo"
# to generate cmdline.c and cmdline.h
diff --git a/sgsnemu/ippool.c b/sgsnemu/ippool.c
index a942bce..efd927e 100644
--- a/sgsnemu/ippool.c
+++ b/sgsnemu/ippool.c
@@ -9,6 +9,12 @@
*
*/
+#include "../config.h"
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
#include <sys/types.h>
#include <netinet/in.h> /* in_addr */
#include <stdlib.h> /* calloc */
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c
index c6cf20d..656e3c3 100644
--- a/sgsnemu/sgsnemu.c
+++ b/sgsnemu/sgsnemu.c
@@ -1,17 +1,12 @@
/*
* OpenGGSN - Gateway GPRS Support Node
- * Copyright (C) 2002, 2003 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
diff --git a/sgsnemu/syserr.c b/sgsnemu/syserr.c
index 7223414..8418956 100644
--- a/sgsnemu/syserr.c
+++ b/sgsnemu/syserr.c
@@ -1,17 +1,12 @@
/*
* Syslog functions.
- * Copyright (C) 2003 Mondru AB.
+ * Copyright (C) 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#include <stdarg.h>
diff --git a/sgsnemu/syserr.h b/sgsnemu/syserr.h
index ae07848..5a41817 100644
--- a/sgsnemu/syserr.h
+++ b/sgsnemu/syserr.h
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _SYSERR_H
diff --git a/sgsnemu/tun.c b/sgsnemu/tun.c
index 3436972..576e32e 100644
--- a/sgsnemu/tun.c
+++ b/sgsnemu/tun.c
@@ -1,17 +1,12 @@
/*
* TUN interface functions.
- * Copyright (C) 2002, 2003 Mondru AB.
+ * Copyright (C) 2002, 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
/*
@@ -55,6 +50,9 @@
#include <net/if.h>
#include <net/if_tun.h>
+#elif defined (__APPLE__)
+#include <net/if.h>
+
#elif defined (__sun__)
#include <stropts.h>
#include <sys/sockio.h>
@@ -336,7 +334,7 @@ int tun_addaddr(struct tun_t *this,
this->addrs++;
return 0;
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__APPLE__)
int fd;
struct ifaliasreq areq;
@@ -415,7 +413,7 @@ int tun_setaddr(struct tun_t *this,
#if defined(__linux__)
ifr.ifr_netmask.sa_family = AF_INET;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
((struct sockaddr_in *) &ifr.ifr_addr)->sin_len =
sizeof (struct sockaddr_in);
((struct sockaddr_in *) &ifr.ifr_dstaddr)->sin_len =
@@ -467,7 +465,7 @@ int tun_setaddr(struct tun_t *this,
((struct sockaddr_in *) &ifr.ifr_netmask)->sin_addr.s_addr =
netmask->s_addr;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr =
netmask->s_addr;
@@ -494,7 +492,7 @@ int tun_setaddr(struct tun_t *this,
/* TODO: How does it work on Solaris? */
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined (__APPLE__)
tun_sifflags(this, IFF_UP | IFF_RUNNING); /* TODO */
return tun_addroute(this, addr, addr, netmask);
#else
@@ -543,7 +541,7 @@ int tun_addroute(struct tun_t *this,
close(fd);
return 0;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
struct {
struct rt_msghdr rt;
@@ -610,7 +608,7 @@ int tun_new(struct tun_t **tun)
#if defined(__linux__)
struct ifreq ifr;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
char devname[IFNAMSIZ+5]; /* "/dev/" + ifname */
int devnum;
struct ifaliasreq areq;
@@ -657,7 +655,7 @@ int tun_new(struct tun_t **tun)
ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */
return 0;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined (__APPLE__)
/* Find suitable device */
for (devnum = 0; devnum < 255; devnum++) { /* TODO 255 */
@@ -784,7 +782,7 @@ int tun_set_cb_ind(struct tun_t *this,
int tun_decaps(struct tun_t *this)
{
-#if defined(__linux__) || defined (__FreeBSD__)
+#if defined(__linux__) || defined (__FreeBSD__) || defined (__APPLE__)
unsigned char buffer[PACKET_MAX];
int status;
@@ -825,7 +823,7 @@ int tun_decaps(struct tun_t *this)
int tun_encaps(struct tun_t *tun, void *pack, unsigned len)
{
-#if defined(__linux__) || defined (__FreeBSD__)
+#if defined(__linux__) || defined (__FreeBSD__) || defined (__APPLE__)
return write(tun->fd, pack, len);
diff --git a/sgsnemu/tun.h b/sgsnemu/tun.h
index 8d4618d..eb82162 100644
--- a/sgsnemu/tun.h
+++ b/sgsnemu/tun.h
@@ -7,11 +7,6 @@
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
- * The initial developer of the original code is
- * Jens Jakobsen <jj@openggsn.org>
- *
- * Contributor(s):
- *
*/
#ifndef _TUN_H