/* config.h.in.  Generated automatically from configure.in by autoheader.  */

/* Define if on AIX 3.
   System headers sometimes define this.
   We just want to avoid a redefinition error message.  */
#ifndef _ALL_SOURCE
#undef _ALL_SOURCE
#endif

/* Define to empty if the keyword does not work.  */
#undef const

/* Define as the return type of signal handlers (int or void).  */
#undef RETSIGTYPE

/* Define if you have the ANSI C header files.  */
#undef STDC_HEADERS

/* Define if your processor stores words with the most significant
   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
#undef WORDS_BIGENDIAN

/* Define if you have the inet_aton function.  */
#undef HAVE_INET_ATON

/* Define if you have the inet_ntop function.  */
#undef HAVE_INET_NTOP

/* Define if you have the inet_pton function.  */
#undef HAVE_INET_PTON

/* Define if you have ipv6 stack.  */
#undef HAVE_IPV6

/* PAM support */
#undef USE_PAM

#ifdef HAVE_IPV6
#ifdef KAME
#ifndef INET6
#define INET6
#endif /* INET6 */
#endif /* KAME */
#endif /* HAVE_IPV6 */

/* Define if you have the bcopy function.  */
#undef HAVE_BCOPY

/* Define if you have the bzero function.  */
#undef HAVE_BZERO

/* Define if you have the daemon function.  */
#undef HAVE_DAEMON

/* Define if you have the getaddrinfo function.  */
#undef HAVE_GETADDRINFO

/* Define if you have the getifaddrs function.  */
#undef HAVE_GETIFADDRS

/* Define if you have the if_indextoname function.  */
#undef HAVE_IF_INDEXTONAME

/* Define if you have the if_nametoindex function.  */
#undef HAVE_IF_NAMETOINDEX

/* Define if you have the inet_aton function.  */
#undef HAVE_INET_ATON

/* Define if you have the setproctitle function.  */
#undef HAVE_SETPROCTITLE

/* Define if you have the snprintf function.  */
#undef HAVE_SNPRINTF

/* Define if you have the strerror function.  */
#undef HAVE_STRERROR

/* Define if you have the strlcat function.  */
#undef HAVE_STRLCAT

/* Define if you have the strlcpy function.  */
#undef HAVE_STRLCPY

/* Define if you have the vsnprintf function.  */
#undef HAVE_VSNPRINTF

/* Define if you have the <asm/types.h> header file.  */
#undef HAVE_ASM_TYPES_H

/* Define if you have the <inet/nd.h> header file.  */
#undef HAVE_INET_ND_H

/* Define if you have the <kvm.h> header file.  */
#undef HAVE_KVM_H

/* Define if you have the <libutil.h> header file.  */
#undef HAVE_LIBUTIL_H

/* Define if you have the <linux/version.h> header file.  */
#undef HAVE_LINUX_VERSION_H

/* Define if you have the <net/if_dl.h> header file.  */
#undef HAVE_NET_IF_DL_H

/* Define if you have the <net/if_var.h> header file.  */
#undef HAVE_NET_IF_VAR_H

/* Define if you have the <net/netopt.h> header file.  */
#undef HAVE_NET_NETOPT_H

/* Define if you have the <netdb.h> header file.  */
#undef HAVE_NETDB_H

/* Define if you have the <netinet/icmp6.h> header file.  */
#undef HAVE_NETINET_ICMP6_H

/* Define if you have the <netinet/in.h> header file.  */
#undef HAVE_NETINET_IN_H

/* Define if you have the <netinet/in6.h> header file.  */
#undef HAVE_NETINET_IN6_H

/* Define if you have the <netinet/in6_var.h> header file.  */
#undef HAVE_NETINET_IN6_VAR_H

/* Define if you have the <netinet/in_var.h> header file.  */
#undef HAVE_NETINET_IN_VAR_H

/* Define if you have the <netinet6/nd6.h> header file.  */
#undef HAVE_NETINET6_ND6_H

/* Define if you have the <string.h> header file.  */
#undef HAVE_STRING_H

/* Define if you have the <stropts.h> header file.  */
#undef HAVE_STROPTS_H

/* Define if you have the <sys/conf.h> header file.  */
#undef HAVE_SYS_CONF_H

/* Define if you have the <sys/ksym.h> header file.  */
#undef HAVE_SYS_KSYM_H

/* Define if you have the <sys/select.h> header file.  */
#undef HAVE_SYS_SELECT_H

/* Define if you have the <sys/sockio.h> header file.  */
#undef HAVE_SYS_SOCKIO_H

/* Define if you have the <sys/sysctl.h> header file.  */
#undef HAVE_SYS_SYSCTL_H

