From: David Hankins Date: Sat, 19 May 2007 21:35:21 +0000 (+0000) Subject: Load net/if_dl.h if it exists (FreeBSD compile fix). X-Git-Tag: v4_0_0a1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dd7efa2109c0538303bd9e81bbc143a40d61578;p=thirdparty%2Fdhcp.git Load net/if_dl.h if it exists (FreeBSD compile fix). --- diff --git a/common/discover.c b/common/discover.c index a27217bf6..0304468a5 100644 --- a/common/discover.c +++ b/common/discover.c @@ -34,7 +34,7 @@ #ifndef lint static char copyright[] = -"$Id: discover.c,v 1.56 2007/05/19 18:47:14 dhankins Exp $ Copyright (c) 2004-2007 Internet Systems Consortium. All rights reserved.\n"; +"$Id: discover.c,v 1.57 2007/05/19 21:35:21 dhankins Exp $ Copyright (c) 2004-2007 Internet Systems Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -906,7 +906,7 @@ discover_interfaces(int state) { /* If we have the capability, extract link information and record it in. */ -#ifdef AF_LINK +#ifdef HAVE_AF_LINK if (info.addr.ss_family == AF_LINK) { struct sockaddr_dl *d = (struct sockaddr_dl*)&info.addr; tmp->hw_address.hlen = d->sdl_alen; diff --git a/configure b/configure index 3ba4f15e1..daef2755e 100755 --- a/configure +++ b/configure @@ -4184,6 +4184,154 @@ fi +# Look for optional headers. +if test "${ac_cv_header_net_if_dl_h+set}" = set; then + echo "$as_me:$LINENO: checking for net/if_dl.h" >&5 +echo $ECHO_N "checking for net/if_dl.h... $ECHO_C" >&6 +if test "${ac_cv_header_net_if_dl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_net_if_dl_h" >&5 +echo "${ECHO_T}$ac_cv_header_net_if_dl_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking net/if_dl.h usability" >&5 +echo $ECHO_N "checking net/if_dl.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking net/if_dl.h presence" >&5 +echo $ECHO_N "checking net/if_dl.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: net/if_dl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: net/if_dl.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: net/if_dl.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: net/if_dl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: net/if_dl.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: net/if_dl.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: net/if_dl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: net/if_dl.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: net/if_dl.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## --------------------------------- ## +## Report this to dhcp-users@isc.org ## +## --------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for net/if_dl.h" >&5 +echo $ECHO_N "checking for net/if_dl.h... $ECHO_C" >&6 +if test "${ac_cv_header_net_if_dl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_net_if_dl_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_net_if_dl_h" >&5 +echo "${ECHO_T}$ac_cv_header_net_if_dl_h" >&6 + +fi +if test $ac_cv_header_net_if_dl_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_IF_DL 1 +_ACEOF + +fi + + + # find an MD5 library echo "$as_me:$LINENO: checking for library containing MD5_Init" >&5 echo $ECHO_N "checking for library containing MD5_Init... $ECHO_C" >&6 diff --git a/configure.ac b/configure.ac index d9bd2b0de..849db1c16 100644 --- a/configure.ac +++ b/configure.ac @@ -66,6 +66,11 @@ AC_CHECK_HEADER(net/bpf.h, [Define to 1 to use the Berkeley Packet Filter interface code.])) +# Look for optional headers. +AC_CHECK_HEADER(net/if_dl.h, + AC_DEFINE([HAVE_IF_DL], [1], + [Define to 1 if the system has a net/if_dl.h header.])) + # find an MD5 library AC_SEARCH_LIBS(MD5_Init, [crypto]) AC_SEARCH_LIBS(MD5Init, [crypto]) diff --git a/includes/config.h.in b/includes/config.h.in index 4c4753803..1d95a5db8 100644 --- a/includes/config.h.in +++ b/includes/config.h.in @@ -40,6 +40,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the header file. */ +#undef HAVE_IF_DL + /* Define to 1 if the inet_aton() function is missing. */ #undef NEED_INET_ATON diff --git a/includes/dhcpd.h b/includes/dhcpd.h index 4fb0467d2..69feb44cf 100644 --- a/includes/dhcpd.h +++ b/includes/dhcpd.h @@ -58,6 +58,9 @@ #include #include #include +#if HAVE_IF_DL +# include +#endif #include