diff --git a/addrtoname.c b/addrtoname.c index 621021f1..f4d05e97 100644 --- a/addrtoname.c +++ b/addrtoname.c @@ -40,27 +40,63 @@ #define HTONS(x) (x) = htons(x) #endif -#ifdef USE_ETHER_NTOHOST -#ifdef HAVE_NETINET_IF_ETHER_H -struct mbuf; /* Squelch compiler warnings on some platforms for */ -struct rtentry; /* declarations in */ -#include /* for "struct ifnet" in "struct arpcom" on Solaris */ -#include -#endif /* HAVE_NETINET_IF_ETHER_H */ -#ifdef NETINET_ETHER_H_DECLARES_ETHER_NTOHOST -#include -#endif /* NETINET_ETHER_H_DECLARES_ETHER_NTOHOST */ +#ifndef _WIN32 + #ifdef USE_ETHER_NTOHOST + #if defined(NET_ETHERNET_H_DECLARES_ETHER_NTOHOST) + /* + * OK, just include . + */ + #include + #elif defined(NETINET_ETHER_H_DECLARES_ETHER_NTOHOST) + /* + * OK, just include + */ + #include + #elif defined(SYS_ETHERNET_H_DECLARES_ETHER_NTOHOST) + /* + * OK, just include + */ + #include + #elif defined(ARPA_INET_H_DECLARES_ETHER_NTOHOST) + /* + * OK, just include + */ + #include + #elif defined(NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST) + /* + * OK, include , after all the other stuff we + * need to include or define for its benefit. + */ + #define NEED_NETINET_IF_ETHER_H + #else + /* + * We'll have to declare it ourselves. + * If defines struct ether_addr, include + * it. Otherwise, define it ourselves. + */ + #ifdef HAVE_STRUCT_ETHER_ADDR + #define NEED_NETINET_IF_ETHER_H + #else /* HAVE_STRUCT_ETHER_ADDR */ + struct ether_addr { + unsigned char ether_addr_octet[6]; + }; + #endif /* HAVE_STRUCT_ETHER_ADDR */ + #endif /* what declares ether_ntohost() */ -#if !defined(HAVE_DECL_ETHER_NTOHOST) || !HAVE_DECL_ETHER_NTOHOST -#ifndef HAVE_STRUCT_ETHER_ADDR -struct ether_addr { - unsigned char ether_addr_octet[6]; -}; -#endif -extern int ether_ntohost(char *, const struct ether_addr *); -#endif + #ifdef NEED_NETINET_IF_ETHER_H + #include /* Needed on some platforms */ + #include /* Needed on some platforms */ + #include + #endif /* NEED_NETINET_IF_ETHER_H */ -#endif /* USE_ETHER_NTOHOST */ + #ifndef HAVE_DECL_ETHER_NTOHOST + /* + * No header declares it, so declare it ourselves. + */ + extern int ether_ntohost(char *, const struct ether_addr *); + #endif /* !defined(HAVE_DECL_ETHER_NTOHOST) */ + #endif /* USER_ETHER_NTOHOST */ +#endif /* _WIN32 */ #include #include diff --git a/cmakeconfig.h.in b/cmakeconfig.h.in index 3346ad69..8c5168d1 100644 --- a/cmakeconfig.h.in +++ b/cmakeconfig.h.in @@ -1,5 +1,8 @@ /* cmakeconfig.h.in */ +/* Define to 1 if arpa/inet.h declares `ether_ntohost' */ +#cmakedefine ARPA_INET_H_DECLARES_ETHER_NTOHOST 1 + /* define if you want to build the possibly-buggy SMB printer */ #cmakedefine ENABLE_SMB 1 @@ -76,12 +79,6 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_NETDNET_DN_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_NETINET_ETHER_H 1 - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_NETINET_IF_ETHER_H 1 - /* Define to 1 if you have the header file. */ #cmakedefine HAVE_NET_IF_PFLOG_H 1 @@ -256,6 +253,9 @@ /* Define to 1 if netinet/if_ether.h declares `ether_ntohost' */ #cmakedefine NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST 1 +/* Define to 1 if net/ethernet.h declares `ether_ntohost' */ +#cmakedefine NET_ETHERNET_H_DECLARES_ETHER_NTOHOST 1 + /* Define to the address where bug reports for this package should be sent. */ #cmakedefine PACKAGE_BUGREPORT "" @@ -277,6 +277,9 @@ /* Define to 1 if you have the ANSI C header files. */ #cmakedefine STDC_HEADERS 1 +/* Define to 1 if sys/ethernet.h declares `ether_ntohost' */ +#cmakedefine SYS_ETHERNET_H_DECLARES_ETHER_NTOHOST 1 + /* define if you have ether_ntohost() and it works */ #cmakedefine USE_ETHER_NTOHOST 1 diff --git a/config.h.in b/config.h.in index 43260010..db43da34 100644 --- a/config.h.in +++ b/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* Define to 1 if arpa/inet.h declares `ether_ntohost' */ +#undef ARPA_INET_H_DECLARES_ETHER_NTOHOST + /* define if you want to build the possibly-buggy SMB printer */ #undef ENABLE_SMB @@ -24,8 +27,7 @@ /* Casper support available */ #undef HAVE_CASPER -/* Define to 1 if you have the declaration of `ether_ntohost', and to 0 if you - don't. */ +/* Define to 1 if you have the declaration of `ether_ntohost' */ #undef HAVE_DECL_ETHER_NTOHOST /* define if you have the dnet_htoa function */ @@ -76,12 +78,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETDNET_DN_H -/* Define to 1 if you have the header file. */ -#undef HAVE_NETINET_ETHER_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_NETINET_IF_ETHER_H - /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_PFLOG_H @@ -256,6 +252,9 @@ /* Define to 1 if netinet/if_ether.h declares `ether_ntohost' */ #undef NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST +/* Define to 1 if net/ethernet.h declares `ether_ntohost' */ +#undef NET_ETHERNET_H_DECLARES_ETHER_NTOHOST + /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -277,6 +276,9 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define to 1 if sys/ethernet.h declares `ether_ntohost' */ +#undef SYS_ETHERNET_H_DECLARES_ETHER_NTOHOST + /* define if you have ether_ntohost() and it works */ #undef USE_ETHER_NTOHOST diff --git a/configure b/configure index 452372d8..39325a52 100755 --- a/configure +++ b/configure @@ -5713,11 +5713,12 @@ fi # # You are in a twisty little maze of UN*Xes, all different. # Some might not have ether_ntohost(). -# Some might have it, but not declare it in any header file. -# Some might have it, but declare it in . -# Some might have it, but declare it in -# (And some might have it but document it as something declared in -# , although appears to work.) +# Some might have it and declare it in . +# Some might have it and declare it in +# Some might have it and declare it in . +# Some might have it and declare it in . +# Some might have it and declare it in . +# Some might have it and not declare it in any header file. # # Before you is a C compiler. # @@ -5781,39 +5782,135 @@ done if test "$ac_cv_func_ether_ntohost" = yes -a \ "$ac_cv_buggy_ether_ntohost" = "no"; then # - # OK, we have ether_ntohost(). Do we have ? + # OK, we have ether_ntohost(). Is it declared in ? # - for ac_header in netinet/if_ether.h -do : - ac_fn_c_check_header_compile "$LINENO" "netinet/if_ether.h" "ac_cv_header_netinet_if_ether_h" " -#include -#include -#include -struct mbuf; -struct rtentry; -#include + # This test fails if we don't have or if we do + # but it doesn't declare ether_ntohost(). + # + ac_fn_c_check_decl "$LINENO" "ether_ntohost" "ac_cv_have_decl_ether_ntohost" " +#include + " -if test "x$ac_cv_header_netinet_if_ether_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NETINET_IF_ETHER_H 1 -_ACEOF +if test "x$ac_cv_have_decl_ether_ntohost" = xyes; then : + + +$as_echo "#define NET_ETHERNET_H_DECLARES_ETHER_NTOHOST /**/" >>confdefs.h + fi -done + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then + # + # No, how about , as on Linux? + # + # This test fails if we don't have + # or if we do but it doesn't declare ether_ntohost(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost + ac_fn_c_check_decl "$LINENO" "ether_ntohost" "ac_cv_have_decl_ether_ntohost" " +#include - if test "$ac_cv_header_netinet_if_ether_h" = yes; then +" +if test "x$ac_cv_have_decl_ether_ntohost" = xyes; then : + + +$as_echo "#define NETINET_ETHER_H_DECLARES_ETHER_NTOHOST /**/" >>confdefs.h + + +fi + + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then # - # Yes. Does it declare ether_ntohost()? + # No, how about , as on Solaris 10 + # and later? # + # This test fails if we don't have + # or if we do but it doesn't declare ether_ntohost(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost + ac_fn_c_check_decl "$LINENO" "ether_ntohost" "ac_cv_have_decl_ether_ntohost" " +#include + +" +if test "x$ac_cv_have_decl_ether_ntohost" = xyes; then : + + +$as_echo "#define SYS_ETHERNET_H_DECLARES_ETHER_NTOHOST /**/" >>confdefs.h + + +fi + + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then + # + # No, how about , as in AIX? + # + # This test fails if we don't have + # (if we have ether_ntohost(), we should have + # networking, and if we have networking, we should + # have ) or if we do but it doesn't + # declare ether_ntohost(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost + ac_fn_c_check_decl "$LINENO" "ether_ntohost" "ac_cv_have_decl_ether_ntohost" " +#include + +" +if test "x$ac_cv_have_decl_ether_ntohost" = xyes; then : + + +$as_echo "#define ARPA_INET_H_DECLARES_ETHER_NTOHOST /**/" >>confdefs.h + + +fi + + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then + # + # No, how about ? + # On some platforms, it requires and + # , and we always include it with + # both of them, so test it with both of them. + # + # This test fails if we don't have + # and the headers we include before it, or if we do but + # doesn't declare ether_hostton(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost ac_fn_c_check_decl "$LINENO" "ether_ntohost" "ac_cv_have_decl_ether_ntohost" " #include #include -#include -#include -struct mbuf; -struct rtentry; #include +#include #include " @@ -5827,63 +5924,27 @@ fi fi # - # Did that succeed? + # After all that, is ether_ntohost() declared? # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then + if test "$ac_cv_have_decl_ether_ntohost" = yes; then # - # No, how about , as on Linux? + # Yes. # - for ac_header in netinet/ether.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "netinet/ether.h" "ac_cv_header_netinet_ether_h" "$ac_includes_default" -if test "x$ac_cv_header_netinet_ether_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NETINET_ETHER_H 1 -_ACEOF -fi +$as_echo "#define HAVE_DECL_ETHER_NTOHOST 1" >>confdefs.h -done - - if test "$ac_cv_header_netinet_ether_h" = yes; then - # - # We have it - does it declare ether_ntohost()? - # Unset ac_cv_have_decl_ether_ntohost so we don't - # treat the previous failure as a cached value and - # suppress the next test. - # - unset ac_cv_have_decl_ether_ntohost - ac_fn_c_check_decl "$LINENO" "ether_ntohost" "ac_cv_have_decl_ether_ntohost" " -#include - -" -if test "x$ac_cv_have_decl_ether_ntohost" = xyes; then : - - -$as_echo "#define NETINET_ETHER_H_DECLARES_ETHER_NTOHOST /**/" >>confdefs.h - - -fi - - fi - fi - # - # Is ether_ntohost() declared? - # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then + else # # No, we'll have to declare it ourselves. - # Do we have "struct ether_addr"? + # Do we have "struct ether_addr" if we include + # ? # ac_fn_c_check_type "$LINENO" "struct ether_addr" "ac_cv_type_struct_ether_addr" " -#include -#include -#include -#include -struct mbuf; -struct rtentry; -#include -#include + #include + #include + #include + #include + #include " if test "x$ac_cv_type_struct_ether_addr" = xyes; then : @@ -5895,13 +5956,6 @@ _ACEOF fi - -$as_echo "#define HAVE_DECL_ETHER_NTOHOST 0" >>confdefs.h - - else - -$as_echo "#define HAVE_DECL_ETHER_NTOHOST 1" >>confdefs.h - fi fi diff --git a/configure.ac b/configure.ac index d47b2fdc..bc74568a 100644 --- a/configure.ac +++ b/configure.ac @@ -434,11 +434,12 @@ AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS) # # You are in a twisty little maze of UN*Xes, all different. # Some might not have ether_ntohost(). -# Some might have it, but not declare it in any header file. -# Some might have it, but declare it in . -# Some might have it, but declare it in -# (And some might have it but document it as something declared in -# , although appears to work.) +# Some might have it and declare it in . +# Some might have it and declare it in +# Some might have it and declare it in . +# Some might have it and declare it in . +# Some might have it and declare it in . +# Some might have it and not declare it in any header file. # # Before you is a C compiler. # @@ -470,19 +471,114 @@ AC_CHECK_FUNCS(ether_ntohost, [ if test "$ac_cv_func_ether_ntohost" = yes -a \ "$ac_cv_buggy_ether_ntohost" = "no"; then # - # OK, we have ether_ntohost(). Do we have ? + # OK, we have ether_ntohost(). Is it declared in ? # - AC_CHECK_HEADERS(netinet/if_ether.h, , , [ -#include -#include -#include -struct mbuf; -struct rtentry; -#include ]) - if test "$ac_cv_header_netinet_if_ether_h" = yes; then + # This test fails if we don't have or if we do + # but it doesn't declare ether_ntohost(). + # + AC_CHECK_DECL(ether_ntohost, + [ + AC_DEFINE(NET_ETHERNET_H_DECLARES_ETHER_NTOHOST,, + [Define to 1 if net/ethernet.h declares `ether_ntohost']) + ],, + [ +#include + ]) + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then # - # Yes. Does it declare ether_ntohost()? + # No, how about , as on Linux? # + # This test fails if we don't have + # or if we do but it doesn't declare ether_ntohost(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost + AC_CHECK_DECL(ether_ntohost, + [ + AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_NTOHOST,, + [Define to 1 if netinet/ether.h declares `ether_ntohost']) + ],, + [ +#include + ]) + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then + # + # No, how about , as on Solaris 10 + # and later? + # + # This test fails if we don't have + # or if we do but it doesn't declare ether_ntohost(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost + AC_CHECK_DECL(ether_ntohost, + [ + AC_DEFINE(SYS_ETHERNET_H_DECLARES_ETHER_NTOHOST,, + [Define to 1 if sys/ethernet.h declares `ether_ntohost']) + ],, + [ +#include + ]) + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then + # + # No, how about , as in AIX? + # + # This test fails if we don't have + # (if we have ether_ntohost(), we should have + # networking, and if we have networking, we should + # have ) or if we do but it doesn't + # declare ether_ntohost(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost + AC_CHECK_DECL(ether_ntohost, + [ + AC_DEFINE(ARPA_INET_H_DECLARES_ETHER_NTOHOST,, + [Define to 1 if arpa/inet.h declares `ether_ntohost']) + ],, + [ +#include + ]) + fi + # + # Did that succeed? + # + if test "$ac_cv_have_decl_ether_ntohost" != yes; then + # + # No, how about ? + # On some platforms, it requires and + # , and we always include it with + # both of them, so test it with both of them. + # + # This test fails if we don't have + # and the headers we include before it, or if we do but + # doesn't declare ether_hostton(). + # + # Unset ac_cv_have_decl_ether_ntohost so we don't + # treat the previous failure as a cached value and + # suppress the next test. + # + unset ac_cv_have_decl_ether_ntohost AC_CHECK_DECL(ether_ntohost, [ AC_DEFINE(NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST,, @@ -491,66 +587,34 @@ struct rtentry; [ #include #include -#include -#include -struct mbuf; -struct rtentry; #include +#include #include ]) fi # - # Did that succeed? + # After all that, is ether_ntohost() declared? # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then + if test "$ac_cv_have_decl_ether_ntohost" = yes; then # - # No, how about , as on Linux? + # Yes. # - AC_CHECK_HEADERS(netinet/ether.h) - if test "$ac_cv_header_netinet_ether_h" = yes; then - # - # We have it - does it declare ether_ntohost()? - # Unset ac_cv_have_decl_ether_ntohost so we don't - # treat the previous failure as a cached value and - # suppress the next test. - # - unset ac_cv_have_decl_ether_ntohost - AC_CHECK_DECL(ether_ntohost, - [ - AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_NTOHOST,, - [Define to 1 if netinet/ether.h declares `ether_ntohost']) - ],, - [ -#include - ]) - fi - fi - # - # Is ether_ntohost() declared? - # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then + AC_DEFINE(HAVE_DECL_ETHER_NTOHOST, 1, + [Define to 1 if you have the declaration of `ether_ntohost']) + else # # No, we'll have to declare it ourselves. - # Do we have "struct ether_addr"? + # Do we have "struct ether_addr" if we include + # ? # AC_CHECK_TYPES(struct ether_addr,,, [ -#include -#include -#include -#include -struct mbuf; -struct rtentry; -#include -#include + #include + #include + #include + #include + #include ]) - AC_DEFINE(HAVE_DECL_ETHER_NTOHOST, 0, - [Define to 1 if you have the declaration of `ether_ntohost', and to 0 if you -don't.]) - else - AC_DEFINE(HAVE_DECL_ETHER_NTOHOST, 1, - [Define to 1 if you have the declaration of `ether_ntohost', and to 0 if you -don't.]) fi fi