734 lines
16 KiB
Plaintext
734 lines
16 KiB
Plaintext
# -*- autoconf -*-
|
|
#########################################
|
|
##
|
|
# Checks for data structures & members
|
|
##
|
|
#########################################
|
|
|
|
##
|
|
# Simple checks:
|
|
##
|
|
|
|
# struct arphd
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct arphd.at_next],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif
|
|
#include <net/if.h>
|
|
#if HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#if HAVE_NETINET_IF_ETHER_H
|
|
#include <netinet/if_ether.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct des_ks_struct
|
|
# ('weak_key' indicates older version of OpenSSL)
|
|
# Library:
|
|
#
|
|
if test "x$ac_cv_header_openssl_des_h" = "xyes" ; then
|
|
AC_CHECK_MEMBERS([struct des_ks_struct.weak_key],,,[[
|
|
#ifdef HAVE_OPENSSL_DES_H
|
|
#include <openssl/des.h>
|
|
#endif
|
|
]])
|
|
fi
|
|
|
|
# struct dirent
|
|
# (see also AC_STRUCT_DIRENT_D_TYPE)
|
|
# Library:
|
|
#
|
|
AC_CHECK_MEMBERS([struct dirent.d_type],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_DIRENT_H
|
|
#include <dirent.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct ethtool_cmd
|
|
#
|
|
if test "x$ac_cv_header_linux_ethtool_h" = "xyes" ; then
|
|
AC_CHECK_MEMBERS([struct ethtool_cmd.speed_hi],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_LINUX_ETHTOOL_H
|
|
#include <linux/ethtool.h>
|
|
#endif
|
|
]])
|
|
fi
|
|
|
|
# struct ipstat
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct ipstat.ips_cantfrag,
|
|
struct ipstat.ips_delivered,
|
|
struct ipstat.ips_fragdropped,
|
|
struct ipstat.ips_fragmented,
|
|
struct ipstat.ips_localout,
|
|
struct ipstat.ips_noproto,
|
|
struct ipstat.ips_noroute,
|
|
struct ipstat.ips_odropped,
|
|
struct ipstat.ips_ofragments,
|
|
struct ipstat.ips_reassembled],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#if HAVE_NETINET_IP_VAR_H
|
|
#include <netinet/ip_var.h>
|
|
#endif
|
|
]])
|
|
# struct ip6stat
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct ip6stat.ip6s_exthdrtoolong ],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#if HAVE_NETINET6_IP6_VAR_H
|
|
#include <netinet6/ip6_var.h>
|
|
#endif
|
|
]])
|
|
|
|
#
|
|
# Not-Used:
|
|
AC_CHECK_MEMBERS([struct ipstat.ips_cantforward,
|
|
struct ipstat.ips_fragtimeout],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#if HAVE_NETINET_IP_VAR_H
|
|
#include <netinet/ip_var.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct mbstat
|
|
# Not-Used:
|
|
#
|
|
AC_CHECK_MEMBERS([struct mbstat.m_clusters,
|
|
struct mbstat.m_clfree,
|
|
struct mbstat.m_mbufs],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#if HAVE_SYS_MBUF_H
|
|
#include <sys/mbuf.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct uvmexp
|
|
#
|
|
AC_CHECK_MEMBERS([struct uvmexp.pgswapin],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#include <sys/sysctl.h>
|
|
#include <uvm/uvm_extern.h>
|
|
]])
|
|
|
|
# struct nlist
|
|
#
|
|
AC_CHECK_MEMBERS([struct nlist.n_value,
|
|
struct nlist64.n_value],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_NLIST_H
|
|
#include <nlist.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct sigaction
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct sigaction.sa_sigaction],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SIGNAL_H
|
|
#include <sys/signal.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct sockaddr
|
|
# Library:
|
|
#
|
|
AC_CHECK_MEMBERS([struct sockaddr.sa_len,
|
|
struct sockaddr.sa_union.sa_generic.sa_family2,
|
|
struct sockaddr_storage.ss_family,
|
|
struct sockaddr_storage.__ss_family],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#elif defined(HAVE_WINSOCK2_H)
|
|
#include <winsock2.h>
|
|
#endif
|
|
#ifdef HAVE_WS2TCPIP_H
|
|
#include <ws2tcpip.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct sockaddr_in6 (see RFC 2553)
|
|
# Library:
|
|
#
|
|
AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_WINSOCK2_H
|
|
#include <winsock2.h>
|
|
#endif
|
|
#ifdef HAVE_WS2TCPIP_H
|
|
#include <ws2tcpip.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct sockaddr_un
|
|
# Library:
|
|
#
|
|
AC_CHECK_SIZEOF([sockaddr_un.sun_path],,[
|
|
AC_INCLUDES_DEFAULT
|
|
[
|
|
#if HAVE_SYS_UN_H
|
|
#include <sys/un.h>
|
|
#endif
|
|
struct sockaddr_un sockaddr_un;
|
|
]])
|
|
|
|
# struct statfs
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct statfs.f_favail,
|
|
struct statfs.f_ffree,
|
|
struct statfs.f_files,
|
|
struct statfs.f_flags,
|
|
struct statfs.f_frsize],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_SYS_STATFS_H
|
|
#include <sys/statfs.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_MOUNT_H
|
|
#include <sys/mount.h>
|
|
#endif
|
|
#ifdef HAVE_NBUTIL_H
|
|
#include <nbutil.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct statvfs
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct statvfs.f_files,
|
|
struct statvfs.f_frsize,
|
|
struct statvfs.mnt_dir],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_SYS_STATFS_H
|
|
#include <sys/statfs.h>
|
|
#endif
|
|
#if HAVE_SYS_STATVFS_H
|
|
#include <sys/statvfs.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct swdevt
|
|
# Not-Used:
|
|
#
|
|
AC_CHECK_MEMBERS([struct swdevt.sw_nblksenabled],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#if HAVE_SYS_CONF_H
|
|
#include <sys/conf.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct tcpstat
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct tcpstat.tcp_rcvmemdrop],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TIMEOUT_H
|
|
#include <sys/timeout.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_TCP_H
|
|
#include <netinet/tcp.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_TCP_TIMER_H
|
|
#include <netinet/tcp_timer.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_TCP_VAR_H
|
|
#include <netinet/tcp_var.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct tm
|
|
# Library:
|
|
#
|
|
AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct time.tm_isdst],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if TIME_WITH_SYS_TIME
|
|
# include <sys/time.h>
|
|
# include <time.h>
|
|
#else
|
|
# if HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
# else
|
|
# include <time.h>
|
|
# endif
|
|
#endif
|
|
]])
|
|
|
|
# extern timezone
|
|
AC_MSG_CHECKING([extern timezone])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#if TIME_WITH_SYS_TIME
|
|
# include <sys/time.h>
|
|
# include <time.h>
|
|
#else
|
|
# if HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
# else
|
|
# include <time.h>
|
|
# endif
|
|
#endif
|
|
]], [[
|
|
return timezone;
|
|
]])], [
|
|
AC_MSG_RESULT([yes])
|
|
AC_DEFINE([HAVE_TIMEZONE_VARIABLE], [1], [Define if a timezone variable is declared in <sys/time.h>])
|
|
], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
|
|
# struct timezone
|
|
# Library:
|
|
#
|
|
AC_CHECK_MEMBERS([struct timezone.tz_dsttime],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_TIMEB_H
|
|
# include <sys/timeb.h>
|
|
#endif
|
|
#if TIME_WITH_SYS_TIME
|
|
# include <sys/time.h>
|
|
# include <time.h>
|
|
#else
|
|
# ifdef HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
# else
|
|
# include <time.h>
|
|
# endif
|
|
#endif
|
|
]])
|
|
|
|
# struct udpstat
|
|
# Agent:
|
|
#
|
|
AC_CHECK_MEMBERS([struct udpstat.udps_discard,
|
|
struct udpstat.udps_fullsock,
|
|
struct udpstat.udps_noport,
|
|
struct udpstat.udps_noportbcast,
|
|
struct udpstat.udps_ipackets,
|
|
struct udpstat.udps_opackets],,,[
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#if HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#if HAVE_NETINET_IP_VAR_H
|
|
#include <netinet/ip_var.h>
|
|
#endif
|
|
#if HAVE_NETINET_UDP_H
|
|
#include <netinet/udp.h>
|
|
#endif
|
|
#if HAVE_NETINET_UDP_VAR_H
|
|
#include <netinet/udp_var.h>
|
|
#endif
|
|
]])
|
|
|
|
|
|
|
|
##
|
|
# ifnet-related checks:
|
|
##
|
|
|
|
# Does "struct ifnet" need _KERNEL defined? (Irix)
|
|
#
|
|
AC_CACHE_CHECK([if _KERNEL needs to be defined for if_mtu],
|
|
[ac_cv_IFNET_NEEDS_KERNEL],
|
|
[ac_cv_IFNET_NEEDS_KERNEL=unknown
|
|
AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#include <sys/types.h>
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
#include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_VAR_H
|
|
#include <net/if_var.h>
|
|
#endif
|
|
], [[struct ifnet test; test.if_mtu = 0;]])],
|
|
[ac_cv_IFNET_NEEDS_KERNEL=no])
|
|
if test "$ac_cv_IFNET_NEEDS_KERNEL" = unknown ; then
|
|
AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#define _KERNEL 1
|
|
#include <sys/types.h>
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
#include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_VAR_H
|
|
#include <net/if_var.h>
|
|
#endif
|
|
], [[struct ifnet test; test.if_mtu = 0;]])],
|
|
[ac_cv_IFNET_NEEDS_KERNEL=yes])
|
|
fi])
|
|
|
|
if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then
|
|
AC_DEFINE(NETSNMP_IFNET_NEEDS_KERNEL, 1,
|
|
[ifnet needs to have _KERNEL defined])
|
|
fi
|
|
|
|
# Does "struct ifnet" need _KERNEL_STRUCTURES defined? (DragonFly 3)
|
|
#
|
|
AC_CACHE_CHECK([if _KERNEL_STRUCTURES needs to be defined for if_mtu],
|
|
[ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES],
|
|
[ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=unknown
|
|
AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#include <sys/types.h>
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
#include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_VAR_H
|
|
#include <net/if_var.h>
|
|
#endif
|
|
], [[struct ifnet test; test.if_mtu = 0;]])],
|
|
[ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=no])
|
|
if test "$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" = unknown ; then
|
|
AC_COMPILE_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#define _KERNEL_STRUCTURES 1
|
|
#include <sys/types.h>
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
#include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_VAR_H
|
|
#include <net/if_var.h>
|
|
#endif
|
|
], [[struct ifnet test; test.if_mtu = 0;]])],
|
|
[ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=yes])
|
|
fi])
|
|
|
|
if test "x$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" = "xyes"; then
|
|
AC_DEFINE(NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES, 1,
|
|
[ifnet needs to have _KERNEL_STRUCTURES defined])
|
|
fi
|
|
|
|
|
|
# struct ifaddr
|
|
# Not-Used:
|
|
#
|
|
AC_CHECK_MEMBERS([struct ifaddr.ifa_next],,,[
|
|
[
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
|
|
#define _KERNEL_STRUCTURES 1
|
|
#endif
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL
|
|
#define KERNEL
|
|
#if !defined(__DragonFly__)
|
|
#define _KERNEL 1
|
|
#endif
|
|
#endif
|
|
]
|
|
AC_INCLUDES_DEFAULT()
|
|
[
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
#include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_VAR_H
|
|
#include <net/if_var.h>
|
|
#endif
|
|
]])
|
|
|
|
# struct ifnet
|
|
# (Broken on FreeBSD - #define'd in <net/if.h>)
|
|
# Agent: (?or Not-Used?)
|
|
#
|
|
AC_CHECK_MEMBERS([struct ifnet.if_addrlist,
|
|
struct ifnet.if_addrhead.tqh_first,
|
|
struct ifnet.if_baudrate,
|
|
struct ifnet.if_baudrate.ifs_value,
|
|
struct ifnet.if_ibytes,
|
|
struct ifnet.if_imcasts,
|
|
struct ifnet.if_iqdrops,
|
|
struct ifnet.if_lastchange.tv_sec,
|
|
struct ifnet.if_lastchange.tv_nsec,
|
|
struct ifnet.if_mtu,
|
|
struct ifnet.if_noproto,
|
|
struct ifnet.if_obytes,
|
|
struct ifnet.if_omcasts,
|
|
struct ifnet.if_speed,
|
|
struct ifnet.if_type,
|
|
struct ifnet.if_xname],,,[[
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
|
|
#define _KERNEL_STRUCTURES 1
|
|
#endif
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL
|
|
#define KERNEL
|
|
#if !defined(__DragonFly__)
|
|
#define _KERNEL 1
|
|
#endif
|
|
#endif
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
#include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_VAR_H
|
|
#include <net/if_var.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_QUEUE_H
|
|
#include <sys/queue.h>
|
|
#endif
|
|
#ifdef linux
|
|
struct ifnet {
|
|
char *if_name; /* name, e.g. "en" or "lo" */
|
|
short if_unit; /* sub-unit for lower level driver */
|
|
short if_mtu; /* maximum transmission unit */
|
|
short if_flags; /* up/down, broadcast, etc. */
|
|
int if_metric; /* routing metric (external only) */
|
|
char if_hwaddr [6]; /* ethernet address */
|
|
int if_type; /* interface type: 1=generic,
|
|
28=slip, ether=6, loopback=24 */
|
|
int if_speed; /* interface speed: in bits/sec */
|
|
|
|
struct sockaddr if_addr; /* interface's address */
|
|
struct sockaddr ifu_broadaddr; /* broadcast address */
|
|
struct sockaddr ia_subnetmask; /* interface's mask */
|
|
|
|
struct ifqueue {
|
|
int ifq_len;
|
|
int ifq_drops;
|
|
} if_snd; /* output queue */
|
|
int if_ibytes; /* octets received on interface */
|
|
int if_ipackets; /* packets received on interface */
|
|
int if_ierrors; /* input errors on interface */
|
|
int if_iqdrops; /* input queue overruns */
|
|
int if_obytes; /* octets sent on interface */
|
|
int if_opackets; /* packets sent on interface */
|
|
int if_oerrors; /* output errors on interface */
|
|
int if_collisions; /* collisions on csma interfaces */
|
|
/* end statistics */
|
|
struct ifnet *if_next;
|
|
};
|
|
#endif
|
|
]])
|
|
|
|
|
|
# Check for BSD 4.3 vs 4.4 struct rtentry
|
|
#
|
|
AC_CACHE_CHECK([type of rtentry structure],
|
|
[ac_cv_RTENTRY_TYPE],
|
|
[
|
|
# BSD 4.4 compatible structure
|
|
# ('rt_nodes' array)
|
|
#
|
|
AC_TRY_COMPILE([
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
|
|
#define _KERNEL_STRUCTURES 1
|
|
#endif
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL
|
|
#define KERNEL
|
|
#if !defined(__DragonFly__)
|
|
#define _KERNEL 1
|
|
#endif
|
|
#endif
|
|
#include <sys/socket.h>
|
|
#undef KERNEL
|
|
#undef _KERNEL
|
|
#include <net/route.h>
|
|
],[
|
|
|
|
#ifndef HAVE_STRUCT_RTENTRY_RT_DST
|
|
#define rt_dst rt_nodes->rn_key
|
|
#endif
|
|
|
|
struct rtentry rt;
|
|
rt.rt_nodes[0].rn_flags = 1;
|
|
rt.rt_dst;
|
|
], ac_cv_RTENTRY_TYPE="BSD-4.4")
|
|
|
|
if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
|
|
# BSD 4.3 compatible structure
|
|
# ('rt_hash')
|
|
#
|
|
AC_TRY_COMPILE([
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
|
|
#define _KERNEL_STRUCTURES 1
|
|
#endif
|
|
#ifdef NETSNMP_IFNET_NEEDS_KERNEL
|
|
#define KERNEL
|
|
#if !defined(__DragonFly__)
|
|
#define _KERNEL 1
|
|
#endif
|
|
#endif
|
|
#include <sys/socket.h>
|
|
#undef KERNEL
|
|
#undef _KERNEL
|
|
#include <net/route.h>
|
|
],[
|
|
|
|
struct rtentry rt;
|
|
rt.rt_hash;
|
|
], ac_cv_RTENTRY_TYPE="BSD-4.3")
|
|
fi
|
|
|
|
if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
|
|
# Neither BSD 4.3 nor 4.4 compatible structure
|
|
#
|
|
ac_cv_RTENTRY_TYPE="unknown"
|
|
fi
|
|
])
|
|
|
|
if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then
|
|
AC_DEFINE(RTENTRY_4_4, 1, [Use BSD 4.4 routing table entries?])
|
|
fi
|
|
|
|
# Check for ortentry (Alpha)
|
|
#
|
|
if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then
|
|
AC_CACHE_CHECK([for struct rtentry],
|
|
[ac_cv_struct_rtentry],
|
|
[AC_EGREP_CPP(ortentry,
|
|
[
|
|
#define KERNEL
|
|
#include <net/route.h>
|
|
],
|
|
[ac_cv_struct_rtentry=ortentry],
|
|
[ac_cv_struct_rtentry=rtentry ])
|
|
if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then
|
|
ac_cv_struct_rtentry="rtentry"
|
|
else
|
|
ac_cv_struct_rtentry="ortentry"
|
|
fi
|
|
])
|
|
else
|
|
RTENTRY_TYPE="rtentry"
|
|
ac_cv_struct_rtentry="rtentry"
|
|
fi
|
|
|
|
if test "x$ac_cv_struct_rtentry" = "x"; then
|
|
ac_cv_struct_rtentry=rtentry
|
|
fi
|
|
AC_DEFINE_UNQUOTED(RTENTRY,struct ${ac_cv_struct_rtentry},
|
|
[define rtentry to ortentry on SYSV machines (alphas)])
|
|
|
|
# prioritynames
|
|
AC_MSG_CHECKING([syslog prioritynames])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <stdio.h>
|
|
#if HAVE_SYSLOG_H
|
|
#define SYSLOG_NAMES
|
|
#include <syslog.h>
|
|
#endif
|
|
]], [[
|
|
char *test = prioritynames[0].c_name;
|
|
printf("%s\n", test); /* so it's not unused */
|
|
]])], [
|
|
AC_MSG_RESULT([yes])
|
|
AC_DEFINE([HAVE_PRIORITYNAMES], [1], [Define if prioritynames variable is declared in <syslog.h>])
|
|
], [
|
|
AC_MSG_RESULT([no])
|
|
])
|