Merge branch 'collectd-4.8' into collectd-4.9
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 15 Dec 2009 12:11:51 +0000 (13:11 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 15 Dec 2009 12:11:51 +0000 (13:11 +0100)
1  2 
ChangeLog
configure.in
src/memory.c

diff --combined ChangeLog
+++ b/ChangeLog
@@@ -1,42 -1,3 +1,42 @@@
 +2009-12-21, Version 4.9.0
 +      * contextswitch plugin: The new ContextSwitch plugin gathers the
 +        number of context switches done by the CPU. Thanks to Patrik
 +        Weiskircher for the patch.
 +      * cpu plugin: Support for SMP (multiple processors) under FreeBSD has
 +        been added. Thanks to Doug MacEachern for the patch.
 +      * curl plugin: The “MeasureResponseTime” option has been added. Thanks
 +        to Aman Gupta for the patch.
 +      * df plugin: Collecting the inode count and reserved space has been
 +        added. Thanks to Patrik Weiskircher for the patch.
 +      * exec plugin: The environment variables “COLLECTD_INTERVAL” and
 +        “COLLECTD_HOSTNAME” are now set before executing the application.
 +      * Monitorus plugin: This Perl-based plugin to query statistics from
 +        mon.itor.us has been added. Thanks to Jeff Green for the patch.
 +      * netapp plugin: New plugin to collect statistics from NetApp filers.
 +        Thanks to Sven Trenkel of the noris network AG for the patch.
 +      * network plugin: Statistics collection about the plugin itself has
 +        been implemented.
 +      * openvpn plugin: Add support for more versions of the “status file”.
 +        Thanks to Marco Chiappero for the patch.
 +      * OpenVZ plugin: This Perl-based plugin to gather OpenVZ statistics
 +        has been added. Thanks to Jonathan Kolb for the patch.
 +      * ping plugin: The config options "SourceAddress" and "Device"
 +        have been added. Thanks to Sebastian Harl for the patch.
 +      * processes plugin: Collection of IO-metrics has been added. Thanks to
 +        Andrés J. Díaz for the patch.
 +      * python plugin: The new Python plugin integrates a Python interpreter
 +        into collectd and allows to execute plugins written in the scripting
 +        language. Thanks to Sven Trenkel for his work.
 +      * routeros plugin: The new RouterOS plugin queries interface and
 +        wireless registration statistics from RouterOS.
 +      * Various plugins: AIX support has been added to the cpu, disk,
 +        interface, load, memory, processes, and swap plugins. Thanks to
 +        Manuel Sanmartin for his patches.
 +      * hashed match: This match for simple load balancing and redundant
 +        storage has been added.
 +      * scale target: This target to scale (multiply) values by an arbitrary
 +        value has been added.
 +
  2009-10-04, Version 4.8.1
        * Build system: Issues when building the iptables plugin have been
          fixed.
@@@ -53,7 -14,7 +53,7 @@@
          been added. “DERIVE” can be used for counters that are reset
          occasionally. Thanks to Mariusz Gronczewski for implementing this.
        * thresholds: The advanced threshold options “Percentage”, “Hits”, and
-         “Hysteresis” have been added. Thanks to Andrés J. Díaz for hit
+         “Hysteresis” have been added. Thanks to Andrés J. Díaz for his
          patches.
        * curl_json plugin: The new cURL-JSON plugin reads JSON files using
          the cURL library and parses the contents according to user
diff --combined configure.in
@@@ -9,7 -9,6 +9,7 @@@ m4_ifdef([LT_PACKAGE_VERSION]
         LT_CONFIG_LTDL_DIR([libltdl])
         LT_INIT([dlopen])
         LTDL_INIT([convenience])
 +       AC_DEFINE(LIBTOOL_VERSION, 2, [Define to used libtool version.])
        ]
  ,
        # libtool <= 1.5
@@@ -19,7 -18,6 +19,7 @@@
         AC_SUBST(LIBLTDL)
         AC_LIBTOOL_DLOPEN
         AC_CONFIG_SUBDIRS(libltdl)
 +       AC_DEFINE(LIBTOOL_VERSION, 1, [Define to used libtool version.])
        ]
  )
  
