From: Ian Jackson Date: Sun, 29 Jun 2014 22:58:03 +0000 (+0100) Subject: ipv6: check for support in system and in adns X-Git-Tag: base.polypath.v3~20 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=secnet.git;a=commitdiff_plain;h=8a652c3d48f720ec960637035ada3c6d95c1a3da ipv6: check for support in system and in adns We #define CONFIG_IPV6 if the system has AF_INET6 and adns has adns_addr2text (which only the IPv6-capable adns has). Signed-off-by: Ian Jackson --- diff --git a/config.h.in b/config.h.in index 74fea83..a8b73b9 100644 --- a/config.h.in +++ b/config.h.in @@ -8,6 +8,9 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD +/* Define to 1 to use IPv6 support in system and adns */ +#undef CONFIG_IPV6 + /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H diff --git a/configure b/configure index 0a9da90..cf4e581 100755 --- a/configure +++ b/configure @@ -1862,6 +1862,119 @@ fi as_fn_set_status $ac_retval } # ac_fn_c_try_link + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. @@ -4598,6 +4711,36 @@ fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: Checking requirements for IPv6 support..." >&5 +$as_echo "$as_me: Checking requirements for IPv6 support..." >&6;} +enable_ipv6=true + +ac_fn_c_check_decl "$LINENO" "AF_INET6" "ac_cv_have_decl_AF_INET6" "#include +" +if test "x$ac_cv_have_decl_AF_INET6" = xyes; then : + +else + enable_ipv6=false +fi + +ac_fn_c_check_func "$LINENO" "adns_addr2text" "ac_cv_func_adns_addr2text" +if test "x$ac_cv_func_adns_addr2text" = xyes; then : + +else + enable_ipv6=false +fi + +if $enable_ipv6; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling IPv6 support" >&5 +$as_echo "$as_me: Enabling IPv6 support" >&6;} + +$as_echo "#define CONFIG_IPV6 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling IPv6 support" >&5 +$as_echo "$as_me: WARNING: Disabling IPv6 support" >&2;} +fi + ac_config_files="$ac_config_files Makefile" ac_config_commands="$ac_config_commands default" diff --git a/configure.in b/configure.in index 747d901..0c0c545 100644 --- a/configure.in +++ b/configure.in @@ -70,6 +70,19 @@ AC_CHECK_LIB(resolv,inet_aton) AC_CHECK_LIB(adns,adns_init) REQUIRE_HEADER([adns.h]) +AC_MSG_NOTICE([Checking requirements for IPv6 support...]) +enable_ipv6=true +m4_define(NO_IPV6,[enable_ipv6=false]) +AC_CHECK_DECL(AF_INET6, [],[NO_IPV6],[#include ]) +AC_CHECK_FUNC(adns_addr2text, [],[NO_IPV6]) +if $enable_ipv6; then + AC_MSG_NOTICE([Enabling IPv6 support]) + AC_DEFINE(CONFIG_IPV6, 1, + [Define to 1 to use IPv6 support in system and adns]) +else + AC_MSG_WARN([Disabling IPv6 support]) +fi + AC_OUTPUT(Makefile,echo timestamp >stamp-h) AH_TOP([