Merge branch 'ff/oracle'
authorFlorian Forster <octo@noris.net>
Fri, 31 Oct 2008 10:31:43 +0000 (11:31 +0100)
committerFlorian Forster <octo@noris.net>
Fri, 31 Oct 2008 10:31:43 +0000 (11:31 +0100)
Conflicts:

configure.in

1  2 
configure.in
src/Makefile.am
src/collectd.conf.pod

diff --combined configure.in
  m4_divert_once([HELP_WITH], [
  collectd additional packages:])
  
 -# AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given])
 -librrd_cflags=""
 -librrd_ldflags=""
 -librrd_threadsafe="yes"
 -librrd_rrdc_update="no"
 -AC_ARG_WITH(rrdtool, [AS_HELP_STRING([--with-rrdtool@<:@=PREFIX@:>@], [Path to rrdtool.])],
 -[     if test "x$withval" != "xno" && test "x$withval" != "xyes"
 -      then
 -              librrd_cflags="-I$withval/include"
 -              librrd_ldflags="-L$withval/lib"
 -              with_rrdtool="yes"
 -      else
 -              with_rrdtool="$withval"
 -      fi
 -], [with_rrdtool="yes"])
 -if test "x$with_rrdtool" = "xyes"
 -then
 -      SAVE_CPPFLAGS="$CPPFLAGS"
 -      SAVE_LDFLAGS="$LDFLAGS"
 -
 -      CPPFLAGS="$CPPFLAGS $librrd_cflags"
 -      LDFLAGS="$LDFLAGS $librrd_ldflags"
 -
 -      AC_CHECK_HEADERS(rrd.h,, [with_rrdtool="no (rrd.h not found)"])
 -
 -      CPPFLAGS="$SAVE_CPPFLAGS"
 -      LDFLAGS="$SAVE_LDFLAGS"
 -fi
 -if test "x$with_rrdtool" = "xyes"
 -then
 -      SAVE_CPPFLAGS="$CPPFLAGS"
 -      SAVE_LDFLAGS="$LDFLAGS"
 -
 -      CPPFLAGS="$CPPFLAGS $librrd_cflags"
 -      LDFLAGS="$LDFLAGS $librrd_ldflags"
 -
 -      AC_CHECK_LIB(rrd_th, rrd_update_r,
 -      [with_rrdtool="yes"
 -       librrd_ldflags="$librrd_ldflags -lrrd_th -lm"
 -      ],
 -      [librrd_threadsafe="no"
 -       AC_CHECK_LIB(rrd, rrd_update,
 -       [with_rrdtool="yes"
 -        librrd_ldflags="$librrd_ldflags -lrrd -lm"
 -       ],
 -       [with_rrdtool="no (symbol 'rrd_update' not found)"],
 -       [-lm])
 -      ],
 -      [-lm])
 -
 -      if test "x$librrd_threadsafe" = "xyes"
 -      then
 -              AC_CHECK_LIB(rrd_th, rrdc_update, [librrd_rrdc_update="yes"], [librrd_rrdc_update="no"])
 -      else
 -              AC_CHECK_LIB(rrd, rrdc_update, [librrd_rrdc_update="yes"], [librrd_rrdc_update="no"])
 -      fi
 -
 -      CPPFLAGS="$SAVE_CPPFLAGS"
 -      LDFLAGS="$SAVE_LDFLAGS"
 -fi
 -if test "x$with_rrdtool" = "xyes"
 -then
 -      BUILD_WITH_LIBRRD_CFLAGS="$librrd_cflags"
 -      BUILD_WITH_LIBRRD_LDFLAGS="$librrd_ldflags"
 -      AC_SUBST(BUILD_WITH_LIBRRD_CFLAGS)
 -      AC_SUBST(BUILD_WITH_LIBRRD_LDFLAGS)
 -fi
 -if test "x$librrd_threadsafe" = "xyes"
 -then
 -      AC_DEFINE(HAVE_THREADSAFE_LIBRRD, 1, [Define to 1 if you have the threadsafe rrd library (-lrrd_th).])
 -fi
 -
 -AC_ARG_WITH(libpthread, [AS_HELP_STRING([--with-libpthread=@<:@=PREFIX@:>@], [Path to libpthread.])],
 -[     if test "x$withval" != "xno" \
 -              && test "x$withval" != "xyes"
 -      then
 -              LDFLAGS="$LDFLAGS -L$withval/lib"
 -              CPPFLAGS="$CPPFLAGS -I$withval/include"
 -              with_libpthread="yes"
 -      else
 -              if test "x$withval" = "xno"
 -              then
 -                      with_libpthread="no (disabled)"
 -              fi
 -      fi
 -], [with_libpthread="yes"])
 -if test "x$with_libpthread" = "xyes"
 -then
 -      AC_CHECK_LIB(pthread, pthread_create, [with_libpthread="yes"], [with_libpthread="no (libpthread not found)"], [])
 -fi
 -if test "x$with_libpthread" = "xyes"
 -then
 -      AC_CHECK_HEADERS(pthread.h,, [with_libpthread="no (pthread.h not found)"])
 -fi
 -if test "x$with_libpthread" = "xyes"
 -then
 -      collect_pthread=1
 -else
 -      collect_pthread=0
 -fi
 -AC_DEFINE_UNQUOTED(HAVE_LIBPTHREAD, [$collect_pthread],
 -      [Wether or not to use pthread (POSIX threads) library])
 -AM_CONDITIONAL(BUILD_WITH_LIBPTHREAD, test "x$with_libpthread" = "xyes")
 -
  if test "x$ac_system" = "xSolaris"
  then
        with_kstat="yes"
  AM_CONDITIONAL(BUILD_WITH_LIBKSTAT, test "x$with_kstat" = "xyes")
  AM_CONDITIONAL(BUILD_WITH_LIBDEVINFO, test "x$with_devinfo" = "xyes")
  
 -### BEGIN of check for libcurl ###
 +with_libiokit="no"
 +AC_CHECK_LIB(IOKit, IOServiceGetMatchingServices,
 +[
 +      with_libiokit="yes"
 +], 
 +[
 +      with_libiokit="no"
 +])
 +AM_CONDITIONAL(BUILD_WITH_LIBIOKIT, test "x$with_libiokit" = "xyes")
 +
 +with_libkvm="no"
 +AC_CHECK_LIB(kvm, kvm_getprocs, [with_kvm_getprocs="yes"], [with_kvm_getprocs="no"])
 +if test "x$with_kvm_getprocs" = "xyes"
 +then
 +      AC_DEFINE(HAVE_LIBKVM_GETPROCS, 1,
 +                [Define to 1 if you have the 'kvm' library with the 'kvm_getprocs' symbol (-lkvm)])
 +      with_libkvm="yes"
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LIBKVM_GETPROCS, test "x$with_kvm_getprocs" = "xyes")
 +
 +AC_CHECK_LIB(kvm, kvm_getswapinfo, [with_kvm_getswapinfo="yes"], [with_kvm_getswapinfo="no"])
 +if test "x$with_kvm_getswapinfo" = "xyes"
 +then
 +      AC_DEFINE(HAVE_LIBKVM_GETSWAPINFO, 1,
 +                [Define to 1 if you have the 'kvm' library with the 'kvm_getswapinfo' symbol (-lkvm)])
 +      with_libkvm="yes"
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LIBKVM_GETSWAPINFO, test "x$with_kvm_getswapinfo" = "xyes")
 +
 +AC_CHECK_LIB(kvm, kvm_nlist, [with_kvm_nlist="yes"], [with_kvm_nlist="no"])
 +if test "x$with_kvm_nlist" = "xyes"
 +then
 +      AC_DEFINE(HAVE_LIBKVM_NLIST, 1,
 +                [Define to 1 if you have the 'kvm' library with the 'kvm_nlist' symbol (-lkvm)])
 +      with_libkvm="yes"
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LIBKVM_NLIST, test "x$with_kvm_nlist" = "xyes")
 +
 +# --with-libcurl {{{
  with_curl_config="curl-config"
  with_curl_cflags=""
  with_curl_libs=""
        AC_SUBST(BUILD_WITH_LIBCURL_LIBS)
  fi
  AM_CONDITIONAL(BUILD_WITH_LIBCURL, test "x$with_libcurl" = "xyes")
 -### END of check for libcurl ###
 -
 -with_libiokit="no"
 -AC_CHECK_LIB(IOKit, IOServiceGetMatchingServices,
 -[
 -      with_libiokit="yes"
 -], 
 -[
 -      with_libiokit="no"
 -])
 -AM_CONDITIONAL(BUILD_WITH_LIBIOKIT, test "x$with_libiokit" = "xyes")
 +# }}}
  
 -with_libstatgrab_cflags=""
 -with_libstatgrab_ldflags=""
 -AC_ARG_WITH(libstatgrab, [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [Path to libstatgrab.])],
 +# --with-libdbi {{{
 +with_libdbi_cppflags=""
 +with_libdbi_ldflags=""
 +AC_ARG_WITH(libdbi, [AS_HELP_STRING([--with-libdbi@<:@=PREFIX@:>@], [Path to libdbi.])],
  [
 -      if test "x$withval" != "xno" \
 -              && test "x$withval" != "xyes"
 +      if test "x$withval" != "xno" && test "x$withval" != "xyes"
        then
 -              with_libstatgrab_cflags="-I$withval/include"
 -              with_libstatgrab_ldflags="-L$withval/lib"
 -              with_libstatgrab="yes"
 +              with_libdbi_cppflags="-I$withval/include"
 +              with_libdbi_ldflags="-L$withval/lib"
 +              with_libdbi="yes"
        else
 -              with_libstatgrab="$withval"
 +              with_libdbi="$withval"
        fi
  ],
  [
 -      if test "x$ac_system" = "xunknown"
 -      then
 -              with_libstatgrab="yes"
 -      else
 -              with_libstatgrab="no"
 -      fi
 +      with_libdbi="yes"
  ])
 -with_libstatgrab_pkg_config="yes"
 -if test "x$with_libstatgrab" = "xyes" \
 -  && test "x$PKG_CONFIG" != "x"
 +if test "x$with_libdbi" = "xyes"
  then
 -  AC_MSG_CHECKING([pkg-config for libstatgrab])
 -  temp_result="found"
 -  $PKG_CONFIG --exists libstatgrab 2>/dev/null
 -  if test "$?" != "0"
 -  then
 -    with_libstatgrab_pkg_config="no"
 -    temp_result="not found"
 -  fi
 -  AC_MSG_RESULT([$temp_result])
 -else
 -  AC_MSG_NOTICE([pkg-config not available, trying to guess flags for the statgrab library.])
 -  with_libstatgrab_pkg_config="no"
 -  with_libstatgrab_ldflags="$with_libstatgrab_ldflags -lstatgrab"
 -fi
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      CPPFLAGS="$CPPFLAGS $with_libdbi_cppflags"
  
 -if test "x$with_libstatgrab" = "xyes" \
 -  && test "x$with_libstatgrab_pkg_config" = "xyes" \
 -  && test "x$with_libstatgrab_cflags" = "x"
 -then
 -  AC_MSG_CHECKING([for libstatgrab CFLAGS])
 -  temp_result="`$PKG_CONFIG --cflags libstatgrab`"
 -  if test "$?" = "0"
 -  then
 -    with_libstatgrab_cflags="$temp_result"
 -  else
 -    with_libstatgrab="no ($PKG_CONFIG --cflags libstatgrab failed)"
 -    temp_result="$PKG_CONFIG --cflags libstatgrab failed"
 -  fi
 -  AC_MSG_RESULT([$temp_result])
 -fi
 +      AC_CHECK_HEADERS(dbi/dbi.h, [with_libdbi="yes"], [with_libdbi="no (dbi/dbi.h not found)"])
  
 -if test "x$with_libstatgrab" = "xyes" \
 -  && test "x$with_libstatgrab_pkg_config" = "xyes" \
 -  && test "x$with_libstatgrab_ldflags" = "x"
 -then
 -  AC_MSG_CHECKING([for libstatgrab LDFLAGS])
 -  temp_result="`$PKG_CONFIG --libs libstatgrab`"
 -  if test "$?" = "0"
 -  then
 -    with_libstatgrab_ldflags="$temp_result"
 -  else
 -    with_libstatgrab="no ($PKG_CONFIG --libs libstatgrab failed)"
 -    temp_result="$PKG_CONFIG --libs libstatgrab failed"
 -  fi
 -  AC_MSG_RESULT([$temp_result])
 +      CPPFLAGS="$SAVE_CPPFLAGS"
  fi
 -
 -if test "x$with_libstatgrab" = "xyes"
 +if test "x$with_libdbi" = "xyes"
  then
 -  SAVE_CPPFLAGS="$CPPFLAGS"
 -  CPPFLAGS="$CPPFLAGS $with_libstatgrab_cflags"
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      SAVE_LDFLAGS="$LDFLAGS"
 +      CPPFLAGS="$CPPFLAGS $with_libdbi_cppflags"
 +      LDFLAGS="$LDFLAGS $with_libdbi_ldflags"
  
 -  AC_CHECK_HEADERS(statgrab.h,
 -                 [with_libstatgrab="yes"],
 -                 [with_libstatgrab="no (statgrab.h not found)"])
 +      AC_CHECK_LIB(dbi, dbi_initialize, [with_libdbi="yes"], [with_libdbi="no (Symbol 'dbi_initialize' not found)"])
  
 -  CPPFLAGS="$SAVE_CPPFLAGS"
 +      CPPFLAGS="$SAVE_CPPFLAGS"
 +      LDFLAGS="$SAVE_LDFLAGS"
  fi
 -
 -if test "x$with_libstatgrab" = "xyes"
 +if test "x$with_libdbi" = "xyes"
  then
 -  SAVE_CFLAGS="$CFLAGS"
 -  SAVE_LDFLAGS="$LDFLAGS"
 -
 -  CFLAGS="$CFLAGS $with_libstatgrab_cflags"
 -  LDFLAGS="$LDFLAGS $with_libstatgrab_ldflags"
 -
 -  AC_CHECK_LIB(statgrab, sg_init,
 -             [with_libstatgrab="yes"],
 -             [with_libstatgrab="no (symbol sg_init not found)"])
 -
 -  CFLAGS="$SAVE_CFLAGS"
 -  LDFLAGS="$SAVE_LDFLAGS"
 +      BUILD_WITH_LIBDBI_CPPFLAGS="$with_libdbi_cppflags"
 +      BUILD_WITH_LIBDBI_LDFLAGS="$with_libdbi_ldflags"
 +      BUILD_WITH_LIBDBI_LIBS="-ldbi"
 +      AC_SUBST(BUILD_WITH_LIBDBI_CPPFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBDBI_LDFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBDBI_LIBS)
  fi
 +AM_CONDITIONAL(BUILD_WITH_LIBDBI, test "x$with_libdbi" = "xyes")
 +# }}}
  
 -AM_CONDITIONAL(BUILD_WITH_LIBSTATGRAB, test "x$with_libstatgrab" = "xyes")
 -if test "x$with_libstatgrab" = "xyes"
 +# --with-libesmtp {{{
 +AC_ARG_WITH(libesmtp, [AS_HELP_STRING([--with-libesmtp@<:@=PREFIX@:>@], [Path to libesmtp.])],
 +[
 +      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +      then
 +              LDFLAGS="$LDFLAGS -L$withval/lib"
 +              CPPFLAGS="$CPPFLAGS -I$withval/include -D_THREAD_SAFE"
 +              with_libesmtp="yes"
 +      else
 +              with_libesmtp="$withval"
 +      fi
 +],
 +[
 +      with_libesmtp="yes"
 +])
 +if test "x$with_libesmtp" = "xyes"
  then
 -  AC_DEFINE(HAVE_LIBSTATGRAB, 1, [Define to 1 if you have the 'statgrab' library (-lstatgrab)])
 -  BUILD_WITH_LIBSTATGRAB_CFLAGS="$with_libstatgrab_cflags"
 -  BUILD_WITH_LIBSTATGRAB_LDFLAGS="$with_libstatgrab_ldflags"
 -  AC_SUBST(BUILD_WITH_LIBSTATGRAB_CFLAGS)
 -  AC_SUBST(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
 -fi
 -
 -with_libkvm="no"
 -AC_CHECK_LIB(kvm, kvm_getprocs, [with_kvm_getprocs="yes"], [with_kvm_getprocs="no"])
 -if test "x$with_kvm_getprocs" = "xyes"
 -then
 -      AC_DEFINE(HAVE_LIBKVM_GETPROCS, 1,
 -                [Define to 1 if you have the 'kvm' library with the 'kvm_getprocs' symbol (-lkvm)])
 -      with_libkvm="yes"
 +      AC_CHECK_LIB(esmtp, smtp_create_session,
 +      [
 +              AC_DEFINE(HAVE_LIBESMTP, 1, [Define to 1 if you have the esmtp library (-lesmtp).])
 +      ], [with_libesmtp="no (libesmtp not found)"])
  fi
 -AM_CONDITIONAL(BUILD_WITH_LIBKVM_GETPROCS, test "x$with_kvm_getprocs" = "xyes")
 -
 -AC_CHECK_LIB(kvm, kvm_getswapinfo, [with_kvm_getswapinfo="yes"], [with_kvm_getswapinfo="no"])
 -if test "x$with_kvm_getswapinfo" = "xyes"
 +if test "x$with_libesmtp" = "xyes"
  then
 -      AC_DEFINE(HAVE_LIBKVM_GETSWAPINFO, 1,
 -                [Define to 1 if you have the 'kvm' library with the 'kvm_getswapinfo' symbol (-lkvm)])
 -      with_libkvm="yes"
 +      AC_CHECK_HEADERS(libesmtp.h,
 +      [
 +              AC_DEFINE(HAVE_LIBESMTP_H, 1, [Define to 1 if you have the <libesmtp.h> header file.])
 +      ], [with_libesmtp="no (libesmtp.h not found)"])
  fi
 -AM_CONDITIONAL(BUILD_WITH_LIBKVM_GETSWAPINFO, test "x$with_kvm_getswapinfo" = "xyes")
 -
 -AC_CHECK_LIB(kvm, kvm_nlist, [with_kvm_nlist="yes"], [with_kvm_nlist="no"])
 -if test "x$with_kvm_nlist" = "xyes"
 +if test "x$with_libesmtp" = "xyes"
  then
 -      AC_DEFINE(HAVE_LIBKVM_NLIST, 1,
 -                [Define to 1 if you have the 'kvm' library with the 'kvm_nlist' symbol (-lkvm)])
 -      with_libkvm="yes"
 +      collect_libesmtp=1
 +else
 +      collect_libesmtp=0
  fi
 -AM_CONDITIONAL(BUILD_WITH_LIBKVM_NLIST, test "x$with_kvm_nlist" = "xyes")
 +AC_DEFINE_UNQUOTED(COLLECT_LIBESMTP, [$collect_libesmtp],
 +      [Wether or not to use the esmtp library])
 +AM_CONDITIONAL(BUILD_WITH_LIBESMTP, test "x$with_libesmtp" = "xyes")
 +# }}}
  
 -with_sensors_cflags=""
 -with_sensors_ldflags=""
 -AC_ARG_WITH(lm-sensors, [AS_HELP_STRING([--with-lm-sensors@<:@=PREFIX@:>@], [Path to lm_sensors.])],
 +# --with-libiptc {{{
 +with_own_libiptc="no"
 +AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to libiptc.])],
  [
 -      if test "x$withval" = "xno"
 +      if test "x$withval" != "xno" && test "x$withval" != "xyes"
        then
 -              with_lm_sensors="no"
 +              LDFLAGS="$LDFLAGS -L$withval/lib"
 +              CPPFLAGS="$CPPFLAGS -I$withval/include"
 +              with_libiptc="yes"
        else
 -              with_lm_sensors="yes"
 -              if test "x$withval" != "xyes"
 -              then
 -                      with_sensors_cflags="-I$withval/include"
 -                      with_sensors_ldflags="-L$withval/lib"
 -                      with_lm_sensors="yes"
 -              fi
 +              with_libiptc="$withval"
        fi
  ],
  [
        if test "x$ac_system" = "xLinux"
        then
 -              with_lm_sensors="yes"
 +              with_libiptc="yes"
        else
 -              with_lm_sensors="no (Linux only library)"
 +              with_libiptc="no (Linux only)"
        fi
  ])
 -if test "x$with_lm_sensors" = "xyes"
 +if test "x$with_libiptc" = "xyes"
  then
 -      SAVE_CPPFLAGS="$CPPFLAGS"
 -      CPPFLAGS="$CPPFLAGS $with_sensors_cflags"
 -
 -#     AC_CHECK_HEADERS(sensors/sensors.h,
 -#     [
 -#             AC_DEFINE(HAVE_SENSORS_SENSORS_H, 1, [Define to 1 if you have the <sensors/sensors.h> header file.])
 -#     ],
 -#     [with_lm_sensors="no (sensors/sensors.h not found)"])
 -      AC_CHECK_HEADERS(sensors/sensors.h, [], [with_lm_sensors="no (sensors/sensors.h not found)"])
 -
 -      CPPFLAGS="$SAVE_CPPFLAGS"
 +      AC_CHECK_LIB(iptc, iptc_init,
 +      [
 +              AC_DEFINE(HAVE_LIBIPTC, 1, [Define to 1 if you have the iptc library (-liptc).])
 +      ],
 +      [
 +              with_libiptc="yes"
 +              with_own_libiptc="yes"
 +      ])
  fi
 -if test "x$with_lm_sensors" = "xyes"
 +if test "x$with_libiptc" = "xyes" -a "x$with_own_libiptc" != "xyes"
  then
 -      SAVE_CPPFLAGS="$CPPFLAGS"
 -      SAVE_LDFLAGS="$LDFLAGS"
 -      CPPFLAGS="$CPPFLAGS $with_sensors_cflags"
 -      LDFLAGS="$LDFLAGS $with_sensors_ldflags"
 +      AC_CHECK_HEADERS(libiptc/libiptc.h,
 +      [
 +              AC_DEFINE(HAVE_LIBIPTC_LIBIPTC_H, 1, [Define to 1 if you have the <libiptc/libiptc.h> header file.])
 +      ],
 +      [
 +              with_libiptc="yes"
 +              with_own_libiptc="yes"
 +      ])
 +fi
 +if test "x$with_libiptc" = "xyes"
 +then
 +      SAVE_CFLAGS=$CFLAGS
 +      CFLAGS="$CFLAGS $KERNEL_CFLAGS"
  
 -      AC_CHECK_LIB(sensors, sensors_init,
 +      AC_CHECK_HEADERS(linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h, [],
        [
 -              AC_DEFINE(HAVE_LIBSENSORS, 1, [Define to 1 if you have the sensors library (-lsensors).])
 +              with_libiptc="no (Linux iptables headers not found - check KERNEL_DIR)"
 +              with_own_libiptc="no"
        ],
 -      [with_lm_sensors="no (libsensors not found)"])
 +      [
 +#include "$srcdir/src/libiptc/ipt_kernel_headers.h"
 +      ])
  
 -      CPPFLAGS="$SAVE_CPPFLAGS"
 -      LDFLAGS="$SAVE_LDFLAGS"
 +      CFLAGS=$SAVE_CFLAGS
  fi
 -if test "x$with_lm_sensors" = "xyes"
 +AM_CONDITIONAL(BUILD_WITH_LIBIPTC, test "x$with_libiptc" = "xyes")
 +AM_CONDITIONAL(BUILD_WITH_OWN_LIBIPTC, test "x$with_own_libiptc" = "xyes")
 +if test "x$with_own_libiptc" = "xyes"
  then
 -      BUILD_WITH_LIBSENSORS_CFLAGS="$with_sensors_cflags"
 -      BUILD_WITH_LIBSENSORS_LDFLAGS="$with_sensors_ldflags"
 -      AC_SUBST(BUILD_WITH_LIBSENSORS_CFLAGS)
 -      AC_SUBST(BUILD_WITH_LIBSENSORS_LDFLAGS)
 +      AC_DEFINE(OWN_LIBIPTC, 1, [Define to 1 if we use the shipped iptc library.])
  fi
 -AM_CONDITIONAL(BUILD_WITH_LM_SENSORS, test "x$with_lm_sensors" = "xyes")
 +# }}}
  
 +# --with-libmysql {{{
  with_mysql_config="mysql_config"
  with_mysql_cflags=""
  with_mysql_libs=""
        AC_SUBST(BUILD_WITH_LIBMYSQL_LIBS)
  fi
  AM_CONDITIONAL(BUILD_WITH_LIBMYSQL, test "x$with_libmysql" = "xyes")
 +# }}}
  
 -with_own_liboconfig="no"
 -liboconfig_LDFLAGS="$LDFLAGS"
 -liboconfig_CPPFLAGS="$CPPFLAGS"
 -AC_ARG_WITH(liboconfig, [AS_HELP_STRING([--with-liboconfig@<:@=PREFIX@:>@], [Path to liboconfig.])],
 +# --with-libnetlink {{{
 +with_libnetlink_cflags=""
 +with_libnetlink_libs="-lnetlink"
 +AC_ARG_WITH(libnetlink, [AS_HELP_STRING([--with-libnetlink@<:@=PREFIX@:>@], [Path to libnetlink.])],
  [
 -      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 -      then
 -              if test -d "$withval/lib"
 -              then
 -                      liboconfig_LDFLAGS="$LDFLAGS -L$withval/lib"
 -              fi
 -              if test -d "$withval/include"
 -              then
 -                      liboconfig_CPPFLAGS="$CPPFLAGS -I$withval/include"
 -              fi
 -      fi
 -      if test "x$withval" = "xno"
 -      then
 -              AC_MSG_ERROR("liboconfig is required")
 -      fi
 + echo "libnetlink: withval = $withval"
 + if test "x$withval" = "xyes"
 + then
 +       with_libnetlink="yes"
 + else if test "x$withval" = "xno"
 + then
 +       with_libnetlink="no"
 + else
 +       if test -d "$withval/include"
 +       then
 +               with_libnetlink_cflags="-I$withval/include"
 +               with_libnetlink_libs="-L$withval/lib -lnetlink"
 +               with_libnetlink="yes"
 +       else
 +               AC_MSG_ERROR("no such directory: $withval/include")
 +       fi
 + fi; fi
  ],
  [
 -      with_liboconfig="yes"
 + if test "x$ac_system" = "xLinux"
 + then
 +       with_libnetlink="yes"
 + else
 +       with_libnetlink="no (Linux only library)"
 + fi
  ])
 +if test "x$with_libnetlink" = "xyes"
 +then
 +      SAVE_CFLAGS=$CFLAGS
 +      CFLAGS="$CFLAGS $with_libnetlink_cflags"
  
 -save_LDFLAGS="$LDFLAGS"
 -save_CPPFLAGS="$CPPFLAGS"
 -LDFLAGS="$liboconfig_LDFLAGS"
 -CPPFLAGS="$liboconfig_CPPFLAGS"
 -AC_CHECK_LIB(oconfig, oconfig_parse_fh,
 -[
 -      with_liboconfig="yes"
 -      with_own_liboconfig="no"
 -],
 -[
 -      with_liboconfig="yes"
 -      with_own_liboconfig="yes"
 -      LDFLAGS="$save_LDFLAGS"
 -      CPPFLAGS="$save_CPPFLAGS"
 -])
 +      with_libnetlink="no (libnetlink.h not found)"
  
 -AM_CONDITIONAL(BUILD_WITH_OWN_LIBOCONFIG, test "x$with_own_liboconfig" = "xyes")
 -if test "x$with_own_liboconfig" = "xyes"
 +      AC_CHECK_HEADERS(libnetlink.h iproute/libnetlink.h linux/libnetlink.h,
 +      [
 +       with_libnetlink="yes"
 +       break
 +      ], [],
 +[#include <stdio.h>
 +#include <sys/types.h>
 +#include <asm/types.h>
 +#include <sys/socket.h>
 +#include <linux/netlink.h>
 +#include <linux/rtnetlink.h>])
 +      AC_CHECK_HEADERS(linux/gen_stats.h linux/pkt_sched.h, [], [],
 +[#include <stdio.h>
 +#include <sys/types.h>
 +#include <asm/types.h>
 +#include <sys/socket.h>])
 +
 +      AC_COMPILE_IFELSE(
 +[#include <stdio.h>
 +#include <sys/types.h>
 +#include <asm/types.h>
 +#include <sys/socket.h>
 +#include <linux/netlink.h>
 +#include <linux/rtnetlink.h>
 +
 +int main (void)
 +{
 +      int retval = TCA_STATS2;
 +      return (retval);
 +}],
 +      [AC_DEFINE([HAVE_TCA_STATS2], 1, [True if the enum-member TCA_STATS2 exists])]
 +      []);
 +
 +      AC_COMPILE_IFELSE(
 +[#include <stdio.h>
 +#include <sys/types.h>
 +#include <asm/types.h>
 +#include <sys/socket.h>
 +#include <linux/netlink.h>
 +#include <linux/rtnetlink.h>
 +
 +int main (void)
 +{
 +      int retval = TCA_STATS;
 +      return (retval);
 +}],
 +      [AC_DEFINE([HAVE_TCA_STATS], 1, [True if the enum-member TCA_STATS exists])]
 +      []);
 +
 +      CFLAGS="$SAVE_CFLAGS"
 +fi
 +if test "x$with_libnetlink" = "xyes"
  then
 -      with_liboconfig="yes (shipped version)"
 +      AC_CHECK_LIB(netlink, rtnl_open,
 +                   [with_libnetlink="yes"],
 +                   [with_libnetlink="no (symbol 'rtnl_open' not found)"],
 +                   [$with_libnetlink_libs])
 +fi
 +if test "x$with_libnetlink" = "xyes"
 +then
 +      BUILD_WITH_LIBNETLINK_CFLAGS="$with_libnetlink_cflags"
 +      BUILD_WITH_LIBNETLINK_LIBS="$with_libnetlink_libs"
 +      AC_SUBST(BUILD_WITH_LIBNETLINK_CFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBNETLINK_LIBS)
  fi
 +AM_CONDITIONAL(BUILD_WITH_LIBNETLINK, test "x$with_libnetlink" = "xyes")
 +# }}}
  
 -#with_liboping="yes"
 -with_own_liboping="no"
 -liboping_LDFLAGS="$LDFLAGS"
 -liboping_CPPFLAGS="$CPPFLAGS"
 -AC_ARG_WITH(liboping, [AS_HELP_STRING([--with-liboping@<:@=PREFIX@:>@], [Path to liboping.])],
 +# --with-libnetsnmp {{{
 +with_snmp_config="net-snmp-config"
 +with_snmp_cflags=""
 +with_snmp_libs=""
 +AC_ARG_WITH(libnetsnmp, [AS_HELP_STRING([--with-libnetsnmp@<:@=PREFIX@:>@], [Path to the Net-SNMPD library.])],
  [
 -      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +      if test "x$withval" = "xno"
        then
 -              if test -d "$withval/lib"
 -              then
 -                      liboping_LDFLAGS="$LDFLAGS -L$withval/lib"
 -              fi
 +              with_libnetsnmp="no"
 +      else if test "x$withval" = "xyes"
 +      then
 +              with_libnetsnmp="yes"
 +      else
 +              if test -x "$withval"
 +              then
 +                      with_snmp_config="$withval"
 +                      with_libnetsnmp="yes"
 +              else
 +                      with_snmp_config="$withval/bin/net-snmp-config"
 +                      with_libnetsnmp="yes"
 +              fi
 +      fi; fi
 +],
 +[with_libnetsnmp="yes"])
 +if test "x$with_libnetsnmp" = "xyes"
 +then
 +      with_snmp_cflags=`$with_snmp_config --cflags 2>/dev/null`
 +      snmp_config_status=$?
 +
 +      if test $snmp_config_status -ne 0
 +      then
 +              with_libnetsnmp="no ($with_snmp_config failed)"
 +      else
 +              SAVE_CPPFLAGS="$CPPFLAGS"
 +              CPPFLAGS="$CPPFLAGS $with_snmp_cflags"
 +              
 +              AC_CHECK_HEADERS(net-snmp/net-snmp-config.h, [], [with_libnetsnmp="no (net-snmp/net-snmp-config.h not found)"])
 +
 +              CPPFLAGS="$SAVE_CPPFLAGS"
 +      fi
 +fi
 +if test "x$with_libnetsnmp" = "xyes"
 +then
 +      with_snmp_libs=`$with_snmp_config --libs 2>/dev/null`
 +      snmp_config_status=$?
 +
 +      if test $snmp_config_status -ne 0
 +      then
 +              with_libnetsnmp="no ($with_snmp_config failed)"
 +      else
 +              AC_CHECK_LIB(netsnmp, init_snmp,
 +              [with_libnetsnmp="yes"],
 +              [with_libnetsnmp="no (libnetsnmp not found)"],
 +              [$with_snmp_libs])
 +      fi
 +fi
 +if test "x$with_libnetsnmp" = "xyes"
 +then
 +      BUILD_WITH_LIBSNMP_CFLAGS="$with_snmp_cflags"
 +      BUILD_WITH_LIBSNMP_LIBS="$with_snmp_libs"
 +      AC_SUBST(BUILD_WITH_LIBSNMP_CFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBSNMP_LIBS)
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LIBNETSNMP, test "x$with_libnetsnmp" = "xyes")
 +# }}}
 +
 +# --with-liboconfig {{{
 +with_own_liboconfig="no"
 +liboconfig_LDFLAGS="$LDFLAGS"
 +liboconfig_CPPFLAGS="$CPPFLAGS"
 +AC_ARG_WITH(liboconfig, [AS_HELP_STRING([--with-liboconfig@<:@=PREFIX@:>@], [Path to liboconfig.])],
 +[
 +      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +      then
 +              if test -d "$withval/lib"
 +              then
 +                      liboconfig_LDFLAGS="$LDFLAGS -L$withval/lib"
 +              fi
 +              if test -d "$withval/include"
 +              then
 +                      liboconfig_CPPFLAGS="$CPPFLAGS -I$withval/include"
 +              fi
 +      fi
 +      if test "x$withval" = "xno"
 +      then
 +              AC_MSG_ERROR("liboconfig is required")
 +      fi
 +],
 +[
 +      with_liboconfig="yes"
 +])
 +
 +save_LDFLAGS="$LDFLAGS"
 +save_CPPFLAGS="$CPPFLAGS"
 +LDFLAGS="$liboconfig_LDFLAGS"
 +CPPFLAGS="$liboconfig_CPPFLAGS"
 +AC_CHECK_LIB(oconfig, oconfig_parse_fh,
 +[
 +      with_liboconfig="yes"
 +      with_own_liboconfig="no"
 +],
 +[
 +      with_liboconfig="yes"
 +      with_own_liboconfig="yes"
 +      LDFLAGS="$save_LDFLAGS"
 +      CPPFLAGS="$save_CPPFLAGS"
 +])
 +
 +AM_CONDITIONAL(BUILD_WITH_OWN_LIBOCONFIG, test "x$with_own_liboconfig" = "xyes")
 +if test "x$with_own_liboconfig" = "xyes"
 +then
 +      with_liboconfig="yes (shipped version)"
 +fi
 +# }}}
 +
 +# --with-liboping {{{
 +with_own_liboping="no"
 +liboping_LDFLAGS="$LDFLAGS"
 +liboping_CPPFLAGS="$CPPFLAGS"
 +AC_ARG_WITH(liboping, [AS_HELP_STRING([--with-liboping@<:@=PREFIX@:>@], [Path to liboping.])],
 +[
 +      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +      then
 +              if test -d "$withval/lib"
 +              then
 +                      liboping_LDFLAGS="$LDFLAGS -L$withval/lib"
 +              fi
                if test -d "$withval/include"
                then
                        liboping_CPPFLAGS="$CPPFLAGS -I$withval/include"
  fi
  AM_CONDITIONAL(BUILD_WITH_LIBOPING, test "x$with_liboping" = "xyes")
  AM_CONDITIONAL(BUILD_WITH_OWN_LIBOPING, test "x$with_own_liboping" = "xyes")
 +# }}}
  
++# --with-oracle {{{
+ with_oracle_cppflags=""
+ with_oracle_libs=""
+ AC_ARG_WITH(oracle, [AS_HELP_STRING([--with-oracle@<:@=ORACLE_HOME@:>@], [Path to Oracle.])],
+ [
+       if test "x$withval" = "xyes"
+       then
+               if test "x$ORACLE_HOME" = "x"
+               then
+                       AC_MSG_WARN([Use of the Oracle library has been forced, but the environment variable ORACLE_HOME is not set.])
+               fi
+               with_oracle="yes"
+       else if test "x$withval" = "xno"
+       then
+               with_oracle="no"
+       else
+               with_oracle="yes"
+               ORACLE_HOME="$withval"
+       fi; fi
+ ],
+ [
+       if test "x$ORACLE_HOME" = "x"
+       then
+               with_oracle="no (ORACLE_HOME is not set)"
+       else
+               with_oracle="yes"
+       fi
+ ])
+ if test "x$ORACLE_HOME" != "x"
+ then
+       with_oracle_cppflags="-I$ORACLE_HOME/rdbms/public"
+       if test -e "$ORACLE_HOME/lib/ldflags"
+       then
+               with_oracle_libs=`cat "$ORACLE_HOME/lib/ldflags"`
+       fi
+       #with_oracle_libs="-L$ORACLE_HOME/lib $with_oracle_libs -lclntsh"
+       with_oracle_libs="-L$ORACLE_HOME/lib -lclntsh"
+ fi
+ if test "x$with_oracle" = "xyes"
+ then
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS $with_oracle_cppflags"
+       AC_CHECK_HEADERS(oci.h, [with_oracle="yes"], [with_oracle="no (oci.h not found)"])
+       CPPFLAGS="$SAVE_CPPFLAGS"
+ fi
+ if test "x$with_oracle" = "xyes"
+ then
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+       CPPFLAGS="$CPPFLAGS $with_oracle_cppflags"
+       LDFLAGS="$LDFLAGS $with_oracle_libs"
+       AC_CHECK_FUNC(OCIEnvCreate, [with_oracle="yes"], [with_oracle="no (Symbol 'OCIEnvCreate' not found)"])
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
+ fi
+ if test "x$with_oracle" = "xyes"
+ then
+       BUILD_WITH_ORACLE_CFLAGS="$with_oracle_cppflags"
+       BUILD_WITH_ORACLE_LIBS="$with_oracle_libs"
+       AC_SUBST(BUILD_WITH_ORACLE_CFLAGS)
+       AC_SUBST(BUILD_WITH_ORACLE_LIBS)
+ fi
++# }}}
 +# --with-libowcapi {{{
  with_libowcapi_cppflags=""
  with_libowcapi_libs="-lowcapi"
  AC_ARG_WITH(libowcapi, [AS_HELP_STRING([--with-libowcapi@<:@=PREFIX@:>@], [Path to libowcapi.])],
@@@ -1599,9 -1610,8 +1668,9 @@@ the
        AC_SUBST(BUILD_WITH_LIBOWCAPI_CPPFLAGS)
        AC_SUBST(BUILD_WITH_LIBOWCAPI_LIBS)
  fi
 +# }}}
  
 -
 +# --with-libpcap {{{
  AC_ARG_WITH(libpcap, [AS_HELP_STRING([--with-libpcap@<:@=PREFIX@:>@], [Path to libpcap.])],
  [
        if test "x$withval" != "xno" && test "x$withval" != "xyes"
  AC_DEFINE_UNQUOTED(COLLECT_LIBPCAP, [$collect_libpcap],
        [Wether or not to use the pcap library])
  AM_CONDITIONAL(BUILD_WITH_LIBPCAP, test "x$with_libpcap" = "xyes")
 +# }}}
 +
 +# --with-libpcre {{{
 +with_pcre_config="pcre-config"
 +with_pcre_cflags=""
 +with_pcre_libs=""
 +AC_ARG_WITH(libpcre, [AS_HELP_STRING([--with-libpcre@<:@=PREFIX@:>@],
 +      [Path to libpcre.])],
 +      [
 +              if test "x$withval" = "xno"
 +              then
 +                      with_libpcre="no"
 +              else if test "x$withval" = "xyes"
 +              then
 +                      with_libpcre="yes"
 +              else
 +                      if test -f "$withval" && test -x "$withval"
 +                      then
 +                              with_pcre_config="$withval"
 +                      else if test -x "$withval/bin/pcre-config"
 +                      then
 +                              with_pcre_config="$withval/bin/pcre-config"
 +                      fi; fi
 +                      with_libpcre="yes"
 +              fi; fi
 +      ],
 +      [
 +              with_libpcre="yes"
 +      ])
  
 -AC_ARG_WITH(libesmtp, [AS_HELP_STRING([--with-libesmtp@<:@=PREFIX@:>@], [Path to libesmtp.])],
 -[
 -      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +if test "x$with_libpcre" = "xyes"
 +then
 +      with_pcre_cflags=`$with_pcre_config --cflags 2>/dev/null`
 +      pcre_config_status=$?
 +
 +      if test $pcre_config_status -ne 0
        then
 -              LDFLAGS="$LDFLAGS -L$withval/lib"
 -              CPPFLAGS="$CPPFLAGS -I$withval/include -D_THREAD_SAFE"
 -              with_libesmtp="yes"
 +              with_libpcre="no ($with_pcre_config failed)"
        else
 -              with_libesmtp="$withval"
 +              SAVE_CPPFLAGS="$CPPFLAGS"
 +              CPPFLAGS="$CPPFLAGS $with_pcre_cflags"
 +
 +              AC_CHECK_HEADERS(pcre.h, [], [with_libpcre="no (pcre.h not found)"], [])
 +
 +              CPPFLAGS="$SAVE_CPPFLAGS"
        fi
 -],
 -[
 -      with_libesmtp="yes"
 -])
 -if test "x$with_libesmtp" = "xyes"
 -then
 -      AC_CHECK_LIB(esmtp, smtp_create_session,
 -      [
 -              AC_DEFINE(HAVE_LIBESMTP, 1, [Define to 1 if you have the esmtp library (-lesmtp).])
 -      ], [with_libesmtp="no (libesmtp not found)"])
  fi
 -if test "x$with_libesmtp" = "xyes"
 +
 +if test "x$with_libpcre" = "xyes"
  then
 -      AC_CHECK_HEADERS(libesmtp.h,
 -      [
 -              AC_DEFINE(HAVE_LIBESMTP_H, 1, [Define to 1 if you have the <libesmtp.h> header file.])
 -      ], [with_libesmtp="no (libesmtp.h not found)"])
 +      with_pcre_libs=`$with_pcre_config --libs 2>/dev/null`
 +      pcre_config_status=$?
 +
 +      if test $pcre_config_status -ne 0
 +      then
 +              with_libpcre="no ($with_pcre_config failed)"
 +      else
 +              AC_CHECK_LIB(pcre, pcre_compile,
 +                      [with_libpcre="yes"],
 +                      [with_libpcre="no (symbol 'pcre_compile' not found)"],
 +                      [$with_pcre_libs])
 +      fi
  fi
 -if test "x$with_libesmtp" = "xyes"
 +
 +if test "x$with_libpcre" = "xyes"
  then
 -      collect_libesmtp=1
 -else
 -      collect_libesmtp=0
 +      BUILD_WITH_LIBPCRE_CFLAGS="$with_pcre_cflags"
 +      BUILD_WITH_LIBPCRE_LIBS="$with_pcre_libs"
 +      AC_SUBST(BUILD_WITH_LIBPCRE_CFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBPCRE_LIBS)
  fi
 -AC_DEFINE_UNQUOTED(COLLECT_LIBESMTP, [$collect_libesmtp],
 -      [Wether or not to use the esmtp library])
 -AM_CONDITIONAL(BUILD_WITH_LIBESMTP, test "x$with_libesmtp" = "xyes")
 +AM_CONDITIONAL(BUILD_WITH_LIBPCRE, test "x$with_libpcre" = "xyes")
 +# }}}
  
 +# --with-libperl {{{
  perl_interpreter="perl"
  AC_ARG_WITH(libperl, [AS_HELP_STRING([--with-libperl@<:@=PREFIX@:>@], [Path to libperl.])],
  [
        CFLAGS=$SAVE_CFLAGS
        LDFLAGS=$SAVE_LDFLAGS
  fi
 +# }}}
  
 -with_own_libiptc="no"
 -AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to libiptc.])],
 +# --with-libpq {{{
 +with_pg_config="pg_config"
 +with_libpq_includedir=""
 +with_libpq_libdir=""
 +with_libpq_cppflags=""
 +with_libpq_ldflags=""
 +AC_ARG_WITH(libpq, [AS_HELP_STRING([--with-libpq@<:@=PREFIX@:>@],
 +      [Path to libpq.])],
  [
 -      if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +      if test "x$withval" = "xno"
        then
 -              LDFLAGS="$LDFLAGS -L$withval/lib"
 -              CPPFLAGS="$CPPFLAGS -I$withval/include"
 -              with_libiptc="yes"
 +              with_libpq="no"
 +      else if test "x$withval" = "xyes"
 +      then
 +              with_libpq="yes"
        else
 -              with_libiptc="$withval"
 -      fi
 +              if test -f "$withval" && test -x "$withval";
 +              then
 +                      with_pg_config="$withval"
 +              else if test -x "$withval/bin/pg_config"
 +              then
 +                      with_pg_config="$withval/bin/pg_config"
 +              fi; fi
 +              with_libpq="yes"
 +      fi; fi
  ],
  [
 -      if test "x$ac_system" = "xLinux"
 +      with_libpq="yes"
 +])
 +if test "x$with_libpq" = "xyes"
 +then
 +      with_libpq_includedir=`$with_pg_config --includedir 2> /dev/null`
 +      pg_config_status=$?
 +
 +      if test $pg_config_status -eq 0
        then
 -              with_libiptc="yes"
 +              if test -n "$with_libpq_includedir"; then
 +                      for dir in $with_libpq_includedir; do
 +                              with_libpq_cppflags="$with_libpq_cppflags -I$dir"
 +                      done
 +              fi
        else
 -              with_libiptc="no (Linux only)"
 +              AC_MSG_WARN([$with_pg_config returned with status $pg_config_status])
        fi
 -])
 -if test "x$with_libiptc" = "xyes"
 -then
 -      AC_CHECK_LIB(iptc, iptc_init,
 -      [
 -              AC_DEFINE(HAVE_LIBIPTC, 1, [Define to 1 if you have the iptc library (-liptc).])
 -      ],
 -      [
 -              with_libiptc="yes"
 -              with_own_libiptc="yes"
 -      ])
 -fi
 -if test "x$with_libiptc" = "xyes" -a "x$with_own_libiptc" != "xyes"
 -then
 -      AC_CHECK_HEADERS(libiptc/libiptc.h,
 -      [
 -              AC_DEFINE(HAVE_LIBIPTC_LIBIPTC_H, 1, [Define to 1 if you have the <libiptc/libiptc.h> header file.])
 -      ],
 -      [
 -              with_libiptc="yes"
 -              with_own_libiptc="yes"
 -      ])
 -fi
 -if test "x$with_libiptc" = "xyes"
 -then
 -      SAVE_CFLAGS=$CFLAGS
 -      CFLAGS="$CFLAGS $KERNEL_CFLAGS"
  
 -      AC_CHECK_HEADERS(linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h, [],
 -      [
 -              with_libiptc="no (Linux iptables headers not found - check KERNEL_DIR)"
 -              with_own_libiptc="no"
 -      ],
 -      [
 -#include "$srcdir/src/libiptc/ipt_kernel_headers.h"
 -      ])
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      CPPFLAGS="$CPPFLAGS $with_libpq_cppflags"
  
 -      CFLAGS=$SAVE_CFLAGS
 +      AC_CHECK_HEADERS(libpq-fe.h, [],
 +              [with_libpq="no (libpq-fe.h not found)"], [])
 +
 +      CPPFLAGS="$SAVE_CPPFLAGS"
  fi
 -AM_CONDITIONAL(BUILD_WITH_LIBIPTC, test "x$with_libiptc" = "xyes")
 -AM_CONDITIONAL(BUILD_WITH_OWN_LIBIPTC, test "x$with_own_libiptc" = "xyes")
 -if test "x$with_own_libiptc" = "xyes"
 +if test "x$with_libpq" = "xyes"
  then
 -      AC_DEFINE(OWN_LIBIPTC, 1, [Define to 1 if we use the shipped iptc library.])
 -fi
 +      with_libpq_libdir=`$with_pg_config --libdir 2> /dev/null`
 +      pg_config_status=$?
  
 -with_snmp_config="net-snmp-config"
 -with_snmp_cflags=""
 -with_snmp_libs=""
 -AC_ARG_WITH(libnetsnmp, [AS_HELP_STRING([--with-libnetsnmp@<:@=PREFIX@:>@], [Path to the Net-SNMPD library.])],
 -[
 -      if test "x$withval" = "xno"
 -      then
 -              with_libnetsnmp="no"
 -      else if test "x$withval" = "xyes"
 +      if test $pg_config_status -eq 0
        then
 -              with_libnetsnmp="yes"
 -      else
 -              if test -x "$withval"
 -              then
 -                      with_snmp_config="$withval"
 -                      with_libnetsnmp="yes"
 -              else
 -                      with_snmp_config="$withval/bin/net-snmp-config"
 -                      with_libnetsnmp="yes"
 +              if test -n "$with_libpq_libdir"; then
 +                      for dir in $with_libpq_libdir; do
 +                              with_libpq_ldflags="$with_libpq_ldflags -L$dir"
 +                      done
                fi
 -      fi; fi
 -],
 -[with_libnetsnmp="yes"])
 -if test "x$with_libnetsnmp" = "xyes"
 +      else
 +              AC_MSG_WARN([$with_pg_config returned with status $pg_config_status])
 +      fi
 +
 +      SAVE_LDFLAGS="$LDFLAGS"
 +      LDFLAGS="$LDFLAGS $with_libpq_ldflags"
 +
 +      AC_CHECK_LIB(pq, PQconnectdb,
 +              [with_libpq="yes"],
 +              [with_libpq="no (symbol 'PQconnectdb' not found)"])
 +
 +      LDFLAGS="$SAVE_LDFLAGS"
 +fi
 +if test "x$with_libpq" = "xyes"
  then
 -      with_snmp_cflags=`$with_snmp_config --cflags 2>/dev/null`
 -      snmp_config_status=$?
 +      BUILD_WITH_LIBPQ_CPPFLAGS="$with_libpq_cppflags"
 +      BUILD_WITH_LIBPQ_LDFLAGS="$with_libpq_ldflags"
 +      AC_SUBST(BUILD_WITH_LIBPQ_CPPFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBPQ_LDFLAGS)
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LIBPQ, test "x$with_libpq" = "xyes")
 +# }}}
  
 -      if test $snmp_config_status -ne 0
 +# --with-libpthread {{{
 +AC_ARG_WITH(libpthread, [AS_HELP_STRING([--with-libpthread=@<:@=PREFIX@:>@], [Path to libpthread.])],
 +[     if test "x$withval" != "xno" \
 +              && test "x$withval" != "xyes"
        then
 -              with_libnetsnmp="no ($with_snmp_config failed)"
 +              LDFLAGS="$LDFLAGS -L$withval/lib"
 +              CPPFLAGS="$CPPFLAGS -I$withval/include"
 +              with_libpthread="yes"
        else
 -              SAVE_CPPFLAGS="$CPPFLAGS"
 -              CPPFLAGS="$CPPFLAGS $with_snmp_cflags"
 -              
 -              AC_CHECK_HEADERS(net-snmp/net-snmp-config.h, [], [with_libnetsnmp="no (net-snmp/net-snmp-config.h not found)"])
 -
 -              CPPFLAGS="$SAVE_CPPFLAGS"
 +              if test "x$withval" = "xno"
 +              then
 +                      with_libpthread="no (disabled)"
 +              fi
        fi
 +], [with_libpthread="yes"])
 +if test "x$with_libpthread" = "xyes"
 +then
 +      AC_CHECK_LIB(pthread, pthread_create, [with_libpthread="yes"], [with_libpthread="no (libpthread not found)"], [])
  fi
 -if test "x$with_libnetsnmp" = "xyes"
 +if test "x$with_libpthread" = "xyes"
  then
 -      with_snmp_libs=`$with_snmp_config --libs 2>/dev/null`
 -      snmp_config_status=$?
 +      AC_CHECK_HEADERS(pthread.h,, [with_libpthread="no (pthread.h not found)"])
 +fi
 +if test "x$with_libpthread" = "xyes"
 +then
 +      collect_pthread=1
 +else
 +      collect_pthread=0
 +fi
 +AC_DEFINE_UNQUOTED(HAVE_LIBPTHREAD, [$collect_pthread],
 +      [Wether or not to use pthread (POSIX threads) library])
 +AM_CONDITIONAL(BUILD_WITH_LIBPTHREAD, test "x$with_libpthread" = "xyes")
 +# }}}
  
 -      if test $snmp_config_status -ne 0
 +# --with-librrd {{{
 +# AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given])
 +librrd_cflags=""
 +librrd_ldflags=""
 +librrd_threadsafe="yes"
 +librrd_rrdc_update="no"
 +AC_ARG_WITH(librrd, [AS_HELP_STRING([--with-librrd@<:@=PREFIX@:>@], [Path to rrdtool.])],
 +[     if test "x$withval" != "xno" && test "x$withval" != "xyes"
        then
 -              with_libnetsnmp="no ($with_snmp_config failed)"
 +              librrd_cflags="-I$withval/include"
 +              librrd_ldflags="-L$withval/lib"
 +              with_librrd="yes"
        else
 -              AC_CHECK_LIB(netsnmp, init_snmp,
 -              [with_libnetsnmp="yes"],
 -              [with_libnetsnmp="no (libnetsnmp not found)"],
 -              [$with_snmp_libs])
 +              with_librrd="$withval"
        fi
 -fi
 -if test "x$with_libnetsnmp" = "xyes"
 +], [with_librrd="yes"])
 +if test "x$with_librrd" = "xyes"
  then
 -      BUILD_WITH_LIBSNMP_CFLAGS="$with_snmp_cflags"
 -      BUILD_WITH_LIBSNMP_LIBS="$with_snmp_libs"
 -      AC_SUBST(BUILD_WITH_LIBSNMP_CFLAGS)
 -      AC_SUBST(BUILD_WITH_LIBSNMP_LIBS)
 -fi
 -AM_CONDITIONAL(BUILD_WITH_LIBNETSNMP, test "x$with_libnetsnmp" = "xyes")
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      SAVE_LDFLAGS="$LDFLAGS"
  
 -PKG_CHECK_MODULES([LIBNOTIFY], [libnotify],
 -              [with_libnotify="yes"],
 -              [with_libnotify="no ($LIBNOTIFY_PKG_ERRORS)"])
 +      CPPFLAGS="$CPPFLAGS $librrd_cflags"
 +      LDFLAGS="$LDFLAGS $librrd_ldflags"
  
 -with_libupsclient="no (pkg-config isn't available)"
 -with_libupsclient_cflags=""
 -with_libupsclient_libs=""
 -if test "x$PKG_CONFIG" != "x"
 +      AC_CHECK_HEADERS(rrd.h,, [with_librrd="no (rrd.h not found)"])
 +
 +      CPPFLAGS="$SAVE_CPPFLAGS"
 +      LDFLAGS="$SAVE_LDFLAGS"
 +fi
 +if test "x$with_librrd" = "xyes"
  then
 -      pkg-config --exists 'libupsclient' 2>/dev/null
 -      if test "$?" = "0"
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      SAVE_LDFLAGS="$LDFLAGS"
 +
 +      CPPFLAGS="$CPPFLAGS $librrd_cflags"
 +      LDFLAGS="$LDFLAGS $librrd_ldflags"
 +
 +      AC_CHECK_LIB(rrd_th, rrd_update_r,
 +      [with_librrd="yes"
 +       librrd_ldflags="$librrd_ldflags -lrrd_th -lm"
 +      ],
 +      [librrd_threadsafe="no"
 +       AC_CHECK_LIB(rrd, rrd_update,
 +       [with_librrd="yes"
 +        librrd_ldflags="$librrd_ldflags -lrrd -lm"
 +       ],
 +       [with_librrd="no (symbol 'rrd_update' not found)"],
 +       [-lm])
 +      ],
 +      [-lm])
 +
 +      if test "x$librrd_threadsafe" = "xyes"
        then
 -              with_libupsclient="yes"
 +              AC_CHECK_LIB(rrd_th, rrdc_update, [librrd_rrdc_update="yes"], [librrd_rrdc_update="no"])
        else
 -              with_libupsclient="no (pkg-config doesn't know library)"
 +              AC_CHECK_LIB(rrd, rrdc_update, [librrd_rrdc_update="yes"], [librrd_rrdc_update="no"])
        fi
 +
 +      CPPFLAGS="$SAVE_CPPFLAGS"
 +      LDFLAGS="$SAVE_LDFLAGS"
  fi
 -if test "x$with_libupsclient" = "xyes"
 +if test "x$with_librrd" = "xyes"
  then
 -      with_libupsclient_cflags="`pkg-config --cflags 'libupsclient'`"
 -      if test $? -ne 0
 +      BUILD_WITH_LIBRRD_CFLAGS="$librrd_cflags"
 +      BUILD_WITH_LIBRRD_LDFLAGS="$librrd_ldflags"
 +      AC_SUBST(BUILD_WITH_LIBRRD_CFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBRRD_LDFLAGS)
 +fi
 +if test "x$librrd_threadsafe" = "xyes"
 +then
 +      AC_DEFINE(HAVE_THREADSAFE_LIBRRD, 1, [Define to 1 if you have the threadsafe rrd library (-lrrd_th).])
 +fi
 +# }}}
 +
 +# --with-libsensors {{{
 +with_sensors_cflags=""
 +with_sensors_ldflags=""
 +AC_ARG_WITH(libsensors, [AS_HELP_STRING([--with-libsensors@<:@=PREFIX@:>@], [Path to lm_sensors.])],
 +[
 +      if test "x$withval" = "xno"
        then
 -              with_libupsclient="no"
 +              with_libsensors="no"
 +      else
 +              with_libsensors="yes"
 +              if test "x$withval" != "xyes"
 +              then
 +                      with_sensors_cflags="-I$withval/include"
 +                      with_sensors_ldflags="-L$withval/lib"
 +                      with_libsensors="yes"
 +              fi
        fi
 -      with_libupsclient_libs="`pkg-config --libs 'libupsclient'`"
 -      if test $? -ne 0
 +],
 +[
 +      if test "x$ac_system" = "xLinux"
        then
 -              with_libupsclient="no"
 +              with_libsensors="yes"
 +      else
 +              with_libsensors="no (Linux only library)"
        fi
 -fi
 -if test "x$with_libupsclient" = "xyes"
 +])
 +if test "x$with_libsensors" = "xyes"
  then
        SAVE_CPPFLAGS="$CPPFLAGS"
 -      CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
 +      CPPFLAGS="$CPPFLAGS $with_sensors_cflags"
  
 -      AC_CHECK_HEADERS(upsclient.h, [], [with_libupsclient="no (upsclient.h not found)"])
 +#     AC_CHECK_HEADERS(sensors/sensors.h,
 +#     [
 +#             AC_DEFINE(HAVE_SENSORS_SENSORS_H, 1, [Define to 1 if you have the <sensors/sensors.h> header file.])
 +#     ],
 +#     [with_libsensors="no (sensors/sensors.h not found)"])
 +      AC_CHECK_HEADERS(sensors/sensors.h, [], [with_libsensors="no (sensors/sensors.h not found)"])
  
        CPPFLAGS="$SAVE_CPPFLAGS"
  fi
 -if test "x$with_libupsclient" = "xyes"
 +if test "x$with_libsensors" = "xyes"
  then
        SAVE_CPPFLAGS="$CPPFLAGS"
        SAVE_LDFLAGS="$LDFLAGS"
 +      CPPFLAGS="$CPPFLAGS $with_sensors_cflags"
 +      LDFLAGS="$LDFLAGS $with_sensors_ldflags"
  
 -      CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
 -      LDFLAGS="$LDFLAGS $with_libupsclient_libs"
 -
 -      AC_CHECK_LIB(upsclient, upscli_connect,
 -                   [with_libupsclient="yes"],
 -                   [with_libupsclient="no (symbol upscli_connect not found)"])
 +      AC_CHECK_LIB(sensors, sensors_init,
 +      [
 +              AC_DEFINE(HAVE_LIBSENSORS, 1, [Define to 1 if you have the sensors library (-lsensors).])
 +      ],
 +      [with_libsensors="no (libsensors not found)"])
  
        CPPFLAGS="$SAVE_CPPFLAGS"
        LDFLAGS="$SAVE_LDFLAGS"
  fi
 -if test "x$with_libupsclient" = "xyes"
 +if test "x$with_libsensors" = "xyes"
  then
 -      SAVE_CPPFLAGS="$CPPFLAGS"
 -      CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
 +      BUILD_WITH_LIBSENSORS_CFLAGS="$with_sensors_cflags"
 +      BUILD_WITH_LIBSENSORS_LDFLAGS="$with_sensors_ldflags"
 +      AC_SUBST(BUILD_WITH_LIBSENSORS_CFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBSENSORS_LDFLAGS)
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LM_SENSORS, test "x$with_libsensors" = "xyes")
 +# }}}
  
 -      AC_CHECK_TYPES([UPSCONN_t, UPSCONN], [], [],
 -[#include <stdlib.h>
 -#include <stdio.h>
 -#include <upsclient.h>])
 +# --with-libstatgrab {{{
 +with_libstatgrab_cflags=""
 +with_libstatgrab_ldflags=""
 +AC_ARG_WITH(libstatgrab, [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [Path to libstatgrab.])],
 +[
 +      if test "x$withval" != "xno" \
 +              && test "x$withval" != "xyes"
 +      then
 +              with_libstatgrab_cflags="-I$withval/include"
 +              with_libstatgrab_ldflags="-L$withval/lib"
 +              with_libstatgrab="yes"
 +      else
 +              with_libstatgrab="$withval"
 +      fi
 +],
 +[
 +      if test "x$ac_system" = "xunknown"
 +      then
 +              with_libstatgrab="yes"
 +      else
 +              with_libstatgrab="no"
 +      fi
 +])
 +with_libstatgrab_pkg_config="yes"
 +if test "x$with_libstatgrab" = "xyes" \
 +  && test "x$PKG_CONFIG" != "x"
 +then
 +  AC_MSG_CHECKING([pkg-config for libstatgrab])
 +  temp_result="found"
 +  $PKG_CONFIG --exists libstatgrab 2>/dev/null
 +  if test "$?" != "0"
 +  then
 +    with_libstatgrab_pkg_config="no"
 +    temp_result="not found"
 +  fi
 +  AC_MSG_RESULT([$temp_result])
 +else
 +  AC_MSG_NOTICE([pkg-config not available, trying to guess flags for the statgrab library.])
 +  with_libstatgrab_pkg_config="no"
 +  with_libstatgrab_ldflags="$with_libstatgrab_ldflags -lstatgrab"
 +fi
  
 -      CPPFLAGS="$SAVE_CPPFLAGS"
 +if test "x$with_libstatgrab" = "xyes" \
 +  && test "x$with_libstatgrab_pkg_config" = "xyes" \
 +  && test "x$with_libstatgrab_cflags" = "x"
 +then
 +  AC_MSG_CHECKING([for libstatgrab CFLAGS])
 +  temp_result="`$PKG_CONFIG --cflags libstatgrab`"
 +  if test "$?" = "0"
 +  then
 +    with_libstatgrab_cflags="$temp_result"
 +  else
 +    with_libstatgrab="no ($PKG_CONFIG --cflags libstatgrab failed)"
 +    temp_result="$PKG_CONFIG --cflags libstatgrab failed"
 +  fi
 +  AC_MSG_RESULT([$temp_result])
  fi
 -if test "x$with_libupsclient" = "xyes"
 +
 +if test "x$with_libstatgrab" = "xyes" \
 +  && test "x$with_libstatgrab_pkg_config" = "xyes" \
 +  && test "x$with_libstatgrab_ldflags" = "x"
  then
 -      BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_libupsclient_cflags"
 -      BUILD_WITH_LIBUPSCLIENT_LIBS="$with_libupsclient_libs"
 -      AC_SUBST(BUILD_WITH_LIBUPSCLIENT_CFLAGS)
 -      AC_SUBST(BUILD_WITH_LIBUPSCLIENT_LIBS)
 +  AC_MSG_CHECKING([for libstatgrab LDFLAGS])
 +  temp_result="`$PKG_CONFIG --libs libstatgrab`"
 +  if test "$?" = "0"
 +  then
 +    with_libstatgrab_ldflags="$temp_result"
 +  else
 +    with_libstatgrab="no ($PKG_CONFIG --libs libstatgrab failed)"
 +    temp_result="$PKG_CONFIG --libs libstatgrab failed"
 +  fi
 +  AC_MSG_RESULT([$temp_result])
 +fi
 +
 +if test "x$with_libstatgrab" = "xyes"
 +then
 +  SAVE_CPPFLAGS="$CPPFLAGS"
 +  CPPFLAGS="$CPPFLAGS $with_libstatgrab_cflags"
 +
 +  AC_CHECK_HEADERS(statgrab.h,
 +                 [with_libstatgrab="yes"],
 +                 [with_libstatgrab="no (statgrab.h not found)"])
 +
 +  CPPFLAGS="$SAVE_CPPFLAGS"
 +fi
 +
 +if test "x$with_libstatgrab" = "xyes"
 +then
 +  SAVE_CFLAGS="$CFLAGS"
 +  SAVE_LDFLAGS="$LDFLAGS"
 +
 +  CFLAGS="$CFLAGS $with_libstatgrab_cflags"
 +  LDFLAGS="$LDFLAGS $with_libstatgrab_ldflags"
 +
 +  AC_CHECK_LIB(statgrab, sg_init,
 +             [with_libstatgrab="yes"],
 +             [with_libstatgrab="no (symbol sg_init not found)"])
 +
 +  CFLAGS="$SAVE_CFLAGS"
 +  LDFLAGS="$SAVE_LDFLAGS"
 +fi
 +
 +AM_CONDITIONAL(BUILD_WITH_LIBSTATGRAB, test "x$with_libstatgrab" = "xyes")
 +if test "x$with_libstatgrab" = "xyes"
 +then
 +  AC_DEFINE(HAVE_LIBSTATGRAB, 1, [Define to 1 if you have the 'statgrab' library (-lstatgrab)])
 +  BUILD_WITH_LIBSTATGRAB_CFLAGS="$with_libstatgrab_cflags"
 +  BUILD_WITH_LIBSTATGRAB_LDFLAGS="$with_libstatgrab_ldflags"
 +  AC_SUBST(BUILD_WITH_LIBSTATGRAB_CFLAGS)
 +  AC_SUBST(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
  fi
 +# }}}
  
 -### BEGIN of check for libxmms ###
 +# --with-libxmms {{{
  with_xmms_config="xmms-config"
  with_xmms_cflags=""
  with_xmms_libs=""
                BUILD_WITH_LIBXMMS_LIBS="$with_xmms_libs"
                AC_SUBST(BUILD_WITH_LIBXMMS_CFLAGS)
                AC_SUBST(BUILD_WITH_LIBXMMS_LIBS)
 -      ],
 -      [
 -              with_libxmms="no"
 -      ],
 -      [$with_xmms_libs])
 -fi
 -with_libxmms_numeric=0
 -if test "x$with_libxmms" = "xyes"
 -then
 -      with_libxmms_numeric=1
 -fi
 -AC_DEFINE_UNQUOTED(HAVE_LIBXMMS, [$with_libxmms_numeric], [Define to 1 if you have the 'xmms' library (-lxmms).])
 -AM_CONDITIONAL(BUILD_WITH_LIBXMMS, test "x$with_libxmms" = "xyes")
 -### END of check for libxmms ###
 -
 -with_libnetlink_cflags=""
 -with_libnetlink_libs="-lnetlink"
 -AC_ARG_WITH(libnetlink, [AS_HELP_STRING([--with-libnetlink@<:@=PREFIX@:>@], [Path to libnetlink.])],
 -[
 - echo "libnetlink: withval = $withval"
 - if test "x$withval" = "xyes"
 - then
 -       with_libnetlink="yes"
 - else if test "x$withval" = "xno"
 - then
 -       with_libnetlink="no"
 - else
 -       if test -d "$withval/include"
 -       then
 -               with_libnetlink_cflags="-I$withval/include"
 -               with_libnetlink_libs="-L$withval/lib -lnetlink"
 -               with_libnetlink="yes"
 -       else
 -               AC_MSG_ERROR("no such directory: $withval/include")
 -       fi
 - fi; fi
 -],
 -[
 - if test "x$ac_system" = "xLinux"
 - then
 -       with_libnetlink="yes"
 - else
 -       with_libnetlink="no (Linux only library)"
 - fi
 -])
 -if test "x$with_libnetlink" = "xyes"
 -then
 -      SAVE_CFLAGS=$CFLAGS
 -      CFLAGS="$CFLAGS $with_libnetlink_cflags"
 -
 -      with_libnetlink="no (libnetlink.h not found)"
 -
 -      AC_CHECK_HEADERS(libnetlink.h iproute/libnetlink.h linux/libnetlink.h,
 -      [
 -       with_libnetlink="yes"
 -       break
 -      ], [],
 -[#include <stdio.h>
 -#include <sys/types.h>
 -#include <asm/types.h>
 -#include <sys/socket.h>
 -#include <linux/netlink.h>
 -#include <linux/rtnetlink.h>])
 -      AC_CHECK_HEADERS(linux/gen_stats.h linux/pkt_sched.h, [], [],
 -[#include <stdio.h>
 -#include <sys/types.h>
 -#include <asm/types.h>
 -#include <sys/socket.h>])
 -
 -      AC_COMPILE_IFELSE(
 -[#include <stdio.h>
 -#include <sys/types.h>
 -#include <asm/types.h>
 -#include <sys/socket.h>
 -#include <linux/netlink.h>
 -#include <linux/rtnetlink.h>
 -
 -int main (void)
 -{
 -      int retval = TCA_STATS2;
 -      return (retval);
 -}],
 -      [AC_DEFINE([HAVE_TCA_STATS2], 1, [True if the enum-member TCA_STATS2 exists])]
 -      []);
 -
 -      AC_COMPILE_IFELSE(
 -[#include <stdio.h>
 -#include <sys/types.h>
 -#include <asm/types.h>
 -#include <sys/socket.h>
 -#include <linux/netlink.h>
 -#include <linux/rtnetlink.h>
 -
 -int main (void)
 -{
 -      int retval = TCA_STATS;
 -      return (retval);
 -}],
 -      [AC_DEFINE([HAVE_TCA_STATS], 1, [True if the enum-member TCA_STATS exists])]
 -      []);
 -
 -      CFLAGS="$SAVE_CFLAGS"
 -fi
 -if test "x$with_libnetlink" = "xyes"
 -then
 -      AC_CHECK_LIB(netlink, rtnl_open,
 -                   [with_libnetlink="yes"],
 -                   [with_libnetlink="no (symbol 'rtnl_open' not found)"],
 -                   [$with_libnetlink_libs])
 -fi
 -if test "x$with_libnetlink" = "xyes"
 -then
 -      BUILD_WITH_LIBNETLINK_CFLAGS="$with_libnetlink_cflags"
 -      BUILD_WITH_LIBNETLINK_LIBS="$with_libnetlink_libs"
 -      AC_SUBST(BUILD_WITH_LIBNETLINK_CFLAGS)
 -      AC_SUBST(BUILD_WITH_LIBNETLINK_LIBS)
 -fi
 -AM_CONDITIONAL(BUILD_WITH_LIBNETLINK, test "x$with_libnetlink" = "xyes")
 -
 -with_libopenipmipthread="yes"
 -with_libopenipmipthread_cflags=""
 -with_libopenipmipthread_libs=""
 -
 -AC_MSG_CHECKING([for pkg-config])
 -temp_result="no"
 -if test "x$PKG_CONFIG" = "x"
 -then
 -      with_libopenipmipthread="no"
 -      temp_result="no"
 -else
 -      temp_result="$PKG_CONFIG"
 +      ],
 +      [
 +              with_libxmms="no"
 +      ],
 +      [$with_xmms_libs])
  fi
 -AC_MSG_RESULT([$temp_result])
 -
 -if test "x$with_libopenipmipthread" = "xyes"
 +with_libxmms_numeric=0
 +if test "x$with_libxmms" = "xyes"
  then
 -      AC_MSG_CHECKING([for libOpenIPMIpthread])
 -      $PKG_CONFIG --exists OpenIPMIpthread 2>/dev/null
 -      if test "$?" != "0"
 -      then
 -              with_libopenipmipthread="no ($PKG_CONFIG doesn't know OpenIPMIpthread)"
 -      fi
 -      AC_MSG_RESULT([$with_libopenipmipthread])
 +      with_libxmms_numeric=1
  fi
 +AC_DEFINE_UNQUOTED(HAVE_LIBXMMS, [$with_libxmms_numeric], [Define to 1 if you have the 'xmms' library (-lxmms).])
 +AM_CONDITIONAL(BUILD_WITH_LIBXMMS, test "x$with_libxmms" = "xyes")
 +# }}}
  
 -if test "x$with_libopenipmipthread" = "xyes"
 +# pkg-config --exists 'libupsclient' {{{
 +with_libupsclient="no (pkg-config isn't available)"
 +with_libupsclient_cflags=""
 +with_libupsclient_libs=""
 +if test "x$PKG_CONFIG" != "x"
  then
 -      AC_MSG_CHECKING([for libOpenIPMIpthread CFLAGS])
 -      temp_result="`$PKG_CONFIG --cflags OpenIPMIpthread`"
 +      pkg-config --exists 'libupsclient' 2>/dev/null
        if test "$?" = "0"
        then
 -              with_libopenipmipthread_cflags="$temp_result"
 +              with_libupsclient="yes"
        else
 -              with_libopenipmipthread="no ($PKG_CONFIG --cflags OpenIPMIpthread failed)"
 -              temp_result="$PKG_CONFIG --cflags OpenIPMIpthread failed"
 +              with_libupsclient="no (pkg-config doesn't know library)"
        fi
 -      AC_MSG_RESULT([$temp_result])
  fi
 -
 -if test "x$with_libopenipmipthread" = "xyes"
 +if test "x$with_libupsclient" = "xyes"
  then
 -      AC_MSG_CHECKING([for libOpenIPMIpthread LDFLAGS])
 -      temp_result="`$PKG_CONFIG --libs OpenIPMIpthread`"
 -      if test "$?" = "0"
 +      with_libupsclient_cflags="`pkg-config --cflags 'libupsclient'`"
 +      if test $? -ne 0
        then
 -              with_libopenipmipthread_ldflags="$temp_result"
 -      else
 -              with_libopenipmipthread="no ($PKG_CONFIG --libs OpenIPMIpthread failed)"
 -              temp_result="$PKG_CONFIG --libs OpenIPMIpthread failed"
 +              with_libupsclient="no"
 +      fi
 +      with_libupsclient_libs="`pkg-config --libs 'libupsclient'`"
 +      if test $? -ne 0
 +      then
 +              with_libupsclient="no"
        fi
 -      AC_MSG_RESULT([$temp_result])
  fi
 -
 -if test "x$with_libopenipmipthread" = "xyes"
 +if test "x$with_libupsclient" = "xyes"
  then
        SAVE_CPPFLAGS="$CPPFLAGS"
 -      CPPFLAGS="$CPPFLAGS $with_libopenipmipthread_cflags"
 +      CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
  
 -      AC_CHECK_HEADERS(OpenIPMI/ipmi_smi.h,
 -                       [with_libopenipmipthread="yes"],
 -                       [with_libopenipmipthread="no (OpenIPMI/ipmi_smi.h not found)"],
 -[#include <OpenIPMI/ipmiif.h>
 -#include <OpenIPMI/ipmi_err.h>
 -#include <OpenIPMI/ipmi_posix.h>
 -#include <OpenIPMI/ipmi_conn.h>
 -])
 +      AC_CHECK_HEADERS(upsclient.h, [], [with_libupsclient="no (upsclient.h not found)"])
  
        CPPFLAGS="$SAVE_CPPFLAGS"
  fi
 -
 -if test "x$with_libopenipmipthread" = "xyes"
 -then
 -      BUILD_WITH_OPENIPMI_CFLAGS="$with_libopenipmipthread_cflags"
 -      BUILD_WITH_OPENIPMI_LIBS="$with_libopenipmipthread_ldflags"
 -      AC_SUBST(BUILD_WITH_OPENIPMI_CFLAGS)
 -      AC_SUBST(BUILD_WITH_OPENIPMI_LIBS)
 -fi
 -
 -dnl Check for libpq.
 -with_pg_config="pg_config"
 -with_libpq_includedir=""
 -with_libpq_libdir=""
 -with_libpq_cppflags=""
 -with_libpq_ldflags=""
 -AC_ARG_WITH(libpq, [AS_HELP_STRING([--with-libpq@<:@=PREFIX@:>@],
 -      [Path to libpq.])],
 -[
 -      if test "x$withval" = "xno"
 -      then
 -              with_libpq="no"
 -      else if test "x$withval" = "xyes"
 -      then
 -              with_libpq="yes"
 -      else
 -              if test -f "$withval" && test -x "$withval";
 -              then
 -                      with_pg_config="$withval"
 -              else if test -x "$withval/bin/pg_config"
 -              then
 -                      with_pg_config="$withval/bin/pg_config"
 -              fi; fi
 -              with_libpq="yes"
 -      fi; fi
 -],
 -[
 -      with_libpq="yes"
 -])
 -if test "x$with_libpq" = "xyes"
 +if test "x$with_libupsclient" = "xyes"
  then
 -      with_libpq_includedir=`$with_pg_config --includedir 2> /dev/null`
 -      pg_config_status=$?
 -
 -      if test $pg_config_status -eq 0
 -      then
 -              if test -n "$with_libpq_includedir"; then
 -                      for dir in $with_libpq_includedir; do
 -                              with_libpq_cppflags="$with_libpq_cppflags -I$dir"
 -                      done
 -              fi
 -      else
 -              AC_MSG_WARN([$with_pg_config returned with status $pg_config_status])
 -      fi
 -
        SAVE_CPPFLAGS="$CPPFLAGS"
 -      CPPFLAGS="$CPPFLAGS $with_libpq_cppflags"
 +      SAVE_LDFLAGS="$LDFLAGS"
  
 -      AC_CHECK_HEADERS(libpq-fe.h, [],
 -              [with_libpq="no (libpq-fe.h not found)"], [])
 +      CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
 +      LDFLAGS="$LDFLAGS $with_libupsclient_libs"
 +
 +      AC_CHECK_LIB(upsclient, upscli_connect,
 +                   [with_libupsclient="yes"],
 +                   [with_libupsclient="no (symbol upscli_connect not found)"])
  
        CPPFLAGS="$SAVE_CPPFLAGS"
 +      LDFLAGS="$SAVE_LDFLAGS"
  fi
 -if test "x$with_libpq" = "xyes"
 +if test "x$with_libupsclient" = "xyes"
  then
 -      with_libpq_libdir=`$with_pg_config --libdir 2> /dev/null`
 -      pg_config_status=$?
 -
 -      if test $pg_config_status -eq 0
 -      then
 -              if test -n "$with_libpq_libdir"; then
 -                      for dir in $with_libpq_libdir; do
 -                              with_libpq_ldflags="$with_libpq_ldflags -L$dir"
 -                      done
 -              fi
 -      else
 -              AC_MSG_WARN([$with_pg_config returned with status $pg_config_status])
 -      fi
 -
 -      SAVE_LDFLAGS="$LDFLAGS"
 -      LDFLAGS="$LDFLAGS $with_libpq_ldflags"
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
  
 -      AC_CHECK_LIB(pq, PQconnectdb,
 -              [with_libpq="yes"],
 -              [with_libpq="no (symbol 'PQconnectdb' not found)"])
 +      AC_CHECK_TYPES([UPSCONN_t, UPSCONN], [], [],
 +[#include <stdlib.h>
 +#include <stdio.h>
 +#include <upsclient.h>])
  
 -      LDFLAGS="$SAVE_LDFLAGS"
 +      CPPFLAGS="$SAVE_CPPFLAGS"
  fi
 -if test "x$with_libpq" = "xyes"
 +if test "x$with_libupsclient" = "xyes"
  then
 -      BUILD_WITH_LIBPQ_CPPFLAGS="$with_libpq_cppflags"
 -      BUILD_WITH_LIBPQ_LDFLAGS="$with_libpq_ldflags"
 -      AC_SUBST(BUILD_WITH_LIBPQ_CPPFLAGS)
 -      AC_SUBST(BUILD_WITH_LIBPQ_LDFLAGS)
 +      BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_libupsclient_cflags"
 +      BUILD_WITH_LIBUPSCLIENT_LIBS="$with_libupsclient_libs"
 +      AC_SUBST(BUILD_WITH_LIBUPSCLIENT_CFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBUPSCLIENT_LIBS)
  fi
 -AM_CONDITIONAL(BUILD_WITH_LIBPQ, test "x$with_libpq" = "xyes")
 +# }}}
  
 -dnl Check for libvirt and libxml2 libraries.
 +# pkg-config --exists 'libxml-2.0'; pkg-config --exists libvirt {{{
  with_libxml2="no (pkg-config isn't available)"
  with_libxml2_cflags=""
  with_libxml2_ldflags=""
@@@ -2463,92 -2462,8 +2532,92 @@@ if test "x$with_libvirt" = "xyes"; the
        AC_SUBST(BUILD_WITH_LIBVIRT_CFLAGS)
        AC_SUBST(BUILD_WITH_LIBVIRT_LIBS)
  fi
 +# }}}
 +
 +# $PKG_CONFIG --exists OpenIPMIpthread {{{
 +with_libopenipmipthread="yes"
 +with_libopenipmipthread_cflags=""
 +with_libopenipmipthread_libs=""
 +
 +AC_MSG_CHECKING([for pkg-config])
 +temp_result="no"
 +if test "x$PKG_CONFIG" = "x"
 +then
 +      with_libopenipmipthread="no"
 +      temp_result="no"
 +else
 +      temp_result="$PKG_CONFIG"
 +fi
 +AC_MSG_RESULT([$temp_result])
 +
 +if test "x$with_libopenipmipthread" = "xyes"
 +then
 +      AC_MSG_CHECKING([for libOpenIPMIpthread])
 +      $PKG_CONFIG --exists OpenIPMIpthread 2>/dev/null
 +      if test "$?" != "0"
 +      then
 +              with_libopenipmipthread="no ($PKG_CONFIG doesn't know OpenIPMIpthread)"
 +      fi
 +      AC_MSG_RESULT([$with_libopenipmipthread])
 +fi
 +
 +if test "x$with_libopenipmipthread" = "xyes"
 +then
 +      AC_MSG_CHECKING([for libOpenIPMIpthread CFLAGS])
 +      temp_result="`$PKG_CONFIG --cflags OpenIPMIpthread`"
 +      if test "$?" = "0"
 +      then
 +              with_libopenipmipthread_cflags="$temp_result"
 +      else
 +              with_libopenipmipthread="no ($PKG_CONFIG --cflags OpenIPMIpthread failed)"
 +              temp_result="$PKG_CONFIG --cflags OpenIPMIpthread failed"
 +      fi
 +      AC_MSG_RESULT([$temp_result])
 +fi
 +
 +if test "x$with_libopenipmipthread" = "xyes"
 +then
 +      AC_MSG_CHECKING([for libOpenIPMIpthread LDFLAGS])
 +      temp_result="`$PKG_CONFIG --libs OpenIPMIpthread`"
 +      if test "$?" = "0"
 +      then
 +              with_libopenipmipthread_ldflags="$temp_result"
 +      else
 +              with_libopenipmipthread="no ($PKG_CONFIG --libs OpenIPMIpthread failed)"
 +              temp_result="$PKG_CONFIG --libs OpenIPMIpthread failed"
 +      fi
 +      AC_MSG_RESULT([$temp_result])
 +fi
 +
 +if test "x$with_libopenipmipthread" = "xyes"
 +then
 +      SAVE_CPPFLAGS="$CPPFLAGS"
 +      CPPFLAGS="$CPPFLAGS $with_libopenipmipthread_cflags"
 +
 +      AC_CHECK_HEADERS(OpenIPMI/ipmi_smi.h,
 +                       [with_libopenipmipthread="yes"],
 +                       [with_libopenipmipthread="no (OpenIPMI/ipmi_smi.h not found)"],
 +[#include <OpenIPMI/ipmiif.h>
 +#include <OpenIPMI/ipmi_err.h>
 +#include <OpenIPMI/ipmi_posix.h>
 +#include <OpenIPMI/ipmi_conn.h>
 +])
 +
 +      CPPFLAGS="$SAVE_CPPFLAGS"
 +fi
 +
 +if test "x$with_libopenipmipthread" = "xyes"
 +then
 +      BUILD_WITH_OPENIPMI_CFLAGS="$with_libopenipmipthread_cflags"
 +      BUILD_WITH_OPENIPMI_LIBS="$with_libopenipmipthread_ldflags"
 +      AC_SUBST(BUILD_WITH_OPENIPMI_CFLAGS)
 +      AC_SUBST(BUILD_WITH_OPENIPMI_LIBS)
 +fi
 +# }}}
  
 -dnl End of check for libvirt and libxml2 libraries.
 +PKG_CHECK_MODULES([LIBNOTIFY], [libnotify],
 +              [with_libnotify="yes"],
 +              [with_libnotify="no ($LIBNOTIFY_PKG_ERRORS)"])
  
  # Check for enabled/disabled features
  #
@@@ -2639,13 -2554,7 +2708,13 @@@ AC_DEFUN
      ])
      if test "x$enable_plugin" = "xyes"
      then
 -          AC_DEFINE([HAVE_PLUGIN_]my_toupper([$1]), 1, [Define to 1 if the $1 plugin is enabled.])
 +          if test "x$2" = "xyes"
 +          then
 +                  AC_DEFINE([HAVE_PLUGIN_]my_toupper([$1]), 1, [Define to 1 if the $1 plugin is enabled.])
 +          else # User passed "yes" but dependency checking yielded "no" => Dependency problem.
 +                  dependency_error="yes"
 +                  enable_plugin="no (dependency error)"
 +          fi
      fi
      AM_CONDITIONAL([BUILD_PLUGIN_]my_toupper([$1]), test "x$enable_plugin" = "xyes")
      enable_$1="$enable_plugin"
@@@ -2659,7 -2568,6 +2728,7 @@@ AC_COLLECTD([debug],     [enable],  [fe
  AC_COLLECTD([daemon],    [disable], [feature], [daemon mode])
  AC_COLLECTD([getifaddrs],[enable],  [feature], [getifaddrs under Linux])
  
 +dependency_error="no"
  plugin_ascent="no"
  plugin_battery="no"
  plugin_cpu="no"
@@@ -2855,7 -2763,6 +2924,7 @@@ AC_PLUGIN([cpu],         [$plugin_cpu]
  AC_PLUGIN([cpufreq],     [$plugin_cpufreq],    [CPU frequency statistics])
  AC_PLUGIN([csv],         [yes],                [CSV output plugin])
  AC_PLUGIN([notify_desktop], [$with_libnotify], [Desktop notifications])
 +AC_PLUGIN([dbi],         [$with_libdbi],       [General database statistics])
  AC_PLUGIN([df],          [$plugin_df],         [Filesystem usage statistics])
  AC_PLUGIN([disk],        [$plugin_disk],       [Disk usage statistics])
  AC_PLUGIN([dns],         [$with_libpcap],      [DNS traffic analysis])
@@@ -2863,8 -2770,6 +2932,8 @@@ AC_PLUGIN([email],       [yes]
  AC_PLUGIN([entropy],     [$plugin_entropy],    [Entropy statistics])
  AC_PLUGIN([exec],        [yes],                [Execution of external programs])
  AC_PLUGIN([filecount],   [yes],                [Count files in directories])
 +AC_PLUGIN([filter_ignore], [yes],                [Ignore specific values])
 +AC_PLUGIN([filter_pcre], [$with_libpcre],      [Filter based on PCRE])
  AC_PLUGIN([hddtemp],     [yes],                [Query hddtempd])
  AC_PLUGIN([interface],   [$plugin_interface],  [Interface traffic statistics])
  AC_PLUGIN([iptables],    [$with_libiptc],      [IPTables rule counters])
@@@ -2887,14 -2792,15 +2956,15 @@@ AC_PLUGIN([notify_email], [$with_libesm
  AC_PLUGIN([ntpd],        [yes],                [NTPd statistics])
  AC_PLUGIN([nut],         [$with_libupsclient], [Network UPS tools statistics])
  AC_PLUGIN([onewire],     [$with_libowcapi],    [OneWire sensor statistics])
+ AC_PLUGIN([oracle],      [$with_oracle],       [Oracle plugin])
  AC_PLUGIN([perl],        [$plugin_perl],       [Embed a Perl interpreter])
  AC_PLUGIN([ping],        [$with_liboping],     [Network latency statistics])
  AC_PLUGIN([postgresql],  [$with_libpq],        [PostgreSQL database statistics])
  AC_PLUGIN([powerdns],    [yes],                [PowerDNS statistics])
  AC_PLUGIN([processes],   [$plugin_processes],  [Process statistics])
 -AC_PLUGIN([rrdtool],     [$with_rrdtool],      [RRDTool output plugin])
 +AC_PLUGIN([rrdtool],     [$with_librrd],       [RRDTool output plugin])
  AC_PLUGIN([rrdcached],   [$librrd_rrdc_update], [RRDTool output plugin])
 -AC_PLUGIN([sensors],     [$with_lm_sensors],   [lm_sensors statistics])
 +AC_PLUGIN([sensors],     [$with_libsensors],   [lm_sensors statistics])
  AC_PLUGIN([serial],      [$plugin_serial],     [serial port traffic])
  AC_PLUGIN([snmp],        [$with_libnetsnmp],   [SNMP querying plugin])
  AC_PLUGIN([swap],        [$plugin_swap],       [Swap usage statistics])
@@@ -2951,10 -2857,10 +3021,10 @@@ AC_SUBST(PERL_BINDINGS_OPTIONS
  
  AC_OUTPUT(Makefile src/Makefile src/collectd.conf src/libiptc/Makefile src/liboconfig/Makefile src/liboping/Makefile bindings/Makefile)
  
 -if test "x$with_rrdtool" = "xyes" \
 +if test "x$with_librrd" = "xyes" \
        && test "x$librrd_threadsafe" != "xyes"
  then
 -      with_rrdtool="yes (warning: librrd is not thread-safe)"
 +      with_librrd="yes (warning: librrd is not thread-safe)"
  fi
  
  if test "x$with_liboping" = "xyes" \
@@@ -2986,7 -2892,6 +3056,7 @@@ cat <<EOF
  Configuration:
    Libraries:
      libcurl . . . . . . . $with_libcurl
 +    libdbi  . . . . . . . $with_libdbi
      libesmtp  . . . . . . $with_libesmtp
      libiokit  . . . . . . $with_libiokit
      libiptc . . . . . . . $with_libiptc
      libopenipmi . . . . . $with_libopenipmipthread
      liboping  . . . . . . $with_liboping
      libpcap . . . . . . . $with_libpcap
 +    libpcre . . . . . . . $with_libpcre
      libperl . . . . . . . $with_libperl
      libpthread  . . . . . $with_libpthread
      libpq . . . . . . . . $with_libpq
 -    librrd  . . . . . . . $with_rrdtool
 -    libsensors  . . . . . $with_lm_sensors
 +    librrd  . . . . . . . $with_librrd
 +    libsensors  . . . . . $with_libsensors
      libstatgrab . . . . . $with_libstatgrab
      libupsclient  . . . . $with_libupsclient
      libvirt . . . . . . . $with_libvirt
      libxml2 . . . . . . . $with_libxml2
      libxmms . . . . . . . $with_libxmms
+     oracle  . . . . . . . $with_oracle
  
    Features:
      daemon mode . . . . . $enable_daemon
      cpu . . . . . . . . . $enable_cpu
      cpufreq . . . . . . . $enable_cpufreq
      csv . . . . . . . . . $enable_csv
 +    dbi . . . . . . . . . $enable_dbi
      df  . . . . . . . . . $enable_df
      disk  . . . . . . . . $enable_disk
      dns . . . . . . . . . $enable_dns
      entropy . . . . . . . $enable_entropy
      exec  . . . . . . . . $enable_exec
      filecount . . . . . . $enable_filecount
 +    filter_ignore . . . . $enable_filter_ignore
 +    filter_pcre . . . . . $enable_filter_pcre
      hddtemp . . . . . . . $enable_hddtemp
      interface . . . . . . $enable_interface
      iptables  . . . . . . $enable_iptables
      ntpd  . . . . . . . . $enable_ntpd
      nut . . . . . . . . . $enable_nut
      onewire . . . . . . . $enable_onewire
+     oracle  . . . . . . . $enable_oracle
      perl  . . . . . . . . $enable_perl
      ping  . . . . . . . . $enable_ping
      postgresql  . . . . . $enable_postgresql
      xmms  . . . . . . . . $enable_xmms
  
  EOF
 +
 +if test "x$dependency_error" = "xyes"; then
 +      AC_MSG_ERROR("Some plugins are missing dependencies - see above summary for details")
 +fi
 +
 +# vim: set fdm=marker :
diff --combined src/Makefile.am
@@@ -133,7 -133,7 +133,7 @@@ ascent_la_LDFLAGS = -module -avoid-vers
  ascent_la_CFLAGS = $(AM_CFLAGS) \
                $(BUILD_WITH_LIBCURL_CFLAGS) $(BUILD_WITH_LIBXML2_CFLAGS)
  ascent_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS) $(BUILD_WITH_LIBXML2_LIBS)
 -collectd_LDADD += "-dlopen" apache.la
 +collectd_LDADD += "-dlopen" ascent.la
  collectd_DEPENDENCIES += ascent.la
  endif
  
@@@ -184,16 -184,6 +184,16 @@@ collectd_LDADD += "-dlopen" csv.l
  collectd_DEPENDENCIES += csv.la
  endif
  
 +if BUILD_PLUGIN_DBI
 +pkglib_LTLIBRARIES += dbi.la
 +dbi_la_SOURCES = dbi.c
 +dbi_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBDBI_CPPFLAGS)
 +dbi_la_LDFLAGS = -module -avoid-version $(BUILD_WITH_LIBDBI_LDFLAGS)
 +dbi_la_LIBADD = $(BUILD_WITH_LIBDBI_LIBS)
 +collectd_LDADD += "-dlopen" dbi.la
 +collectd_DEPENDENCIES += dbi.la
 +endif
 +
  if BUILD_PLUGIN_DF
  pkglib_LTLIBRARIES += df.la
  df_la_SOURCES = df.c
@@@ -274,24 -264,6 +274,24 @@@ collectd_LDADD += "-dlopen" filecount.l
  collectd_DEPENDENCIES += filecount.la
  endif
  
 +if BUILD_PLUGIN_FILTER_IGNORE
 +pkglib_LTLIBRARIES += filter_ignore.la
 +filter_ignore_la_SOURCES = filter_ignore.c
 +filter_ignore_la_LDFLAGS = -module -avoid-version
 +collectd_LDADD += "-dlopen" filter_ignore.la
 +collectd_DEPENDENCIES += filter_ignore.la
 +endif
 +
 +if BUILD_PLUGIN_FILTER_PCRE
 +pkglib_LTLIBRARIES += filter_pcre.la
 +filter_pcre_la_SOURCES = filter_pcre.c
 +filter_pcre_la_CPPFLAGS = $(BUILD_WITH_LIBPCRE_CFLAGS)
 +filter_pcre_la_LDFLAGS = -module -avoid-version \
 +              $(BUILD_WITH_LIBPCRE_LIBS)
 +collectd_LDADD += "-dlopen" filter_pcre.la
 +collectd_DEPENDENCIES += filter_pcre.la
 +endif
 +
  if BUILD_PLUGIN_HDDTEMP
  pkglib_LTLIBRARIES += hddtemp.la
  hddtemp_la_SOURCES = hddtemp.c
@@@ -557,6 -529,17 +557,17 @@@ collectd_LDADD += "-dlopen" onewire.l
  collectd_DEPENDENCIES += onewire.la
  endif
  
+ if BUILD_PLUGIN_ORACLE
+ pkglib_LTLIBRARIES += oracle.la
+ oracle_la_SOURCES = oracle.c
+ oracle_la_CFLAGS = $(AM_CFLAGS)
+ oracle_la_CPPFLAGS = $(BUILD_WITH_ORACLE_CFLAGS)
+ oracle_la_LIBADD = $(BUILD_WITH_ORACLE_LIBS)
+ oracle_la_LDFLAGS = -module -avoid-version
+ collectd_LDADD += "-dlopen" oracle.la
+ collectd_DEPENDENCIES += oracle.la
+ endif
  if BUILD_PLUGIN_PERL
  pkglib_LTLIBRARIES += perl.la
  perl_la_SOURCES = perl.c
@@@ -857,6 -840,5 +868,6 @@@ install-exec-hook
                $(INSTALL) -m 0640 collectd.conf $(DESTDIR)$(sysconfdir)/collectd.conf; \
        fi; \
        cp -f $(srcdir)/types.db $(DESTDIR)$(pkglibdir)/;
 -      $(INSTALL) -D -m 0644 $(srcdir)/postgresql_default.conf \
 +      $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
 +      $(INSTALL) -m 0644 $(srcdir)/postgresql_default.conf \
                $(DESTDIR)$(pkgdatadir)/postgresql_default.conf;
diff --combined src/collectd.conf.pod
@@@ -282,161 -282,6 +282,161 @@@ number
  
  =back
  
 +=head2 Plugin C<dbi>
 +
 +This plugin uses the "B<dbi>" library (L<http://libdbi.sourceforge.net/>) to
 +connect to various databases, execute SQL statements and read back the results.
 +You can configure how each column is to be interpreted and the plugin will
 +generate one data set from each row returned according to these rules.
 +
 +Because the plugin is very generic, the configuration is a little more complex
 +than those of other plugins. It usually looks something like this:
 +
 +  <Plugin dbi>
 +    <Query "out_of_stock">
 +      Statement "SELECT category, COUNT(*) AS value FROM products WHERE in_stock = 0 GROUP BY category"
 +      Type "gauge"
 +      InstancesFrom "category"
 +      ValuesFrom "value"
 +    </Query>
 +    <Database "product_information">
 +      Driver "mysql"
 +      DriverOption "host" "localhost"
 +      DriverOption "username" "collectd"
 +      DriverOption "password" "aZo6daiw"
 +      DriverOption "dbname" "prod_info"
 +      SelectDB "prod_info"
 +      Query "out_of_stock"
 +    </Database>
 +  </Plugin>
 +
 +The configuration above defines one query and one database. The query is then
 +linked to the database with the B<Query> option I<within> the
 +B<E<lt>DatabaseE<gt>> block. You can have any number of queries and databases
 +and you can also use the B<Include> statement to split up the configuration
 +file in multiple, smaller files. However, the B<E<lt>QueryE<gt>> block I<must>
 +precede the B<E<lt>DatabaseE<gt>> blocks, because the file is interpreted from
 +top to bottom!
 +
 +The following is a complete list of options:
 +
 +=head3 B<Query> blocks
 +
 +Query blocks define SQL statements and how the returned data should be
 +interpreted. They are identified by the name that is given in the opening line
 +of the block. Thus the name needs to be unique. Other than that, the name is
 +not used in collectd.
 +
 +=over 4
 +
 +=item B<Statement> I<SQL>
 +
 +Sets the statement that should be executed on the server. This is B<not>
 +interpreted by collectd, but simply passed to the database server. Therefore,
 +the SQL dialect that's used depends on the server collectd is connected to.
 +
 +The query has to return at least two columns, one for the instance and one
 +value. You cannot omit the instance, even if the statement is guaranteed to
 +always return exactly one line. In that case, you can usually specify something
 +like this:
 +
 +  Statement "SELECT \"instance\", COUNT(*) AS value FROM table"
 +
 +(That works with MySQL but may not be valid SQL according to the spec. If you
 +use a more strict database server, you may have to select from a dummy table or
 +something.)
 +
 +=item B<Type> I<Type>
 +
 +The B<type> that's used for each line returned. See L<types.db(5)> for more
 +details on how types are defined. In short: A type is a predefined layout of
 +data and the number of values and type of values has to match the type
 +definition.
 +
 +If you specify "temperature" here, you need exactly one gauge column. If you
 +specify "if_octets", you will need two counter columns. See the B<ValuesFrom>
 +setting below.
 +
 +=item B<InstancesFrom> I<column0> [I<column1> ...]
 +
 +Specifies the columns whose values will be used to create the "TypeInstance"
 +for each row. You need to specify at least one column for each query. If you
 +specify more than one column, the value of all columns will be join together
 +with the hyphen as separation character.
 +
 +The plugin itself does not check whether or not all built instances are
 +different. It's your responsibility to assure that each is unique.
 +
 +=item B<ValuesFrom> I<column0> [I<column1> ...]
 +
 +Names the columns whose content is used as the actual data for the data sets
 +that are dispatched to the daemon. How many such columns you need is determined
 +by the B<Type> setting above. If you specify too many or not enough columns,
 +the plugin will complain about that and no data will be submitted to the
 +daemon.
 +
 +The actual data type in the columns is not that important. The plugin will
 +automatically cast the values to the right type if it know how to do that. So
 +it should be able to handle integer an floating point types, as well as strings
 +(if they include a number at the beginning).
 +
 +=back
 +
 +=head3 B<Database> blocks
 +
 +Database blocks define a connection to a database and which queries should be
 +sent to that database. Since the used "dbi" library can handle a wide variety
 +of databases, the configuration is very generic. If in doubt, refer to libdbi's
 +documentationE<nbsp>- we stick as close to the terminology used there.
 +
 +Each database needs a "name" as string argument in the starting tag of the
 +block. This name will be used as "PluginInstance" in the values submitted to
 +the daemon. Other than that, that name is not used.
 +
 +=over 4
 +
 +=item B<Driver> I<Driver>
 +
 +Specifies the driver to use to connect to the database. In many cases those
 +drivers are named after the database they can connect to, but this is not a
 +technical necessity. These drivers are sometimes referred to as "DBD",
 +B<D>ataB<B>ase B<D>river, and some distributions ship them in separate
 +packages. Drivers for the "dbi" library are developed by the B<libdbi-drivers>
 +project at L<http://libdbi-drivers.sourceforge.net/>.
 +
 +You need to give the driver name as expected by the "dbi" library here. You
 +should be able to find that in the documentation for each driver. If you
 +mistype the driver name, the plugin will dump a list of all known driver names
 +to the log.
 +
 +=item B<DriverOption> I<Key> I<Value>
 +
 +Sets driver-specific options. What option a driver supports can be found in the
 +documentation for each driver, somewhere at
 +L<http://libdbi-drivers.sourceforge.net/>. However, the options "host",
 +"username", "password", and "dbname" seem to be deE<nbsp>facto standards.
 +
 +Unfortunately, drivers are not too keen to report errors when an unknown option
 +is passed to them, so invalid settings here may go unnoticed. This is not the
 +plugin's fault, it will report errors if it gets them from the libraryE<nbsp>/
 +the driver. If a driver complains about an option, the plugin will dump a
 +complete list of all options understood by that driver to the log.
 +
 +=item B<SelectDB> I<Database>
 +
 +In some cases, the database name you connect with is not the database name you
 +want to use for querying data. If this option is set, the plugin will "select"
 +(switch to) that database after the connection is established.
 +
 +=item B<Query> I<QueryName>
 +
 +Associates the query named I<QueryName> with this database connection. The
 +query needs to be defined I<before> this statement, i.E<nbsp>e. all query
 +blocks you want to refer to must be placed above the database block you want to
 +refer to them from.
 +
 +=back
 +
  =head2 Plugin C<df>
  
  =over 4
@@@ -648,70 -493,6 +648,70 @@@ note that there are 1000 bytes in a kil
  
  =back
  
 +=head2 Plugin C<filter_pcre>
 +
 +This plugin allows you to filter value lists based on Perl-compatible regular
 +expressions whose syntax and semantics are as close as possible to those of
 +the Perl 5 language. See L<pcre(3)> for details.
 +
 +  <Plugin filter_pcre>
 +    <RegEx>
 +      Host "^mail\d+$"
 +      Plugin "^tcpconns$"
 +      TypeInstance "^SYN_"
 +
 +      Action NoWrite
 +  </Plugin>
 +
 +The configuration consists of one or more C<RegEx> blocks, each of which
 +specifies a regular expression identifying a set of value lists and how to
 +handle successful matches. A value list keeps the values of a single data-set
 +and is identified by the tuple (host, plugin, plugin instance, type, type
 +instance). The plugin and type instances are optional components. If they are
 +missing they are treated as empty strings. Within those blocks, the following
 +options are recognized:
 +
 +=over 4
 +
 +=item B<Host> I<regex>
 +
 +=item B<Plugin> I<regex>
 +
 +=item B<PluginInstance> I<regex>
 +
 +=item B<Type> I<regex>
 +
 +=item B<TypeInstance> I<regex>
 +
 +Specifies the regular expression for each component of the identifier. If any
 +of these options is missing it is interpreted as a pattern which matches any
 +string. All five components of a value list have to match the appropriate
 +regular expression to trigger the specified action.
 +
 +=item B<Action> I<NoWrite>|I<NoThresholdCheck>|I<Ignore>
 +
 +Specify how to handle successful matches:
 +
 +=over 4
 +
 +=item B<NoWrite>
 +
 +Do not send the value list to any output (a.k.a. write) plugins.
 +
 +=item B<NoThresholdCheck>
 +
 +Skip threshold checking for this value list.
 +
 +=item B<Ignore>
 +
 +Completely ignore this value list.
 +
 +=back
 +
 +Two or more actions may be combined by specifying multiple B<Action> options.
 +
 +=back
 +
  =head2 Plugin C<hddtemp>
  
  To get values from B<hddtemp> collectd connects to B<localhost> (127.0.0.1),
@@@ -1318,6 -1099,65 +1318,65 @@@ short: If it works for you: Great! But 
  change, though this is unlikely. Oh, and if you want to help improving this
  plugin, just send a short notice to the mailing list. ThanksE<nbsp>:)
  
+ =head2 Plugin C<oracle>
+ The "oracle" plugin uses the Oracle® Call Interface (OCI) to connect to an
+ Oracle® Database and lets you execute SQL statements there. It is very similar
+ to the "dbi" plugin, because it was written around the same time. See the "dbi"
+ plugin's documentation above for details.
+   <Plugin oracle>
+     <Query "out_of_stock">
+       Statement "SELECT category, COUNT(*) AS value FROM products WHERE in_stock = 0 GROUP BY category"
+       Type "gauge"
+       InstancesFrom "category"
+       ValuesFrom "value"
+     </Query>
+     <Database "product_information">
+       ConnectID "db01"
+       Username "oracle"
+       Password "secret"
+       Query "out_of_stock"
+     </Database>
+   </Plugin>
+ =head3 B<Query> blocks
+ The Query blocks are handled identically to the Query blocks of the "dbi"
+ plugin. Please see its documentation above for details on how to specify
+ queries.
+ =head3 B<Database> blocks
+ Database blocks define a connection to a database and which queries should be
+ sent to that database. Each database needs a "name" as string argument in the
+ starting tag of the block. This name will be used as "PluginInstance" in the
+ values submitted to the daemon. Other than that, that name is not used.
+ =over 4
+ =item B<ConnectID> I<ID>
+ Defines the "database alias" or "service name" to connect to. Usually, these
+ names are defined in the file named C<$ORACLE_HOME/network/admin/tnsnames.ora>.
+ =item B<Username> I<Username>
+ Username used for authentication.
+ =item B<Password> I<Password>
+ Password used for authentication.
+ =item B<Query> I<QueryName>
+ Associates the query named I<QueryName> with this database connection. The
+ query needs to be defined I<before> this statement, i.E<nbsp>e. all query
+ blocks you want to refer to must be placed above the database block you want to
+ refer to them from.
+ =back
  =head2 Plugin C<perl>
  
  This plugin embeds a Perl-interpreter into collectd and provides an interface
@@@ -1691,9 -1531,9 +1750,9 @@@ In this case please file a bug report w
  =item B<Socket> I<Path>
  
  Configures the path to the UNIX domain socket to be used when connecting to the
 -daemon. By default C</var/run/pdns.controlsocket> will be used for an
 -authoritative server and C</var/run/pdns_recursor.controlsocket> will be used
 -for the recursor.
 +daemon. By default C<${localstatedir}/run/pdns.controlsocket> will be used for
 +an authoritative server and C<${localstatedir}/run/pdns_recursor.controlsocket>
 +will be used for the recursor.
  
  =back
  
@@@ -1852,8 -1692,8 +1911,8 @@@ When collecting many statistics with co
  will run serious performance problems. The B<CacheFlush> setting and the
  internal update queue assert that collectd continues to work just fine even
  under heavy load, but the system may become very unresponsive and slow. This is
 -a problem especially if create graphs from the RRD files on the same machine,
 -for example using the C<graph.cgi> script included in the
 +a problem especially if you create graphs from the RRD files on the same
 +machine, for example using the C<graph.cgi> script included in the
  C<contrib/collection3/> directory.
  
  This setting is designed for very large setups. Setting this option to a value
@@@ -2241,9 -2081,6 +2300,9 @@@ hosts sends it's CPU statistics to the 
  will be dispatched after about 120 seconds. It may take a little longer because
  the timeout is checked only once each B<Interval> on the server.
  
 +When a value comes within range again or is received after it was missing, an
 +"OKAY-notification" is dispatched.
 +
  Here is a configuration example to get you started. Read below for more
  information.
  
@@@ -2354,7 -2191,6 +2413,7 @@@ L<types.db(5)>
  L<hddtemp(8)>,
  L<kstat(3KSTAT)>,
  L<mbmon(1)>,
 +L<pcre(3)>,
  L<psql(1)>,
  L<rrdtool(1)>,
  L<sensors(1)>