@@@ -63,10 -61,6 +63,10 @@@ case $host_os i
        *openbsd*)
        ac_system="OpenBSD"
        ;;
 +      *aix*)
 +      AC_DEFINE([KERNEL_AIX], 1, [True if program is to be compiled for a AIX kernel])
 +      ac_system="AIX"
 +      ;;
        *)
        ac_system="unknown"
  esac
@@@ -268,22 -262,6 +268,22 @@@ AC_CHECK_HEADERS(sys/sysctl.h, [], []
  #endif
  ])
  
 +AC_MSG_CHECKING([for sysctl kern.cp_times])
 +if test -x /sbin/sysctl
 +then
 +      /sbin/sysctl kern.cp_times 2>/dev/null
 +      if test $? -eq 0
 +      then
 +              AC_MSG_RESULT([yes])
 +              AC_DEFINE(HAVE_SYSCTL_KERN_CP_TIMES, 1,
 +              [Define if sysctl supports kern.cp_times])
 +      else
 +              AC_MSG_RESULT([no])
 +      fi
 +else
 +      AC_MSG_RESULT([no])
 +fi
 +
  # For hddtemp module
  AC_CHECK_HEADERS(linux/major.h libgen.h)
  
@@@ -633,8 -611,6 +633,8 @@@ static float foo = NAN
    fi
  fi
  if test "x$nan_type" = "xnone"; then
 +  SAVE_LDFLAGS=$LDFLAGS
 +  LDFLAGS="$LDFLAGS -lm"
    AC_CACHE_CHECK([whether NAN can be defined by 0/0],
      [c_cv_have_nan_zero],
      AC_RUN_IFELSE(
@@@ -661,7 -637,6 +661,7 @@@ static float foo = NAN
        [c_cv_have_nan_zero="no"]
      )
    )
 +  LDFLAGS=$SAVE_LDFLAGS
    if test "x$c_cv_have_nan_zero" = "xyes"
    then
      nan_type="zero"
  m4_divert_once([HELP_WITH], [
  collectd additional packages:])
  
 +AM_CONDITIONAL([BUILD_AIX],[test "x$x$ac_system" = "xAIX"]) 
 +
 +if test "x$ac_system" = "xAIX"
 +then
 +      with_perfstat="yes"
 +      with_procinfo="yes"
 +else
 +      with_perfstat="no (AIX only)"
 +      with_procinfo="no (AIX only)"
 +fi
 +
 +if test "x$with_perfstat" = "xyes"
 +then
 +      AC_CHECK_LIB(perfstat, perfstat_reset, [with_perfstat="yes"], [with_perfstat="no (perfstat not found)"], [])
 +#     AC_CHECK_HEADERS(sys/protosw.h libperfstat.h,, [with_perfstat="no (perfstat not found)"])
 +fi
 +if test "x$with_perfstat" = "xyes"
 +then
 +       AC_DEFINE(HAVE_PERFSTAT, 1, [Define to 1 if you have the 'perfstat' library (-lperfstat)])
 +fi
 +AM_CONDITIONAL(BUILD_WITH_PERFSTAT, test "x$with_perfstat" = "xyes")
 +
 +# Processes plugin under AIX.
 +if test "x$with_procinfo" = "xyes"
 +then
 +      AC_CHECK_HEADERS(procinfo.h,, [with_procinfo="no (procinfo.h not found)"])
 +fi
 +if test "x$with_procinfo" = "xyes"
 +then
 +       AC_DEFINE(HAVE_PROCINFO_H, 1, [Define to 1 if you have the procinfo.h])
 +fi
 +
  if test "x$ac_system" = "xSolaris"
  then
        with_kstat="yes"
  AM_CONDITIONAL(BUILD_WITH_LIBNETLINK, test "x$with_libnetlink" = "xyes")
  # }}}
  
 +# --with-libnetapp {{{
 +AC_ARG_VAR([LIBNETAPP_CPPFLAGS], [C preprocessor flags required to build with libnetapp])
 +AC_ARG_VAR([LIBNETAPP_LDFLAGS],  [Linker flags required to build with libnetapp])
 +AC_ARG_VAR([LIBNETAPP_LIBS],     [Other libraries required to link against libnetapp])
 +LIBNETAPP_CPPFLAGS="$LIBNETAPP_CPPFLAGS"
 +LIBNETAPP_LDFLAGS="$LIBNETAPP_LDFLAGS"
 +LIBNETAPP_LIBS="$LIBNETAPP_LIBS"
 +AC_ARG_WITH(libnetapp, [AS_HELP_STRING([--with-libnetapp@<:@=PREFIX@:>@], [Path to libnetapp.])],
 +[
 + if test -d "$withval"
 + then
 +       LIBNETAPP_CPPFLAGS="$LIBNETAPP_CPPFLAGS -I$withval/include"
 +       LIBNETAPP_LDFLAGS="$LIBNETAPP_LDFLAGS -L$withval/lib"
 +       with_libnetapp="yes"
 + else
 +       with_libnetapp="$withval"
 + fi
 +],
 +[
 + with_libnetapp="yes"
 +])
 +
 +SAVE_CPPFLAGS="$CPPFLAGS"
 +SAVE_LDFLAGS="$LDFLAGS"
 +CPPFLAGS="$CPPFLAGS $LIBNETAPP_CPPFLAGS"
 +LDFLAGS="$LDFLAGS $LIBNETAPP_LDFLAGS"
 +
 +if test "x$with_libnetapp" = "xyes"
 +then
 +      if test "x$LIBNETAPP_CPPFLAGS" != "x"
 +      then
 +              AC_MSG_NOTICE([netapp CPPFLAGS: $LIBNETAPP_CPPFLAGS])
 +      fi
 +      AC_CHECK_HEADERS(netapp_api.h,
 +              [with_libnetapp="yes"],
 +              [with_libnetapp="no (netapp_api.h not found)"])
 +fi
 +
 +if test "x$with_libnetapp" = "xyes"
 +then
 +      if test "x$LIBNETAPP_LDFLAGS" != "x"
 +      then
 +              AC_MSG_NOTICE([netapp LDFLAGS: $LIBNETAPP_LDFLAGS])
 +      fi
 +
 +      if test "x$LIBNETAPP_LIBS" = "x"
 +      then
 +              LIBNETAPP_LIBS="-lpthread -lxml -ladt -lssl -lm -lcrypto -lz"
 +      fi
 +      AC_MSG_NOTICE([netapp LIBS: $LIBNETAPP_LIBS])
 +
 +      AC_CHECK_LIB(netapp, na_server_invoke_elem,
 +              [with_libnetapp="yes"],
 +              [with_libnetapp="no (symbol na_server_invoke_elem not found)"],
 +              [$LIBNETAPP_LIBS])
 +      LIBNETAPP_LIBS="-lnetapp $LIBNETAPP_LIBS"
 +fi
 +
 +CPPFLAGS="$SAVE_CPPFLAGS"
 +LDFLAGS="$SAVE_LDFLAGS"
 +
 +if test "x$with_libnetapp" = "xyes"
 +then
 +      AC_DEFINE(HAVE_LIBNETAPP, 1, [Define to 1 if you have the netapp library (-lnetapp).])
 +fi
 +
 +AC_SUBST(LIBNETAPP_CPPFLAGS)
 +AC_SUBST(LIBNETAPP_LDFLAGS)
 +AC_SUBST(LIBNETAPP_LIBS)
 +AM_CONDITIONAL(BUILD_WITH_LIBNETAPP, test "x$with_libnetapp" = "xyes")
 +# }}}
 +
  # --with-libnetsnmp {{{
  with_snmp_config="net-snmp-config"
  with_snmp_cflags=""
