OK, here is a full patch for your convenience without the "apply on top" junk, with this patch, the current CVS compiles on:
SuSE Linux 7.3 x86 gcc 2.95.3 SuSE Linux 8.1 x86 gcc 3.2 FreeBSD 4-STABLE x86 gcc 2.95.3+FreeBSD Solaris 8 Sparc gcc 2.95.3 Solaris 8 Sparc SunPro Workshop 6. The unfixed bug that remains that I am aware of is the --disable-crypto issue I reported earlier today. I don't think many people will use this configure option, but it should be fixed nonetheless, that's what beta versions are good for :-) Thanks for the continued maintenance of OpenVPN, BTW. # Makefile.am | 18 ++++++++++++++++-- # buffer.c | 2 +- # configure.ac | 11 +++++++++-- # crypto.c | 10 ++++------ # error.c | 5 ++++- # error.h | 6 +----- # openvpn.spec | 1 - # 7 files changed, 35 insertions(+), 18 deletions(-) Index: buffer.c =================================================================== RCS file: /cvsroot/openvpn/openvpn/buffer.c,v retrieving revision 1.7 diff -u -r1.7 buffer.c --- buffer.c 9 May 2002 19:30:42 -0000 1.7 +++ buffer.c 19 Feb 2003 15:43:56 -0000 @@ -160,7 +160,7 @@ e->back = thread->gc_stack; thread->gc_stack = e; /*printf("GC MALLOC " ptr_format " size=%d lev=%d\n", e, s, e->level); */ - return (void *) e + sizeof (struct gc_entry); + return (char *) e + sizeof (struct gc_entry); } void Index: crypto.c =================================================================== RCS file: /cvsroot/openvpn/openvpn/crypto.c,v retrieving revision 1.11 diff -u -r1.11 crypto.c --- crypto.c 6 Feb 2003 09:49:51 -0000 1.11 +++ crypto.c 19 Feb 2003 15:43:57 -0000 @@ -77,9 +77,6 @@ #define CRYPT_ERROR(format) \ do { msg (D_CRYPT_ERRORS, "%s: " format, error_prefix); goto error_exit; } while (false) -#define CRYPT_ERROR_ARGS(format, args...) \ - do { msg (D_CRYPT_ERRORS, "%s: " format, error_prefix, args); goto error_exit; } while (false) - void openvpn_encrypt (struct buffer *buf, struct buffer work, const struct crypto_options *opt, @@ -339,9 +336,10 @@ packet_id_add (&opt->packet_id->rec, &pin); if (opt->pid_persist && opt->packet_id_long_form) packet_id_persist_save_obj (opt->pid_persist, opt->packet_id); - } - else - CRYPT_ERROR_ARGS ("bad packet ID (may be a replay): %s", packet_id_net_print (&pin)); + } else { + msg(D_CRYPT_ERRORS, "%s: bad packet ID (may be a replay): %s", error_prefix, packet_id_net_print(&pin)); + goto error_exit; + } } *buf = work; } Index: error.c =================================================================== RCS file: /cvsroot/openvpn/openvpn/error.c,v retrieving revision 1.10 diff -u -r1.10 error.c --- error.c 9 Dec 2002 15:40:34 -0000 1.10 +++ error.c 19 Feb 2003 15:43:57 -0000 @@ -114,7 +114,7 @@ int msg_line_num; void -_msg (unsigned int flags, const char *format, ...) +msg (unsigned int flags, const char *format, ...) { va_list arglist; int level; @@ -124,6 +124,9 @@ char *m2; char *tmp; int e; + + if (!(((flags) & M_DEBUG_LEVEL) < _debug_level || ((flags) & M_FATAL))) + return; e = errno; Index: error.h =================================================================== RCS file: /cvsroot/openvpn/openvpn/error.h,v retrieving revision 1.8 diff -u -r1.8 error.h --- error.h 9 Dec 2002 15:40:34 -0000 1.8 +++ error.h 19 Feb 2003 15:43:57 -0000 @@ -76,11 +76,7 @@ */ #define LOGLEV(log_level, mute_level, other) (((log_level)-1) | ENCODE_MUTE_LEVEL(mute_level) | other) -#define msg(flags, args...) \ - do { if (((flags) & M_DEBUG_LEVEL) < _debug_level || ((flags) & M_FATAL)) \ - _msg((flags), args); } while (false) - -void _msg (unsigned int flags, const char *format, ...); /* should be called via msg above */ +void msg (unsigned int flags, const char *format, ...); void error_reset (); void set_check_status (int info_level, int verbose_level); Index: configure.ac =================================================================== RCS file: /cvsroot/openvpn/openvpn/configure.ac,v retrieving revision 1.51 diff -u -r1.51 configure.ac --- configure.ac 16 Feb 2003 19:01:49 -0000 1.51 +++ configure.ac 19 Feb 2003 15:43:57 -0000 @@ -27,6 +27,7 @@ AC_INIT([OpenVPN], [1.3.2.9], [openvpn-us...@lists.sourceforge.net], [openvpn]) AM_CONFIG_HEADER(config.h) +AC_CONFIG_SRCDIR(syshead.h) AC_ARG_ENABLE(lzo, [ --disable-lzo Do not compile LZO compression support], @@ -66,7 +67,7 @@ AC_ARG_WITH(ssl-lib, [ --with-ssl-lib=DIR Crypto/SSL Library location], - [LIBS="$LIBS -L$withval"] + [LDFLAGS="$LDFLAGS -L$withval"] ) AC_ARG_WITH(lzo-headers, @@ -77,7 +78,7 @@ AC_ARG_WITH(lzo-lib, [ --with-lzo-lib=DIR LZO Library location], - [LIBS="$LIBS -L$withval"] + [LDFLAGS="$LDFLAGS -L$withval"] ) AC_ARG_WITH(ifconfig-path, @@ -97,6 +98,9 @@ AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE(openvpn, [$PACKAGE_VERSION]) +dnl fix search path, to allow compilers to find syshead.h +CPPFLAGS="$CPPFLAGS -I${srcdir}" + dnl check target OS openvpn_target=$target if test $target_alias; then @@ -137,8 +141,11 @@ dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE +AC_C_VOLATILE +AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T +AC_TYPE_UID_T AC_HEADER_TIME dnl Check for more header files. Index: Makefile.am =================================================================== RCS file: /cvsroot/openvpn/openvpn/Makefile.am,v retrieving revision 1.3 diff -u -r1.3 Makefile.am --- Makefile.am 25 Jun 2002 06:56:16 -0000 1.3 +++ Makefile.am 19 Feb 2003 15:43:57 -0000 @@ -24,9 +24,23 @@ # sbin_PROGRAMS = openvpn -openvpn_SOURCES = basic.h buffer.c buffer.h circ_list.h common.h config.h crypto.c crypto.h errlevel.h error.c error.h fdmisc.c fdmisc.h gremlin.c gremlin.h interval.h lzo.c lzo.h memdbg.h misc.c misc.h mtu.h openvpn.c openvpn.h options.c options.h packet_id.c packet_id.h reliable.c reliable.h session_id.c session_id.h shaper.c shaper.h socket.c socket.h ssl.c ssl.h syshead.h thread.c thread.h tun.c tun.h +nodist_openvpn_SOURCES = config.h +openvpn_SOURCES = basic.h buffer.c buffer.h circ_list.h common.h \ + crypto.c crypto.h errlevel.h error.c error.h \ + fdmisc.c fdmisc.h gremlin.c gremlin.h interval.h \ + lzo.c lzo.h memdbg.h misc.c misc.h mtu.h openvpn.c \ + openvpn.h options.c options.h packet_id.c \ + packet_id.h reliable.c reliable.h session_id.c \ + session_id.h shaper.c shaper.h socket.c socket.h \ + ssl.c ssl.h syshead.h thread.c thread.h tun.c tun.h KEY_FILES = dh1024.pem client.crt client.key server.crt server.key tmp-ca.crt tmp-ca.key man_MANS = openvpn.8 -EXTRA_DIST = $(KEY_FILES) +EXTRA_DIST = $(KEY_FILES) $(man_MANS) \ + COPYRIGHT.GPL PORTS openvpn.spec \ + easy-rsa sample-config-files sample-keys \ + sample-scripts + +dist-hook: + cd $(distdir) && for i in $(EXTRA_DIST) ; do find $$i -name CVS -type d -prune -exec rm -r '{}' ';' ; done Index: openvpn.spec =================================================================== RCS file: /cvsroot/openvpn/openvpn/openvpn.spec,v retrieving revision 1.59 diff -u -r1.59 openvpn.spec --- openvpn.spec 16 Feb 2003 19:01:49 -0000 1.59 +++ openvpn.spec 19 Feb 2003 15:43:57 -0000 @@ -22,7 +22,6 @@ %setup -q %build -./pre-touch %configure --enable-pthread %__make