/* Define if you have the <sys/time.h> header file.  */
#undef HAVE_SYS_TIME_H

/* Define if you have the <sys/times.h> header file.  */
#undef HAVE_SYS_TIMES_H

/* Define if you have the <sys/types.h> header file.  */
#undef HAVE_SYS_TYPES_H

/* Define if you have the crypt library (-lcrypt).  */
#undef HAVE_LIBCRYPT

/* Define if you have the kvm library (-lkvm).  */
#undef HAVE_LIBKVM

/* Define if you have the m library (-lm).  */
#undef HAVE_LIBM

/* Define if you have the nsl library (-lnsl).  */
#undef HAVE_LIBNSL

/* Define if you have the readline library (-lreadline).  */
#undef HAVE_LIBREADLINE

/* Define if you have the resolv library (-lresolv).  */
#undef HAVE_LIBRESOLV

/* Define if you have the socket library (-lsocket).  */
#undef HAVE_LIBSOCKET

/* Define if you have the tinfo library (-ltinfo).  */
#undef HAVE_LIBTINFO

/* Define if you have the xnet library (-lxnet).  */
#undef HAVE_LIBXNET

/* Name of package */
#undef PACKAGE

/* Version number of package */
#undef VERSION

/* Broken Alias */
#undef HAVE_BROKEN_ALIASES

/* Use TCP for zebra communication */
#undef HAVE_TCP_ZEBRA

/* OSPF NSSA */
#undef HAVE_NSSA

/* OSPF Opaque LSA */
#undef HAVE_OPAQUE_LSA

/* OSPF Opaque LSA */
#undef HAVE_OPAQUE_LSA

/* OSPF TE */
#undef HAVE_OSPF_TE

/* SunOS 5 */
#undef SUNOS_5

/* SunOS 5 */
#undef SUNOS_5

/* GNU Linux */
#undef GNU_LINUX

/* FreeBSD 3.2 */
#undef FREEBSD_32

/* OpenBSD */
#undef OPEN_BSD

/* VTY shell */
#undef VTYSH

/* Use PAM for authentication */
#undef USE_PAM

/* Use PAM for authentication */
#undef USE_PAM

/* netlink */
#undef HAVE_NETLINK

/* netlink */
#undef HAVE_NETLINK

/* NET_RT_IFLIST */
#undef HAVE_NET_RT_IFLIST

/* /proc/net/dev */
#undef HAVE_PROC_NET_DEV

/* /proc/net/if_inet6 */
#undef HAVE_PROC_NET_IF_INET6

/* IPv6 */
#undef HAVE_IPV6

/* Inria IPv6 */
#undef INRIA_IPV6

/* IPv6 */
#undef HAVE_IPV6

/* KAME IPv6 */
#undef KAME

/* IPv6 */
#undef HAVE_IPV6

/* NRL */
#undef NRL

/* BSDI */
#undef BSDI_NRL

/* Linux IPv6 */
#undef LINUX_IPV6

/* Disable BGP installation to zebra */
#undef DISABLE_BGP_ANNOUNCE

/* inet_ntop */
#undef HAVE_INET_NTOP

/* inet_pton */
#undef HAVE_INET_PTON

/* GNU regexp library */
#undef HAVE_GNU_REGEX

/* SNMP */
#undef HAVE_SNMP

/* SNMP */
#undef UCD_COMPATIBLE

/* SNMP */
#undef HAVE_SNMP

/* SNMP */
#undef HAVE_SNMP

/* sa_len */
#undef HAVE_SA_LEN

/* sin_len */
#undef HAVE_SIN_LEN

/* sun_len */
#undef HAVE_SUN_LEN

/* scope id */
#undef HAVE_SIN6_SCOPE_ID

/* socklen_t */
#undef HAVE_SOCKLEN_T

/* sockaddr_dl */
#undef HAVE_SOCKADDR_DL

/* ifaliasreq */
#undef HAVE_IFALIASREQ

/* in6_aliasreq */
#undef HAVE_IN6_ALIASREQ

/* rt_addrinfo */
#undef HAVE_RT_ADDRINFO

/* in_pktinfo */
#undef HAVE_INPKTINFO

/* rusage */
#undef HAVE_RUSAGE

/* zebra PID */
#undef PATH_ZEBRA_PID

/* ripd PID */
#undef PATH_RIPD_PID

/* ripngd PID */
#undef PATH_RIPNGD_PID

/* bgpd PID */
#undef PATH_BGPD_PID

/* ospfd PID */
#undef PATH_OSPFD_PID

/* ospf6d PID */
#undef PATH_OSPF6D_PID

