Hey, that's great news. It looks like you were able to make it work with a
very small patch.
A couple comments:
(1) The TYPE_SOCKLEN_T macro is cool, but we can't rely on people having
autoconf 2.5 or newer (unless we start distributing configure in addition to
configure.in). Is there a way the macro could be coded to eliminate this
dependency? What is it in the macro that requires 2.5?
(2) You might want to take a look at 22.214.171.124 which is on the CVS now. In
particular, tun.c has seen a lot of work over the weekend to add support for
solaris, freebsd, and openbsd. You will want to add an #ifdef TARGET_DARWIN
to the mix. You might also want to add a TARGET_DARWIN case to
do_ifconfig(), so OpenVPN's --ifconfig option works correctly on Mac OS X.
Can you edit INSTALL with the appropriate Mac OS X info, including a URL
where they can get your tun driver, and initial steps to create and
configure the tun device?
I will merge everything in your patch now except the TYPE_SOCKLEN_T macro
pending more thought.
----- Original Message -----
From: "Christoph Pfisterer" <cp@...>
Sent: Monday, May 06, 2002 7:08 AM
Subject: [Openvpn-devel] Mac OS X support
> Hi all!
> With some tweaking, I was able to get OpenVPN running on Mac OS X and
> use it happily with a Linux peer. Discussion and patches follow.
> First of all, current versions of Mac OS X don't include a tun
> driver, although it is present in the source tree (publicly available
> via CVS). An independent port of the FreeBSD driver as a loadable
> module exists, but OpenVPN uncovered some bugs in it. I was able to
> fix those bugs and effectively took over maintenance of the driver.
> It is available from <http://chrisp.de/en/projects/tunnel.html>;
> OpenVPN requires at least version 1.1.0.
> OpenVPN itself also needed some small patches, mostly due to Mac OS
> X's customized GCC and its outdated BSD headers. There are three main
> 1. There is no in_addr_t and uint32_t is not automatically defined.
> Some research revealed that uint32_t is defined in <stdint.h>, which
> is not included explicitly. On Linux, it is included implicitly by
> <netinet/in.h>, but not so on Mac OS X. This is easily fixed in
> 2. Apple's precompiling version of cpp doesn't know about macros with
> variable arguments. Passing the "--no-cpp-precomp" command line
> option gets rid of this. I added a small check to configure to add it
> 3. There is no socklen_t. Coming up with a quick workaround was easy,
> but fixing it properly wasn't. I found a quite complete configure
> test for this in OpenSSH, it actually originated from curl.
> Unfortunately it only works with autoconf 2.50 or newer.
> The attached patch is against the current CVS version (which
> identifies itself as 126.96.36.199). It compiles and runs fine on my Mac OS
> X box, although I haven't tested the new features yet.
> Please let me know what you think.
> chrisp a.k.a. Christoph Pfisterer "Any sufficiently advanced
> cp@... - http://chrisp.de bug is indistinguishable
> PGP key & geek code available from a feature."