@@@ -2694,184 -2565,6 +2694,184 @@@ AC_DEFINE_UNQUOTED(HAVE_LIBPTHREAD, [$c
  AM_CONDITIONAL(BUILD_WITH_LIBPTHREAD, test "x$with_libpthread" = "xyes")
  # }}}
  
 +# --with-python {{{
 +with_python_prog=""
 +with_python_path="$PATH"
 +AC_ARG_WITH(python, [AS_HELP_STRING([--with-python@<:@=PREFIX@:>@], [Path to the python interpreter.])],
 +[
 + if test "x$withval" = "xyes" || test "x$withval" = "xno"
 + then
 +       with_python="$withval"
 + else if test -x "$withval"
 + then
 +       with_python_prog="$withval"
 +       with_python_path="`dirname \"$withval\"`$PATH_SEPARATOR$with_python_path"
 +       with_python="yes"
 + else if test -d "$withval"
 + then
 +       with_python_path="$withval$PATH_SEPARATOR$with_python_path"
 +       with_python="yes"
 + else
 +       AC_MSG_WARN([Argument not recognized: $withval])
 + fi; fi; fi
 +], [with_python="yes"])
 +
 +SAVE_PATH="$PATH"
 +SAVE_CPPFLAGS="$CPPFLAGS"
 +SAVE_LDFLAGS="$LDFLAGS"
 +SAVE_LIBS="$LIBS"
 +
 +PATH="$with_python_path"
 +
 +if test "x$with_python" = "xyes" && test "x$with_python_prog" = "x"
 +then
 +      AC_MSG_CHECKING([for python])
 +      with_python_prog="`which python 2>/dev/null`"
 +      if test "x$with_python_prog" = "x"
 +      then
 +              AC_MSG_RESULT([not found])
 +              with_python="no (interpreter not found)"
 +      else
 +              AC_MSG_RESULT([$with_python_prog])
 +      fi
 +fi
 +
 +if test "x$with_python" = "xyes"
 +then
 +      AC_MSG_CHECKING([for Python CPPFLAGS])
 +      python_include_path=`echo "import distutils.sysconfig;print distutils.sysconfig.get_python_inc()" | "$with_python_prog" 2>&1`
 +      python_config_status=$?
 +
 +      if test "$python_config_status" -ne 0 || test "x$python_include_path" = "x"
 +      then
 +              AC_MSG_RESULT([failed with status $python_config_status (output: $python_include_path)])
 +              with_python="no"
 +      else
 +              AC_MSG_RESULT([$python_include_path])
 +      fi
 +fi
 +
 +if test "x$with_python" = "xyes"
 +then
 +      CPPFLAGS="-I$python_include_path $CPPFLAGS"
 +      AC_CHECK_HEADERS(Python.h,
 +                       [with_python="yes"],
 +                       [with_python="no ('Python.h' not found)"])
 +fi
 +
 +if test "x$with_python" = "xyes"
 +then
 +      AC_MSG_CHECKING([for Python LDFLAGS])
 +      python_library_path=`echo "import distutils.sysconfig;print distutils.sysconfig.get_config_vars(\"LIBDIR\").__getitem__(0)" | "$with_python_prog" 2>&1`
 +      python_config_status=$?
 +
 +      if test "$python_config_status" -ne 0 || test "x$python_library_path" = "x"
 +      then
 +              AC_MSG_RESULT([failed with status $python_config_status (output: $python_library_path)])
 +              with_python="no"
 +      else
 +              AC_MSG_RESULT([$python_library_path])
 +      fi
 +fi
 +
 +if test "x$with_python" = "xyes"
 +then
 +      AC_MSG_CHECKING([for Python LIBS])
 +      python_library_flags=`echo "import distutils.sysconfig;print distutils.sysconfig.get_config_vars(\"BLDLIBRARY\").__getitem__(0)" | "$with_python_prog" 2>&1`
 +      python_config_status=$?
 +
 +      if test "$python_config_status" -ne 0 || test "x$python_library_flags" = "x"
 +      then
 +              AC_MSG_RESULT([failed with status $python_config_status (output: $python_library_flags)])
 +              with_python="no"
 +      else
 +              AC_MSG_RESULT([$python_library_flags])
 +      fi
 +fi
 +
 +if test "x$with_python" = "xyes"
 +then
 +      LDFLAGS="-L$python_library_path $LDFLAGS"
 +      LIBS="$python_library_flags $LIBS"
 +
 +      AC_CHECK_FUNC(PyObject_CallFunction,
 +                    [with_python="yes"],
 +                    [with_python="no (Symbol 'PyObject_CallFunction' not found)"])
 +fi
 +
 +PATH="$SAVE_PATH"
 +CPPFLAGS="$SAVE_CPPFLAGS"
 +LDFLAGS="$SAVE_LDFLAGS"
 +LIBS="$SAVE_LIBS"
 +
 +if test "x$with_python" = "xyes"
 +then
 +      BUILD_WITH_PYTHON_CPPFLAGS="-I$python_include_path"
 +      BUILD_WITH_PYTHON_LDFLAGS="-L$python_library_path"
 +      BUILD_WITH_PYTHON_LIBS="$python_library_flags"
 +      AC_SUBST(BUILD_WITH_PYTHON_CPPFLAGS)
 +      AC_SUBST(BUILD_WITH_PYTHON_LDFLAGS)
 +      AC_SUBST(BUILD_WITH_PYTHON_LIBS)
 +fi
 +# }}} --with-python
 +
 +# --with-librouteros {{{
 +AC_ARG_WITH(librouteros, [AS_HELP_STRING([--with-librouteros@<:@=PREFIX@:>@], [Path to librouteros.])],
 +[
 + if test "x$withval" = "xyes"
 + then
 +       with_librouteros="yes"
 + else if test "x$withval" = "xno"
 + then
 +       with_librouteros="no"
 + else
 +       with_librouteros="yes"
 +       LIBROUTEROS_CPPFLAGS="$LIBROUTEROS_CPPFLAGS -I$withval/include"
 +       LIBROUTEROS_LDFLAGS="$LIBROUTEROS_LDFLAGS -L$withval/lib"
 + fi; fi
 +],
 +[with_librouteros="yes"])
 +
 +SAVE_CPPFLAGS="$CPPFLAGS"
 +SAVE_LDFLAGS="$LDFLAGS"
 +
 +CPPFLAGS="$CPPFLAGS $LIBROUTEROS_CPPFLAGS"
 +LDFLAGS="$LDFLAGS $LIBROUTEROS_LDFLAGS"
 +
 +if test "x$with_librouteros" = "xyes"
 +then
 +      if test "x$LIBROUTEROS_CPPFLAGS" != "x"
 +      then
 +              AC_MSG_NOTICE([librouteros CPPFLAGS: $LIBROUTEROS_CPPFLAGS])
 +      fi
 +      AC_CHECK_HEADERS(routeros_api.h,
 +      [with_librouteros="yes"],
 +      [with_librouteros="no ('routeros_api.h' not found)"])
 +fi
 +if test "x$with_librouteros" = "xyes"
 +then
 +      if test "x$LIBROUTEROS_LDFLAGS" != "x"
 +      then
 +              AC_MSG_NOTICE([librouteros LDFLAGS: $LIBROUTEROS_LDFLAGS])
 +      fi
 +      AC_CHECK_LIB(routeros, ros_interface,
 +      [with_librouteros="yes"],
 +      [with_librouteros="no (symbol 'ros_interface' not found)"])
 +fi
 +
 +CPPFLAGS="$SAVE_CPPFLAGS"
 +LDFLAGS="$SAVE_LDFLAGS"
 +
 +if test "x$with_librouteros" = "xyes"
 +then
 +      BUILD_WITH_LIBROUTEROS_CPPFLAGS="$LIBROUTEROS_CPPFLAGS"
 +      BUILD_WITH_LIBROUTEROS_LDFLAGS="$LIBROUTEROS_LDFLAGS"
 +      AC_SUBST(BUILD_WITH_LIBROUTEROS_CPPFLAGS)
 +      AC_SUBST(BUILD_WITH_LIBROUTEROS_LDFLAGS)
 +fi
 +AM_CONDITIONAL(BUILD_WITH_LIBROUTEROS, test "x$with_librouteros" = "xyes")
 +# }}}
 +
  # --with-librrd {{{
  # AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given])
  librrd_cflags=""
@@@ -3219,7 -2912,7 +3219,7 @@@ AC_ARG_WITH(libupsclient, [AS_HELP_STRI
                        with_libupsclient="use_libupsclient_config"
                else if test -x "$withval/bin/libupsclient-config"
                then
-                       with_libupsclient_config="$withval/bin/net-snmp-config"
+                       with_libupsclient_config="$withval/bin/libupsclient-config"
                        with_libupsclient="use_libupsclient_config"
                else
                        AC_MSG_NOTICE([Not checking for libupsclient: Manually configured])
@@@ -3786,7 -3479,6 +3786,7 @@@ plugin_ascent="no
  plugin_battery="no"
  plugin_bind="no"
  plugin_conntrack="no"
 +plugin_contextswitch="no"
  plugin_cpu="no"
  plugin_cpufreq="no"
  plugin_curl_json="no"
@@@ -3824,7 -3516,6 +3824,7 @@@ if test "x$ac_system" = "xLinux
  then
        plugin_battery="yes"
        plugin_conntrack="yes"
 +      plugin_contextswitch="yes"
        plugin_cpu="yes"
        plugin_cpufreq="yes"
        plugin_disk="yes"
        plugin_disk="yes"
  fi
  
 +# AIX
 +if test "x$with_perfstat" = "xyes"
 +then
 +      plugin_cpu="yes"
 +      plugin_disk="yes"
 +      plugin_memory="yes"
 +      plugin_swap="yes"
 +      plugin_interface="yes"
 +      plugin_load="yes"
 +fi
 +
 +if test "x$with_procinfo" = "xyes"
 +then
 +      plugin_processes="yes"
 +fi
 +
  # Solaris
  if test "x$with_kstat" = "xyes"
  then
@@@ -4076,7 -3751,6 +4076,7 @@@ AC_PLUGIN([ascent],      [$plugin_ascen
  AC_PLUGIN([battery],     [$plugin_battery],    [Battery statistics])
  AC_PLUGIN([bind],        [$plugin_bind],       [ISC Bind nameserver statistics])
  AC_PLUGIN([conntrack],   [$plugin_conntrack],  [nf_conntrack statistics])
 +AC_PLUGIN([contextswitch], [$plugin_contextswitch], [context switch statistics])
  AC_PLUGIN([cpufreq],     [$plugin_cpufreq],    [CPU frequency statistics])
  AC_PLUGIN([cpu],         [$plugin_cpu],        [CPU usage statistics])
  AC_PLUGIN([csv],         [yes],                [CSV output plugin])
@@@ -4104,7 -3778,6 +4104,7 @@@ AC_PLUGIN([load],        [$plugin_load]
  AC_PLUGIN([logfile],     [yes],                [File logging plugin])
  AC_PLUGIN([madwifi],     [$have_linux_wireless_h], [Madwifi wireless statistics])
  AC_PLUGIN([match_empty_counter], [yes],        [The empty counter match])
 +AC_PLUGIN([match_hashed], [yes],               [The hashed match])
  AC_PLUGIN([match_regex], [yes],                [The regex match])
  AC_PLUGIN([match_timediff], [yes],             [The timediff match])
  AC_PLUGIN([match_value], [yes],                [The value match])
@@@ -4114,7 -3787,6 +4114,7 @@@ AC_PLUGIN([memcached],   [yes]
  AC_PLUGIN([memory],      [$plugin_memory],     [Memory usage])
  AC_PLUGIN([multimeter],  [$plugin_multimeter], [Read multimeter values])
  AC_PLUGIN([mysql],       [$with_libmysql],     [MySQL statistics])
 +AC_PLUGIN([netapp],      [$with_libnetapp],    [NetApp plugin])
  AC_PLUGIN([netlink],     [$with_libnetlink],   [Enhanced Linux network statistics])
  AC_PLUGIN([network],     [yes],                [Network communication plugin])
  AC_PLUGIN([nfs],         [$plugin_nfs],        [NFS statistics])
@@@ -4133,8 -3805,6 +4133,8 @@@ AC_PLUGIN([postgresql],  [$with_libpq]
  AC_PLUGIN([powerdns],    [yes],                [PowerDNS statistics])
  AC_PLUGIN([processes],   [$plugin_processes],  [Process statistics])
  AC_PLUGIN([protocols],   [$plugin_protocols],  [Protocol (IP, TCP, ...) statistics])
 +AC_PLUGIN([python],      [$with_python],       [Embed a Python interpreter])
 +AC_PLUGIN([routeros],    [$with_librouteros],  [RouterOS plugin])
  AC_PLUGIN([rrdcached],   [$librrd_rrdc_update], [RRDTool output plugin])
  AC_PLUGIN([rrdtool],     [$with_librrd],       [RRDTool output plugin])
  AC_PLUGIN([sensors],     [$with_libsensors],   [lm_sensors statistics])
@@@ -4147,7 -3817,6 +4147,7 @@@ AC_PLUGIN([tail],        [yes]
  AC_PLUGIN([tape],        [$plugin_tape],       [Tape drive statistics])
  AC_PLUGIN([target_notification], [yes],        [The notification target])
  AC_PLUGIN([target_replace], [yes],             [The replace target])
 +AC_PLUGIN([target_scale],[yes],                [The scale target])
  AC_PLUGIN([target_set],  [yes],                [The set target])
  AC_PLUGIN([tcpconns],    [$plugin_tcpconns],   [TCP connection statistics])
  AC_PLUGIN([teamspeak2],  [yes],                [TeamSpeak2 server statistics])
@@@ -4346,7 -4015,6 +4346,7 @@@ Configuration
      libkvm  . . . . . . . $with_libkvm
      libmemcached  . . . . $with_libmemcached
      libmysql  . . . . . . $with_libmysql
 +    libnetapp . . . . . . $with_libnetapp
      libnetlink  . . . . . $with_libnetlink
      libnetsnmp  . . . . . $with_libnetsnmp
      libnotify . . . . . . $with_libnotify
      libopenipmi . . . . . $with_libopenipmipthread
      liboping  . . . . . . $with_liboping
      libpcap . . . . . . . $with_libpcap
 +    libperfstat . . . . . $with_perfstat
      libperl . . . . . . . $with_libperl
      libpq . . . . . . . . $with_libpq
      libpthread  . . . . . $with_libpthread
 +    librouteros . . . . . $with_librouteros
      librrd  . . . . . . . $with_librrd
      libsensors  . . . . . $with_libsensors
      libstatgrab . . . . . $with_libstatgrab
      libxmms . . . . . . . $with_libxmms
      libyajl . . . . . . . $with_libyajl
      oracle  . . . . . . . $with_oracle
 +    python  . . . . . . . $with_python
  
    Features:
      daemon mode . . . . . $enable_daemon
      battery . . . . . . . $enable_battery
      bind  . . . . . . . . $enable_bind
      conntrack . . . . . . $enable_conntrack
 +    contextswitch . . . . $enable_contextswitch
      cpu . . . . . . . . . $enable_cpu
      cpufreq . . . . . . . $enable_cpufreq
      csv . . . . . . . . . $enable_csv
      logfile . . . . . . . $enable_logfile
      madwifi . . . . . . . $enable_madwifi
      match_empty_counter . $enable_match_empty_counter
 +    match_hashed  . . . . $enable_match_hashed
      match_regex . . . . . $enable_match_regex
      match_timediff  . . . $enable_match_timediff
      match_value . . . . . $enable_match_value
      memory  . . . . . . . $enable_memory
      multimeter  . . . . . $enable_multimeter
      mysql . . . . . . . . $enable_mysql
 +    netapp  . . . . . . . $enable_netapp
      netlink . . . . . . . $enable_netlink
      network . . . . . . . $enable_network
      nfs . . . . . . . . . $enable_nfs
      powerdns  . . . . . . $enable_powerdns
      processes . . . . . . $enable_processes
      protocols . . . . . . $enable_protocols
 +    python  . . . . . . . $enable_python
 +    routeros  . . . . . . $enable_routeros
      rrdcached . . . . . . $enable_rrdcached
      rrdtool . . . . . . . $enable_rrdtool
      sensors . . . . . . . $enable_sensors
      tape  . . . . . . . . $enable_tape
      target_notification . $enable_target_notification
      target_replace  . . . $enable_target_replace
 +    target_scale  . . . . $enable_target_scale
      target_set  . . . . . $enable_target_set
      tcpconns  . . . . . . $enable_tcpconns
      teamspeak2  . . . . . $enable_teamspeak2
diff --combined src/memory.c
@@@ -2,7 -2,6 +2,7 @@@
   * collectd - src/memory.c
   * Copyright (C) 2005-2008  Florian octo Forster
   * Copyright (C) 2009       Simon Kuhnle
 + * Copyright (C) 2009       Manuel Sanmartin
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the
@@@ -20,7 -19,6 +20,7 @@@
   * Authors:
   *   Florian octo Forster <octo at verplant.org>
   *   Simon Kuhnle <simon at blarzwurst.de>
 + *   Manuel Sanmartin
   **/
  
  #include "collectd.h"
  # include <statgrab.h>
  #endif
  
 +#if HAVE_PERFSTAT
 +# include <sys/protosw.h>
 +# include <libperfstat.h>
 +#endif /* HAVE_PERFSTAT */
 +
  /* vm_statistics_data_t */
  #if HAVE_HOST_STATISTICS
  static mach_port_t port_host;
@@@ -82,10 -75,7 +82,10 @@@ static int pagesize
  #elif HAVE_LIBSTATGRAB
  /* no global variables */
  /* endif HAVE_LIBSTATGRAB */
 -
 +#elif HAVE_PERFSTAT
 +static int pagesize;
 +static perfstat_memory_total_t pmemory;
 +/* endif HAVE_PERFSTAT */
  #else
  # error "No applicable input method."
  #endif
@@@ -126,11 -116,8 +126,11 @@@ static int memory_init (void
  
  #elif HAVE_LIBSTATGRAB
  /* no init stuff */
 -#endif /* HAVE_LIBSTATGRAB */
 +/* #endif HAVE_LIBSTATGRAB */
  
 +#elif HAVE_PERFSTAT
 +      pagesize = getpagesize ();
 +#endif /* HAVE_PERFSTAT */
        return (0);
  } /* int memory_init */
  
@@@ -158,10 -145,10 +158,10 @@@ static int memory_read (void
        vm_statistics_data_t   vm_data;
        mach_msg_type_number_t vm_data_len;
  
-       long long wired;
-       long long active;
-       long long inactive;
-       long long free;
+       gauge_t wired;
+       gauge_t active;
+       gauge_t inactive;
+       gauge_t free;
  
        if (!port_host || !pagesize)
                return (-1);
         *   This memory is not being used.
         */
  
-       wired    = vm_data.wire_count     * pagesize;
-       active   = vm_data.active_count   * pagesize;
-       inactive = vm_data.inactive_count * pagesize;
-       free     = vm_data.free_count     * pagesize;
+       wired    = (gauge_t) (((uint64_t) vm_data.wire_count)     * ((uint64_t) pagesize));
+       active   = (gauge_t) (((uint64_t) vm_data.active_count)   * ((uint64_t) pagesize));
+       inactive = (gauge_t) (((uint64_t) vm_data.inactive_count) * ((uint64_t) pagesize));
+       free     = (gauge_t) (((uint64_t) vm_data.free_count)     * ((uint64_t) pagesize));
  
        memory_submit ("wired",    wired);
        memory_submit ("active",   active);
  #elif KERNEL_LINUX
        FILE *fh;
        char buffer[1024];
 -      
 +
        char *fields[8];
        int numfields;
  
                memory_submit ("cached", ios->cache);
                memory_submit ("free",   ios->free);
        }
 -#endif /* HAVE_LIBSTATGRAB */
 +/* #endif HAVE_LIBSTATGRAB */
 +
 +#elif HAVE_PERFSTAT
 +      if (perfstat_memory_total(NULL, &pmemory, sizeof(perfstat_memory_total_t), 1) < 0)
 +      {
 +              char errbuf[1024];
 +              WARNING ("memory plugin: perfstat_memory_total failed: %s",
 +                      sstrerror (errno, errbuf, sizeof (errbuf)));
 +              return (-1);
 +      }
 +      memory_submit ("used",   pmemory.real_inuse * pagesize);
 +      memory_submit ("free",   pmemory.real_free * pagesize);
 +      memory_submit ("cached", pmemory.numperm * pagesize);
 +      memory_submit ("system", pmemory.real_system * pagesize);
 +      memory_submit ("user",   pmemory.real_process * pagesize);
 +#endif /* HAVE_PERFSTAT */
  
        return (0);
  }