AC_LBL_C_INIT(V_CCOPT, V_INCLS)
AC_LBL_C_INLINE
-AC_CHECK_HEADERS(fcntl.h rpc/rpc.h rpc/rpcent.h)
+AC_CHECK_HEADERS(fcntl.h rpc/rpc.h rpc/rpcent.h net/if.h)
AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>])
enableval=yes)
case "$enableval" in
yes) AC_MSG_RESULT(yes)
- AC_WARN([The SMB printer may have exploitable buffer overflows!!!])
AC_DEFINE(ENABLE_SMB, 1,
[define if you want to build the possibly-buggy SMB printer])
LOCALSRC="print-smb.c smbutil.c $LOCALSRC"
#
# 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 <netinet/if_ether.h>.
-# Some might have it, but declare it in <netinet/ether.h>
-# (And some might have it but document it as something declared in
-# <netinet/ethernet.h>, although <netinet/if_ether.h> appears to work.)
+# Some might have it and declare it in <net/ethernet.h>.
+# Some might have it and declare it in <netinet/ether.h>
+# Some might have it and declare it in <sys/ethernet.h>.
+# Some might have it and declare it in <arpa/inet.h>.
+# Some might have it and declare it in <netinet/if_ether.h>.
+# Some might have it and not declare it in any header file.
#
# Before you is a C compiler.
#
if test "$ac_cv_func_ether_ntohost" = yes -a \
"$ac_cv_buggy_ether_ntohost" = "no"; then
#
- # OK, we have ether_ntohost(). Do we have <netinet/if_ether.h>?
+ # OK, we have ether_ntohost(). Is it declared in <net/ethernet.h>?
#
- AC_CHECK_HEADERS(netinet/if_ether.h, , , [
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-struct mbuf;
-struct rtentry;
-#include <net/if.h>])
- if test "$ac_cv_header_netinet_if_ether_h" = yes; then
+ # This test fails if we don't have <net/ethernet.h> 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 <net/ethernet.h>
+ ])
+ #
+ # Did that succeed?
+ #
+ if test "$ac_cv_have_decl_ether_ntohost" != yes; then
+ #
+ # No, how about <netinet/ether.h>, as on Linux?
#
- # Yes. Does it declare ether_ntohost()?
+ # This test fails if we don't have <netinet/ether.h>
+ # 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_IF_ETHER_H_DECLARES_ETHER_NTOHOST,,
- [Define to 1 if netinet/if_ether.h declares `ether_ntohost'])
+ AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_NTOHOST,,
+ [Define to 1 if netinet/ether.h declares `ether_ntohost'])
],,
[
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct mbuf;
-struct rtentry;
-#include <net/if.h>
-#include <netinet/if_ether.h>
+#include <netinet/ether.h>
])
fi
#
#
if test "$ac_cv_have_decl_ether_ntohost" != yes; then
#
- # No, how about <netinet/ether.h>, as on Linux?
+ # No, how about <sys/ethernet.h>, as on Solaris 10
+ # and later?
#
- 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 <netinet/ether.h>
- ])
- fi
+ # This test fails if we don't have <sys/ethernet.h>
+ # 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 <sys/ethernet.h>
+ ])
fi
#
- # Is ether_ntohost() declared?
+ # Did that succeed?
#
if test "$ac_cv_have_decl_ether_ntohost" != yes; then
#
- # No, we'll have to declare it ourselves.
- # Do we have "struct ether_addr"?
+ # No, how about <arpa/inet.h>, as in AIX?
#
- AC_CHECK_TYPES(struct ether_addr,,,
+ # This test fails if we don't have <arpa/inet.h>
+ # (if we have ether_ntohost(), we should have
+ # networking, and if we have networking, we should
+ # have <arpa/inet.h>) 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 <arpa/inet.h>
+ ])
+ fi
+ #
+ # Did that succeed?
+ #
+ if test "$ac_cv_have_decl_ether_ntohost" != yes; then
+ #
+ # No, how about <netinet/if_ether.h>?
+ # On some platforms, it requires <net/if.h> and
+ # <netinet/in.h>, and we always include it with
+ # both of them, so test it with both of them.
+ #
+ # This test fails if we don't have <netinet/if_ether.h>
+ # and the headers we include before it, or if we do but
+ # <netinet/if_ether.h> 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,,
+ [Define to 1 if netinet/if_ether.h declares `ether_ntohost'])
+ ],,
[
#include <sys/types.h>
#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct mbuf;
-struct rtentry;
#include <net/if.h>
+#include <netinet/in.h>
#include <netinet/if_ether.h>
])
- 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
+ fi
+ #
+ # After all that, is ether_ntohost() declared?
+ #
+ if test "$ac_cv_have_decl_ether_ntohost" = yes; then
+ #
+ # Yes.
+ #
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.])
+ [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" if we include
+ # <netinet/if_ether.h>?
+ #
+ AC_CHECK_TYPES(struct ether_addr,,,
+ [
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <netinet/if_ether.h>
+ ])
fi
fi
dnl
AC_CHECK_FUNCS(pcap_breakloop)
-dnl
-dnl Check for "pcap_dump_ftell()" and use a substitute version
-dnl if it's not present.
-dnl
-AC_CHECK_FUNC(pcap_dump_ftell,
- AC_DEFINE(HAVE_PCAP_DUMP_FTELL, 1,
- [define if libpcap has pcap_dump_ftell()]),
- [
- AC_LIBOBJ(pcap_dump_ftell)
- ])
-
#
# Do we have the new open API? Check for pcap_create, and assume that,
# if we do, we also have pcap_activate() and the other new routines
fi
AC_CHECK_FUNCS(pcap_setdirection pcap_set_immediate_mode pcap_dump_ftell64)
AC_CHECK_FUNCS(pcap_open pcap_findalldevs_ex)
+AC_REPLACE_FUNCS(pcap_dump_ftell)
#
# Check for special debugging functions
#include <sys/types.h>
])
-#
-# Check for some headers introduced in later versions of libpcap
-# and used by some printers.
-#
-# Those headers might use the {u_}intN_t types, so we must do this
-# after we check for what's needed to get them defined.
-#
-savedcppflags="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $V_INCLS"
-AC_CHECK_HEADERS(pcap/bluetooth.h,,,[#include "netdissect-stdinc.h"])
-AC_CHECK_HEADERS(pcap/nflog.h,,,[#include "netdissect-stdinc.h"])
-CPPFLAGS="$savedcppflags"
-
AC_PROG_RANLIB
AC_CHECK_TOOL([AR], [ar])