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

/* Define to 1 if arpa/inet.h declares `ether_hostton' */
/* #undef ARPA_INET_H_DECLARES_ETHER_HOSTTON */

/* Enable optimizer debugging */
/* #undef BDEBUG */

/* Define to 1 if remote packet capture is to be supported */
/* #undef ENABLE_REMOTE */

/* define if we have the AIX getnetbyname_r() */
/* #undef HAVE_AIX_GETNETBYNAME_R */

/* define if we have the AIX getprotobyname_r() */
/* #undef HAVE_AIX_GETPROTOBYNAME_R */

/* Define to 1 if you have the `asprintf' function. */
#define HAVE_ASPRINTF 1

/* Define to 1 if you have the <dagapi.h> header file. */
/* #undef HAVE_DAGAPI_H */

/* define if you have the DAG API */
/* #undef HAVE_DAG_API */

/* define if you have dag_get_erf_types() */
/* #undef HAVE_DAG_GET_ERF_TYPES */

/* define if you have dag_get_stream_erf_types() */
/* #undef HAVE_DAG_GET_STREAM_ERF_TYPES */

/* define if you have large streams capable DAG API */
/* #undef HAVE_DAG_LARGE_STREAMS_API */

/* define if you have vdag_set_device_info() */
/* #undef HAVE_DAG_VDAG */

/* Define to 1 if you have the declaration of `ether_hostton' */
#define HAVE_DECL_ETHER_HOSTTON 1

/* Define to 1 if `dl_module_id_1' is a member of `dl_hp_ppa_info_t'. */
/* #undef HAVE_DL_HP_PPA_INFO_T_DL_MODULE_ID_1 */

/* Define to 1 if the system has the type `dl_passive_req_t'. */
/* #undef HAVE_DL_PASSIVE_REQ_T */

/* Define to 1 if you have the `ether_hostton' function. */
/* #undef HAVE_ETHER_HOSTTON */

/* Define to 1 if you have the `ffs' function. */
#define HAVE_FFS 1

/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#define HAVE_FSEEKO 1

/* Define to 1 if you have the `getspnam' function. */
/* #undef HAVE_GETSPNAM */

/* Define to 1 if you have a GNU-style `strerror_r' function. */
#define HAVE_GNU_STRERROR_R /**/

/* on HP-UX 10.20 or later */
/* #undef HAVE_HPUX10_20_OR_LATER */

