Hi, we currently fail on OpenBSD (4.9) with this error message:
if gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../src/compat -I/usr/include -I/usr/include -g -O2 -MT tun.o -MD -MP -MF ".deps/tun.Tpo" -c -o tun.o tun.c; then mv -f ".deps/tun.Tpo" ".deps/tun.Po"; else rm -f ".deps/tun.Tpo"; exit 1; fi tun.c: In function 'write_tun': tun.c:2070: error: dereferencing pointer to incomplete type *** Error code 1 which looks like ------------------------------------------ struct ip *iph; iph = (struct ip *) buf; if (tt->ipv6 && iph->ip_v == 6) <<< here ------------------------------------------ "struct ip" is defined in <netinet/ip.h>, which "syshead.h" includes in weird ways - "syshead.h" has 5 different #ifdef HAVE_NETINET_IP_H #include <netinet/ip.h> #endif stanzas, always inside #ifdef TARGET_SOMETHING blocks. It does have such a block for TARGET_OPENBSD, but configure doesn't find it: checking for net/if.h... yes checking for netinet/ip.h... no checking for netinet/if_ether.h... no The relevant section from config.log is here: ---------------------------- snip --------------------------------- configure:21681: checking for netinet/ip.h configure:21681: gcc -c -g -O2 conftest.c >&5 In file included from conftest.c:170: /usr//include/netinet/ip.h:178: error: expected specifier-qualifier-list before 'n_time' configure:21681: $? = 1 configure: failed program was: ---------------------------- snip --------------------------------- which is defined in <netinet/in_systm.h> - which syshead.h already includes. the full config log can be found on http://public.greenie.net/gert/openvpn/config-obsd49-20120326.log I'd promise instead of trying to fix configure here, and since these are inside well-understood #ifdef TARGET_<foo> things already, just assume that "if it's *BSD, it will always have <netinet/ip.h>" and don't bother running fragile tests from configure. So that would turn syshead.h #ifdef TARGET_OPENBSD #ifdef HAVE_SYS_UIO_H #include <sys/uio.h> #endif #ifdef HAVE_NETINET_IN_SYSTM_H #include <netinet/in_systm.h> #endif #ifdef HAVE_NETINET_IP_H #include <netinet/ip.h> #endif #ifdef HAVE_NET_IF_TUN_H #include <net/if_tun.h> #endif #endif /* TARGET_OPENBSD */ into #ifdef TARGET_OPENBSD #include <sys/uio.h> #include <netinet/in_systm.h> #include <netinet/ip.h> #include <net/if_tun.h> #endif /* TARGET_OPENBSD */ ... which is to the point, and works. gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany g...@greenie.muc.de fax: +49-89-35655025 g...@net.informatik.tu-muenchen.de
pgpHPuNkeNgd7.pgp
Description: PGP signature