# -*- 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
    ]])
#
#   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 <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],,,[
    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_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
    ]])


##
#   rtentry structure checks:
##

# Check struct rtentry for common fields
#   Agent:
#
AC_CHECK_MEMBERS([struct rtentry.rt_dst,
                  struct rtentry.rt_hash,
                  struct rtentry.rt_next,
                  struct rtentry.rt_refcnt,
                  struct rtentry.rt_unit,
                  struct rtentry.rt_use],,,
    [
#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 HAVE_SYS_SOCKET_H
#ifdef NETSNMP_IFNET_NEEDS_KERNEL
#define KERNEL
#if !defined(__DragonFly__)
#define _KERNEL 1
#endif
#endif
#include <sys/socket.h>
#undef KERNEL
#undef _KERNEL
#endif
#ifdef HAVE_NET_ROUTE_H
#include <net/route.h>
#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)])