/* on HP-UX 9.x */
/* #undef HAVE_HPUX9 */

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the `dag' library (-ldag). */
/* #undef HAVE_LIBDAG */

/* if libdlpi exists */
/* #undef HAVE_LIBDLPI */

/* if libnl exists */
/* #undef HAVE_LIBNL */

/* if libnl exists and is version 2.x */
/* #undef HAVE_LIBNL_2_x */

/* if libnl exists and is version 3.x */
/* #undef HAVE_LIBNL_3_x */

/* libnl has NLE_FAILURE */
/* #undef HAVE_LIBNL_NLE */

/* libnl has new-style socket api */
/* #undef HAVE_LIBNL_SOCKETS */

/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1

/* Define to 1 if you have the <linux/compiler.h> header file. */
/* #undef HAVE_LINUX_COMPILER_H */

/* Define to 1 if you have the <linux/ethtool.h> header file. */
#define HAVE_LINUX_ETHTOOL_H 1

/* define if we have the Linux getnetbyname_r() */
/* #undef HAVE_LINUX_GETNETBYNAME_R */

/* define if we have the Linux getprotobyname_r() */
/* #undef HAVE_LINUX_GETPROTOBYNAME_R */

/* Define to 1 if you have the <linux/if_bonding.h> header file. */
#define HAVE_LINUX_IF_BONDING_H 1

/* Define to 1 if you have the <linux/net_tstamp.h> header file. */
#define HAVE_LINUX_NET_TSTAMP_H 1

/* Define to 1 if you have the <linux/socket.h> header file. */
#define HAVE_LINUX_SOCKET_H 1

/* Define to 1 if you have the <linux/sockios.h> header file. */
#define HAVE_LINUX_SOCKIOS_H 1

/* Define to 1 if you have the <linux/usbdevice_fs.h> header file. */
#define HAVE_LINUX_USBDEVICE_FS_H 1

/* Define to 1 if you have the <linux/wireless.h> header file. */
#define HAVE_LINUX_WIRELESS_H 1

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1

/* Define to 1 if you have the <netpacket/packet.h> header file. */
#define HAVE_NETPACKET_PACKET_H 1

/* Define to 1 if you have the <net/bpf.h> header file. */
/* #undef HAVE_NET_BPF_H */

/* Define to 1 if you have the <net/enet.h> header file. */
/* #undef HAVE_NET_ENET_H */

/* Define to 1 if you have the <net/if_media.h> header file. */
/* #undef HAVE_NET_IF_MEDIA_H */

/* Define to 1 if you have the <net/nit.h> header file. */
/* #undef HAVE_NET_NIT_H */

/* Define to 1 if you have the <net/pfilt.h> header file. */
/* #undef HAVE_NET_PFILT_H */

/* Define to 1 if you have the <net/pfvar.h> header file. */
/* #undef HAVE_NET_PFVAR_H */

/* Define to 1 if you have the <net/raw.h> header file. */
/* #undef HAVE_NET_RAW_H */

/* if there's an os_proto.h for this platform, to use additional prototypes */
/* #undef HAVE_OS_PROTO_H */

/* define if net/pfvar.h defines PF_NAT through PF_NORDR */
/* #undef HAVE_PF_NAT_THROUGH_PF_NORDR */

/* Define to 1 if you have a POSIX-style `strerror_r' function. */
#define HAVE_POSIX_STRERROR_R 1

/* define if you have the Septel API */
/* #undef HAVE_SEPTEL_API */

/* define if you have the Myricom SNF API */
/* #undef HAVE_SNF_API */

/* Define to 1 if you have the `snprintf' function. */
#define HAVE_SNPRINTF 1

/* Define to 1 if the system has the type `socklen_t'. */
#define HAVE_SOCKLEN_T 1

/* On solaris */
/* #undef HAVE_SOLARIS */

/* define if we have the Solaris/IRIX getnetbyname_r() */
/* #undef HAVE_SOLARIS_IRIX_GETNETBYNAME_R */

/* define if we have the Solaris/IRIX getprotobyname_r() */
/* #undef HAVE_SOLARIS_IRIX_GETPROTOBYNAME_R */

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the `strerror' function. */
#define HAVE_STRERROR 1

/* Define to 1 if you have the `strerror_s' function. */
/* #undef HAVE_STRERROR_S */

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

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

/* Define to 1 if you have the `strlcat' function. */
#define HAVE_STRLCAT 1

/* Define to 1 if you have the `strlcpy' function. */
#if defined(__ANDROID__)
#define HAVE_STRLCPY 1
#else
#undef HAVE_STRLCPY
#endif

/* Define to 1 if you have the `strtok_r' function. */
#define HAVE_STRTOK_R 1

/* Define to 1 if the system has the type `struct BPF_TIMEVAL'. */
/* #undef HAVE_STRUCT_BPF_TIMEVAL */

/* Define to 1 if the system has the type `struct ether_addr'. */
/* #undef HAVE_STRUCT_ETHER_ADDR */

/* Define to 1 if `msg_control' is a member of `struct msghdr'. */
/* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */

/* Define to 1 if `msg_flags' is a member of `struct msghdr'. */
/* #undef HAVE_STRUCT_MSGHDR_MSG_FLAGS */

/* Define to 1 if `hci_channel' is a member of `struct sockaddr_hci'. */
/* #undef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL */

/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */

/* Define to 1 if the system has the type `struct sockaddr_storage'. */
#define HAVE_STRUCT_SOCKADDR_STORAGE 1

/* Define to 1 if `tp_vlan_tci' is a member of `struct tpacket_auxdata'. */
#define HAVE_STRUCT_TPACKET_AUXDATA_TP_VLAN_TCI 1

/* Define to 1 if the system has the type `struct tpacket_stats'. */
#define HAVE_STRUCT_TPACKET_STATS 1

/* Define to 1 if `bRequestType' is a member of `struct
   usbdevfs_ctrltransfer'. */
#define HAVE_STRUCT_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1

/* Define to 1 if you have the <sys/bufmod.h> header file. */
/* #undef HAVE_SYS_BUFMOD_H */

/* Define to 1 if you have the <sys/dlpi_ext.h> header file. */
/* #undef HAVE_SYS_DLPI_EXT_H */

/* Define to 1 if you have the <sys/dlpi.h> header file. */
/* #undef HAVE_SYS_DLPI_H */

/* Define to 1 if you have the <sys/ioccom.h> header file. */
/* #undef HAVE_SYS_IOCCOM_H */

/* Define to 1 if you have the <sys/net/nit.h> header file. */
/* #undef HAVE_SYS_NET_NIT_H */

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

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

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

/* define if you have the TurboCap API */
/* #undef HAVE_TC_API */

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if you have the `vasprintf' function. */
#define HAVE_VASPRINTF 1

/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1

/* Define to 1 if you have the `vsyslog' function. */
#define HAVE_VSYSLOG 1

/* IPv6 */
#define INET6 1

/* if unaligned access fails */
/* #undef LBL_ALIGN */

/* path for device for USB sniffing */
#define LINUX_USB_MON_DEV "/dev/usbmon"

/* Define to 1 if netinet/ether.h declares `ether_hostton' */
#define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON /**/

/* Define to 1 if netinet/if_ether.h declares `ether_hostton' */
/* #undef NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON */

/* Define to 1 if net/ethernet.h declares `ether_hostton' */
/* #undef NET_ETHERNET_H_DECLARES_ETHER_HOSTTON */

/* do not use protochain */
/* #undef NO_PROTOCHAIN */

/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""

/* Define to the full name of this package. */
#define PACKAGE_NAME "pcap"

/* Define to the full name and version of this package. */
#define PACKAGE_STRING "pcap 1.9.1"

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "pcap"

/* Define to the home page for this package. */
#define PACKAGE_URL ""

/* Define to the version of this package. */
#define PACKAGE_VERSION "1.9.1"

/* target host supports Bluetooth sniffing */
/* #undef PCAP_SUPPORT_BT */

/* target host supports Bluetooth Monitor */
/* #undef PCAP_SUPPORT_BT_MONITOR */

/* support D-Bus sniffing */
/* #undef PCAP_SUPPORT_DBUS */

/* target host supports netfilter sniffing */
#define PCAP_SUPPORT_NETFILTER 1

/* target host supports netmap */
/* #undef PCAP_SUPPORT_NETMAP */

/* use packet ring capture support on Linux if available */
#define PCAP_SUPPORT_PACKET_RING 1

/* target host supports RDMA sniffing */
/* #undef PCAP_SUPPORT_RDMASNIFF */

/* target host supports USB sniffing */
#define PCAP_SUPPORT_USB 1

/* include ACN support */
/* #undef SITA */

/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

/* Define to 1 if strings.h declares `ffs' */
#define STRINGS_H_DECLARES_FFS /**/

/* Define to 1 if sys/ethernet.h declares `ether_hostton' */
/* #undef SYS_ETHERNET_H_DECLARES_ETHER_HOSTTON */

/* Enable parser debugging */
/* #undef YYDEBUG */

/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
   `char[]'. */
#define YYTEXT_POINTER 1

/* Enable large inode numbers on Mac OS X 10.5.  */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif

/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */

/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
/* #undef _LARGEFILE_SOURCE */

/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */

/* define on AIX to get certain functions */
/* #undef _SUN */

/* to handle Ultrix compilers that don't support const in prototypes */
/* #undef const */

/* Define as token for inline if inlining supported */
#define inline inline

/* on sinix */
/* #undef sinix */
