commit:     230977ee8c2ce01b6b5d1e8c5900f6c4e496c550
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  2 18:40:08 2018 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Thu Aug  2 18:40:33 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=230977ee

app-metrics/collectd: drop old

Package-Manager: Portage-2.3.44, Repoman-2.3.10

 app-metrics/collectd/Manifest                      |    1 -
 app-metrics/collectd/collectd-5.7.2-r3.ebuild      |  548 -----------
 .../collectd/files/collectd-5.6.0-gentoo.patch     |  153 ---
 .../files/collectd-5.7.2-CVE-2017-16820.patch      |   39 -
 .../collectd/files/collectd-5.7.2-issue-2443.patch |  160 ---
 .../files/collectd-5.7.2-varnish-5.2+.patch        | 1018 --------------------
 6 files changed, 1919 deletions(-)

diff --git a/app-metrics/collectd/Manifest b/app-metrics/collectd/Manifest
index 9fb11846c23..36255f3caad 100644
--- a/app-metrics/collectd/Manifest
+++ b/app-metrics/collectd/Manifest
@@ -1,2 +1 @@
-DIST collectd-5.7.2.tar.bz2 1798777 BLAKE2B 
4af359a773457bb9c05b6a301d7728eea7598c200f7ca534875b07d1d011b280ab138f680d9607723f14523dd71dcbec3a41e0d8d183848c8ef809cef86c2b8f
 SHA512 
8844b67159f8da2203b5ac57ef19fce0a01050a016174d196b48b5fb24925ad2935af9bdd9af06097ff663499abc496cdcc2d9e9a10f403f8d707c465c1a88f3
 DIST collectd-5.8.0.tar.bz2 1686017 BLAKE2B 
26d995cdb9c25869bf96a056e6ba879de9f009fd4bbf1364a7dedba93b822e57c4b606ca8c84da68cc29db8e77333047695e85d7eb101080de9cee783240f5ea
 SHA512 
1b3d0cc44e2ca54e13eebf292074f1efa8b33d6800d04405e0eaaa2dd1cb2416c6eae580729fb5aead23a5039f41ffe8a9989a907a8c18be8f867f1099fc0008

diff --git a/app-metrics/collectd/collectd-5.7.2-r3.ebuild 
b/app-metrics/collectd/collectd-5.7.2-r3.ebuild
deleted file mode 100644
index 32854c2b44a..00000000000
--- a/app-metrics/collectd/collectd-5.7.2-r3.ebuild
+++ /dev/null
@@ -1,548 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
-JAVA_PKG_OPT_USE="collectd_plugins_java"
-
-inherit autotools fcaps flag-o-matic java-pkg-opt-2 linux-info multilib 
perl-functions python-single-r1 systemd tmpfiles user
-
-DESCRIPTION="Collects system statistics and provides mechanisms to store the 
values"
-
-HOMEPAGE="https://collectd.org/";
-SRC_URI="${HOMEPAGE%/}/files/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="alpha amd64 arm x86"
-IUSE="contrib debug java kernel_Darwin kernel_FreeBSD kernel_linux perl 
selinux static-libs udev xfs"
-
-# The plugin lists have to follow here since they extend IUSE
-
-# Plugins that don't build (e.g. dependencies not in Gentoo)
-# apple_sensors: Requires libIOKit
-# aquaero:       Requires aerotools-ng/libaquaero5
-# barometer:     Requires libi2c (i2c_smbus_read_i2c_block_data)
-# dpdkstat:      Requires dpdk
-# grpc:          Requires libgrpc
-# intel_rdt      Requires libpqos from intel-cmt-cat project
-# lpar:          Requires libperfstat (AIX only)
-# mic:           Requires Intel Many Integrated Core Architecture API
-#                (part of Intel's  Xeon Phi software)
-# netapp:        Requires libnetapp 
(http://communities.netapp.com/docs/DOC-1110)
-# pf:            Requires BSD packet filter
-# pinba:         Requires MySQL Pinba engine (http://pinba.org/)
-# tape:          Requires libkstat (Solaris only)
-# write_mongodb: https://github.com/collectd/collectd/issues/492
-# write_riemann: Requires riemann-c-client
-# xmms:          Requires libxmms (v1)
-# zone:          Solaris only...
-COLLECTD_IMPOSSIBLE_PLUGINS="apple_sensors aquaero barometer dpdkstat grpc
-       intel_rdt lpar mic netapp pf pinba tape write_mongodb
-       write_riemann xmms zone"
-
-# Plugins that have been (compile) tested and can be enabled via 
COLLECTD_PLUGINS
-COLLECTD_TESTED_PLUGINS="aggregation amqp apache apcups ascent battery bind
-       ceph cgroups chrony conntrack contextswitch cpu cpufreq cpusleep
-       csv curl curl_json curl_xml dbi df disk dns drbd email
-       entropy ethstat exec fhcount filecount fscache gmond gps hddtemp
-       hugepages interface ipc ipmi iptables ipvs irq java lua
-       load logfile log_logstash lvm madwifi match_empty_counter
-       match_hashed match_regex match_timediff match_value mbmon md
-       memcachec memcached memory modbus mqtt multimeter mysql netlink
-       network network nfs nginx notify_desktop notify_email notify_nagios
-       ntpd numa nut olsrd onewire openldap openvpn oracle perl ping
-       postgresql powerdns processes protocols python python redis
-       routeros rrdcached rrdtool sensors serial sigrok smart snmp statsd
-       swap syslog table tail tail_csv target_notification target_replace
-       target_scale target_set tcpconns teamspeak2 ted thermal threshold
-       tokyotyrant turbostat unixsock uptime users uuid varnish virt
-       vmem vserver wireless write_graphite write_http write_kafka
-       write_log write_prometheus write_redis write_sensu write_tsdb
-       xencpu zfs_arc zookeeper"
-
-COLLECTD_DISABLED_PLUGINS="${COLLECTD_IMPOSSIBLE_PLUGINS}"
-
-COLLECTD_ALL_PLUGINS=${COLLECTD_TESTED_PLUGINS}
-
-for plugin in ${COLLECTD_ALL_PLUGINS}; do
-       IUSE="${IUSE} collectd_plugins_${plugin}"
-done
-unset plugin
-
-# Now come the dependencies.
-
-COMMON_DEPEND="
-       dev-libs/libgcrypt:=
-       dev-libs/libltdl:0=
-       perl?                                   ( dev-lang/perl:=[ithreads] )
-       udev?                                   ( virtual/udev )
-       xfs?                                    ( sys-fs/xfsprogs )
-       collectd_plugins_amqp?                  ( net-libs/rabbitmq-c )
-       collectd_plugins_apache?                ( net-misc/curl:0= )
-       collectd_plugins_ascent?                ( net-misc/curl:0= 
dev-libs/libxml2:2= )
-       collectd_plugins_bind?                  ( net-misc/curl:0= 
dev-libs/libxml2:2= )
-       collectd_plugins_ceph?                  ( dev-libs/yajl:= )
-       collectd_plugins_curl?                  ( net-misc/curl:0= )
-       collectd_plugins_curl_json?             ( net-misc/curl:0= 
dev-libs/yajl:= )
-       collectd_plugins_curl_xml?              ( net-misc/curl:0= 
dev-libs/libxml2:2= )
-       collectd_plugins_dbi?                   ( dev-db/libdbi )
-       collectd_plugins_dns?                   ( net-libs/libpcap )
-       collectd_plugins_gmond?                 ( sys-cluster/ganglia )
-       collectd_plugins_gps?                   ( sci-geosciences/gpsd:= )
-       collectd_plugins_ipmi?                  ( >=sys-libs/openipmi-2.0.16-r1 
)
-       collectd_plugins_iptables?              ( 
>=net-firewall/iptables-1.4.13:0= )
-       collectd_plugins_log_logstash?          ( dev-libs/yajl:= )
-       collectd_plugins_lua?                   ( dev-lang/lua:0= )
-       collectd_plugins_lvm?                   ( sys-fs/lvm2 )
-       collectd_plugins_memcachec?             ( dev-libs/libmemcached )
-       collectd_plugins_modbus?                ( dev-libs/libmodbus )
-       collectd_plugins_mqtt?                  ( app-misc/mosquitto )
-       collectd_plugins_mysql?                 ( virtual/libmysqlclient:= )
-       collectd_plugins_netlink?               ( net-libs/libmnl )
-       collectd_plugins_nginx?                 ( net-misc/curl:0= )
-       collectd_plugins_notify_desktop?        ( x11-libs/libnotify )
-       collectd_plugins_notify_email?          ( net-libs/libesmtp )
-       collectd_plugins_nut?                   ( >=sys-power/nut-2.7.2-r2 )
-       collectd_plugins_openldap?              ( net-nds/openldap )
-       collectd_plugins_onewire?               ( >=sys-fs/owfs-3.1:= )
-       collectd_plugins_oracle?                ( 
dev-db/oracle-instantclient-basic )
-       collectd_plugins_perl?                  ( dev-lang/perl:=[ithreads] )
-       collectd_plugins_ping?                  ( net-libs/liboping )
-       collectd_plugins_postgresql?            ( dev-db/postgresql:= )
-       collectd_plugins_python?                ( ${PYTHON_DEPS} )
-       collectd_plugins_redis?                 ( dev-libs/hiredis:= )
-       collectd_plugins_routeros?              ( net-libs/librouteros )
-       collectd_plugins_rrdcached?             ( net-analyzer/rrdtool:= )
-       collectd_plugins_rrdtool?               ( net-analyzer/rrdtool:= )
-       collectd_plugins_sensors?               ( sys-apps/lm_sensors )
-       collectd_plugins_sigrok?                ( <sci-libs/libsigrok-0.4:= 
dev-libs/glib:2 )
-       collectd_plugins_smart?                 ( dev-libs/libatasmart )
-       collectd_plugins_snmp?                  ( net-analyzer/net-snmp )
-       collectd_plugins_tokyotyrant?           ( net-misc/tokyotyrant )
-       collectd_plugins_varnish?               ( www-servers/varnish )
-       collectd_plugins_virt?                  ( app-emulation/libvirt:= 
dev-libs/libxml2:2= )
-       collectd_plugins_write_http?            ( net-misc/curl:0= 
dev-libs/yajl:= )
-       collectd_plugins_write_kafka?           ( 
>=dev-libs/librdkafka-0.9.0.99:= dev-libs/yajl:= )
-       collectd_plugins_write_prometheus?      ( 
>=dev-libs/protobuf-c-1.2.1-r1:= net-libs/libmicrohttpd:= )
-       collectd_plugins_write_redis?           ( dev-libs/hiredis:= )
-       collectd_plugins_xencpu?                ( app-emulation/xen-tools:= )
-
-       kernel_FreeBSD? (
-               collectd_plugins_disk?          ( sys-libs/libstatgrab:= )
-               collectd_plugins_interface?     ( sys-libs/libstatgrab:= )
-               collectd_plugins_load?          ( sys-libs/libstatgrab:= )
-               collectd_plugins_memory?        ( sys-libs/libstatgrab:= )
-               collectd_plugins_swap?          ( sys-libs/libstatgrab:= )
-               collectd_plugins_users?         ( sys-libs/libstatgrab:= )
-       )"
-
-# Enforcing !=sys-kernel/linux-headers-4.5 > due to #577846
-DEPEND="${COMMON_DEPEND}
-       collectd_plugins_iptables?              ( || ( 
<=sys-kernel/linux-headers-4.4 >=sys-kernel/linux-headers-4.6 ) )
-       collectd_plugins_java?                  ( >=virtual/jdk-1.6 )
-       virtual/pkgconfig"
-
-RDEPEND="${COMMON_DEPEND}
-       collectd_plugins_java?                  ( >=virtual/jre-1.6 )
-       collectd_plugins_syslog?                ( virtual/logger )
-       selinux?                                ( sec-policy/selinux-collectd )
-       !<sys-apps/openrc-0.18.2"
-
-REQUIRED_USE="
-       collectd_plugins_python?                ( ${PYTHON_REQUIRED_USE} )
-       collectd_plugins_smart?                 ( udev )"
-
-PATCHES=(
-       "${FILESDIR}"/${PN}-5.6.0-gentoo.patch
-       "${FILESDIR}"/${PN}-5.7.2-issue-2443.patch
-       "${FILESDIR}"/${PN}-5.7.2-CVE-2017-16820.patch
-       "${FILESDIR}"/${PN}-5.7.2-varnish-5.2+.patch
-)
-
-# @FUNCTION: collectd_plugin_kernel_linux
-# @DESCRIPTION:
-# USAGE: <plugin name> <kernel_options> <severity>
-# kernel_options is a list of kernel configurations options; the check tests 
whether at least
-#   one of them is enabled. If no, depending on the third argument an elog, 
ewarn, or eerror message
-#   is emitted.
-collectd_plugin_kernel_linux() {
-       local multi_opt opt
-       if has ${1} ${COLLECTD_ALL_PLUGINS}; then
-               if use collectd_plugins_${1}; then
-                       for opt in ${2}; do
-                               if linux_chkconfig_present ${opt}; then
-                                       return 0;
-                               fi
-                       done
-                       multi_opt=${2//\ /\ or\ }
-                       case ${3} in
-                               (info)
-                                       elog "The ${1} plugin can use kernel 
features that are disabled now; enable ${multi_opt} in your kernel"
-                               ;;
-                               (warn)
-                                       ewarn "The ${1} plugin uses kernel 
features that are disabled now; enable ${multi_opt} in your kernel"
-                               ;;
-                               (error)
-                                       eerror "The ${1} plugin needs kernel 
features that are disabled now; enable ${multi_opt} in your kernel"
-                               ;;
-                               (*)
-                                       die "function 
collectd_plugin_kernel_linux called with invalid third argument"
-                               ;;
-                       esac
-               fi
-       fi
-}
-
-collectd_linux_kernel_checks() {
-       if ! linux_chkconfig_present PROC_FS; then
-               ewarn "/proc file system support is disabled, many plugins will 
not be able to read any statistics from your system unless you enable PROC_FS 
in your kernel"
-       fi
-
-       if ! linux_chkconfig_present SYSFS; then
-               ewarn "/sys file system support is disabled, many plugins will 
not be able to read any statistics from your system unless you enable SYSFS in 
your kernel"
-       fi
-
-       # battery.c: /proc/pmu/battery_%i
-       # battery.c: /proc/acpi/battery
-       collectd_plugin_kernel_linux battery ACPI_BATTERY warn
-
-       # cgroups.c: /sys/fs/cgroup/
-       collectd_plugin_kernel_linux cgroups CGROUPS warn
-
-       # cpufreq.c: /sys/devices/system/cpu/cpu%d/cpufreq/
-       collectd_plugin_kernel_linux cpufreq SYSFS warn
-       collectd_plugin_kernel_linux cpufreq CPU_FREQ_STAT warn
-
-       # drbd.c: /proc/drbd
-       collectd_plugin_kernel_linux drbd BLK_DEV_DRBD warn
-
-       # conntrack.c: /proc/sys/net/netfilter/*
-       collectd_plugin_kernel_linux conntrack NETFILTER warn
-
-       # fscache.c: /proc/fs/fscache/stats
-       collectd_plugin_kernel_linux fscache FSCACHE warn
-
-       # nfs.c: /proc/net/rpc/nfs
-       # nfs.c: /proc/net/rpc/nfsd
-       collectd_plugin_kernel_linux nfs NFS_COMMON warn
-
-       # serial.c: /proc/tty/driver/serial
-       # serial.c: /proc/tty/driver/ttyS
-       collectd_plugin_kernel_linux serial SERIAL_CORE warn
-
-       # swap.c: /proc/meminfo
-       collectd_plugin_kernel_linux swap SWAP warn
-
-       # thermal.c: /proc/acpi/thermal_zone
-       # thermal.c: /sys/class/thermal
-       collectd_plugin_kernel_linux thermal ACPI_THERMAL warn
-
-       # turbostat.c: /dev/cpu/%d/msr
-       collectd_plugin_kernel_linux turbostat X86_MSR warn
-
-       # vmem.c: /proc/vmstat
-       collectd_plugin_kernel_linux vmem VM_EVENT_COUNTERS warn
-
-       # vserver.c: /proc/virtual
-       collectd_plugin_kernel_linux vserver VSERVER warn
-
-       # uuid.c: /sys/hypervisor/uuid
-       collectd_plugin_kernel_linux uuid SYSFS info
-
-       # wireless.c: /proc/net/wireless
-       collectd_plugin_kernel_linux wireless "WIRELESS MAC80211 IEEE80211" warn
-
-       # zfs_arc.c: /proc/spl/kstat/zfs/arcstats
-       collectd_plugin_kernel_linux zfs_arc "SPL ZFS" warn
-}
-
-pkg_setup() {
-       if use kernel_linux; then
-               linux-info_pkg_setup
-
-               if linux_config_exists; then
-                       einfo "Checking your linux kernel configuration:"
-                       collectd_linux_kernel_checks
-               else
-                       elog "Cannot find a linux kernel configuration. 
Continuing anyway."
-               fi
-       fi
-
-       if use collectd_plugins_java; then
-               java-pkg-opt-2_pkg_setup
-       fi
-
-       use collectd_plugins_python && python-single-r1_pkg_setup
-
-       enewgroup collectd
-       enewuser collectd -1 -1 /var/lib/collectd collectd
-}
-
-src_prepare() {
-       default
-
-       # There's some strange prefix handling in the default config file, 
resulting in
-       # paths like "/usr/var/..."
-       sed -i -e "s:@prefix@/var:/var:g" src/collectd.conf.in || die
-
-       # fix installdirs for perl, bug 444360
-       sed -i -e 's/INSTALL_BASE=$(DESTDIR)$(prefix) //' bindings/Makefile.am 
|| die
-
-       # Adjust upstream's systemd unit
-       #   - Get rid of EnvironmentFile directive; These files don't exist on 
Gentoo!
-       #   - Add User=collectd to run collectd as user "collectd" per default
-       sed -i \
-               -e '/^EnvironmentFile=.*/d' \
-               -e '/^\[Service\]/aUser=collectd' \
-               contrib/systemd.${PN}.service || die
-
-       if use collectd_plugins_java; then
-               # Set javac -source and -target flags according to (R)DEPEND.
-               sed -i -e "s/\$(JAVAC)/\0 $(java-pkg_javac-args)/g" 
bindings/java/Makefile.am || die
-       fi
-
-       ebegin "Removing bundled libltdl"
-       rm -rf libltdl || die
-       eend 0
-
-       eautoreconf
-}
-
-src_configure() {
-       # Now come the lists of os-dependent plugins. Any plugin that is not 
listed anywhere here
-       # should work independent of the operating system.
-
-       local linux_plugins="barometer battery cpu cpufreq disk
-               drbd entropy ethstat hugepages interface iptables
-               ipvs irq ipc load memory md netlink nfs numa processes
-               serial swap tcpconns thermal turbostat users vmem wireless
-               zfc_arc"
-
-       local need_libstatgrab=0
-       local libstatgrab_plugins="cpu disk interface load memory swap users"
-       local bsd_plugins="cpu tcpconns ${libstatgrab_plugins} zfc_arc"
-
-       local darwin_plugins="apple_sensors battery cpu disk interface memory 
processes tcpconns"
-
-       local osdependent_plugins="${linux_plugins} ${bsd_plugins} 
${darwin_plugins}"
-       local myos_plugins=""
-       if use kernel_linux; then
-               einfo "Enabling Linux plugins."
-               myos_plugins=${linux_plugins}
-       elif use kernel_FreeBSD; then
-               einfo "Enabling FreeBSD plugins."
-               myos_plugins=${bsd_plugins}
-       elif use kernel_Darwin; then
-               einfo "Enabling Darwin plugins."
-               myos_plugins=${darwin_plugins}
-       fi
-
-       local myconf="--disable-werror"
-
-       # Do we debug?
-       myconf+=" $(use_enable debug)"
-
-       # udev support?
-       # Required for smart plugin via REQUIRED_USE; Optional for disk plugin
-       if use udev; then
-               myconf+=" --with-libudev"
-       else
-               myconf+=" --without-libudev"
-       fi
-
-       local plugin
-
-       # Disable what needs to be disabled.
-       for plugin in ${COLLECTD_DISABLED_PLUGINS}; do
-               myconf+=" --disable-${plugin}"
-       done
-
-       # Set enable/disable for each single plugin.
-       for plugin in ${COLLECTD_ALL_PLUGINS}; do
-               if has ${plugin} ${osdependent_plugins}; then
-                       # plugin is os-dependent ...
-                       if has ${plugin} ${myos_plugins}; then
-                               # ... and available in this os
-                               myconf+=" $(use_enable 
collectd_plugins_${plugin} ${plugin})"
-                               # ... must we link against libstatgrab? Bug 
#541518
-                               if use kernel_FreeBSD && has ${plugin} 
${libstatgrab_plugins}; then
-                                       einfo "We must link against libstatgrab 
due to plugin \"${plugin}\" ..."
-                                       need_libstatgrab=1
-                               fi
-                       else
-                               # ... and NOT available in this os
-                               if use collectd_plugins_${plugin}; then
-                                       ewarn "You try to enable the ${plugin} 
plugin, but it is not available for this"
-                                       ewarn "kernel. Disabling it 
automatically."
-                               fi
-                               myconf+=" --disable-${plugin}"
-                       fi
-               elif [[ "${plugin}" = "collectd_plugins_perl" ]]; then
-                       if use collectd_plugins_perl && ! use perl; then
-                               ewarn "Perl plugin disabled as perl bindings 
disabled by -perl use flag"
-                               myconf+= --disable-perl
-                       else
-                               myconf+=" $(use_enable 
collectd_plugins_${plugin} ${plugin})"
-                       fi
-               else
-                       myconf+=" $(use_enable collectd_plugins_${plugin} 
${plugin})"
-               fi
-       done
-
-       if [ "${need_libstatgrab}" -eq 1 ]; then
-               myconf+=" --with-libstatgrab"
-       else
-               myconf+=" --without-libstatgrab"
-       fi
-
-       # JAVA_HOME is set by eclasses.
-       if use collectd_plugins_java; then
-               myconf+=" --with-java"
-       fi
-
-       # Need libiptc ONLY for iptables. If we try to use it otherwise bug 
340109 happens.
-       # lots of libs are only needed for plugins, if they are disabled, also 
disable the lib
-       use collectd_plugins_iptables || myconf+=" --with-libiptc=no"
-       use collectd_plugins_openldap || myconf+=" --with-libldap=no"
-       use collectd_plugins_redis    || use collectd_plugins_write_redis || 
myconf+=" --with-libhiredis=no"
-       use collectd_plugins_smart    || myconf+=" --with-libatasmart=no"
-       use collectd_plugins_gps      || myconf+=" --with-libgps=no"
-
-       if use perl; then
-               myconf+=" --with-perl-bindings=INSTALLDIRS=vendor"
-       else
-               myconf+=" --without-perl-bindings"
-       fi
-
-       # No need for v5upgrade
-       myconf+=" --disable-target_v5upgrade"
-
-       # Python
-       if use collectd_plugins_python; then
-               myconf+=" --with-libpython=yes"
-               export PYTHON_CONFIG=$(python_get_PYTHON_CONFIG)
-       else
-               myconf+=" --with-libpython=no"
-       fi
-
-       # XFS support
-       myconf+=" $(use_enable xfs)"
-
-       # Finally, run econf.
-       KERNEL_DIR="${KERNEL_DIR}" econf --config-cache \
-               $(use_enable static-libs static) \
-               --localstatedir=/var ${myconf}
-}
-
-src_install() {
-       emake DESTDIR="${D%/}" install
-
-       perl_delete_localpod
-
-       find "${ED}"usr/ -name "*.la" -delete || die
-
-       if use collectd_plugins_java; then
-               java-pkg_regjar "${ED}"usr/share/${PN}/java/*.jar
-       fi
-
-       fowners root:collectd /etc/collectd.conf
-       fperms u=rw,g=r,o= /etc/collectd.conf
-
-       dodoc AUTHORS ChangeLog README
-
-       if use contrib ; then
-               insinto /usr/share/doc/${PF}
-               doins -r contrib
-       fi
-
-       keepdir /var/lib/${PN}
-       fowners collectd:collectd /var/lib/${PN}
-
-       newinitd "${FILESDIR}/${PN}.initd-r2" ${PN}
-       newconfd "${FILESDIR}/${PN}.confd-r2" ${PN}
-       systemd_newunit "contrib/systemd.${PN}.service" ${PN}.service
-
-       insinto /etc/logrotate.d
-       newins "${FILESDIR}/${PN}.logrotate" ${PN}
-
-       newtmpfiles "${FILESDIR}"/${PN}.tmpfile ${PN}.conf
-
-       sed -i -e 's:^.*PIDFile     "/var/run/collectd.pid":#PIDFile     
"/run/collectd.pid":' "${ED}"etc/collectd.conf || die
-       sed -i -e 's:^# SocketFile "/var/run/collectd-unixsock":#       
SocketFile "/run/collectd/collectd.socket":' "${ED}"etc/collectd.conf || die
-       sed -i -e 's:^.*LoadPlugin perl$:# The new, correct way to load the 
perl plugin -- \n# <LoadPlugin perl>\n#   Globals true\n# </LoadPlugin>:' 
"${ED}"etc/collectd.conf || die
-       sed -i -e 's:^.*LoadPlugin python$:# The new, correct way to load the 
python plugin -- \n# <LoadPlugin python>\n#   Globals true\n# </LoadPlugin>:' 
"${ED}"etc/collectd.conf || die
-}
-
-pkg_postinst() {
-       tmpfiles_process "${PN}.conf"
-
-       if use filecaps; then
-               local caps=()
-               use collectd_plugins_ceph      && caps+=('CAP_DAC_OVERRIDE')
-               use collectd_plugins_exec      && caps+=('CAP_SETUID' 
'CAP_SETGID')
-               use collectd_plugins_iptables  && caps+=('CAP_NET_ADMIN')
-               use collectd_plugins_filecount && caps+=('CAP_DAC_READ_SEARCH')
-
-               if use collectd_plugins_dns || use collectd_plugins_ping; then
-                       caps+=('CAP_NET_RAW')
-               fi
-
-               if use collectd_plugins_turbostat || use 
collectd_plugins_smart; then
-                       caps+=('CAP_SYS_RAWIO')
-               fi
-
-               if [ ${#caps[@]} -gt 0 ]; then
-                       local caps_str=$(IFS=","; echo "${caps[*]}")
-                       fcaps ${caps_str} usr/sbin/collectd
-                       elog "Capabilities for ${EROOT}usr/sbin/collectd set 
to:"
-                       elog "  ${caps_str}+EP"
-                       elog
-
-                       local 
systemd_unit="$(systemd_get_systemunitdir)/collectd.service"
-                       if [[ -e "${systemd_unit}" ]]; then
-                               caps_str="${caps[*]}"
-                               sed -i -e 
"s:^CapabilityBoundingSet=.*:CapabilityBoundingSet=${caps_str}:" 
"${systemd_unit}" || \
-                                       die "Failed to set 
CapabilityBoundingSet in '${systemd_unit}'"
-
-                               elog "CapabilityBoundingSet in 
'${systemd_unit}'"
-                               elog "updated to match capabilities set above."
-                               elog
-                       else
-                               if has_version "sys-apps/systemd"; then
-                                       # Bug 596852
-                                       ewarn "Failed to update 
CapabilityBoundingSet in '${systemd_unit}'"
-                                       ewarn "because unit was not found. 
Please file a bug about this."
-                               fi
-                       fi
-               fi
-       fi
-
-       elog "Note: Collectd is only the collector."
-       elog "      You need to install 'data' sources (applications) locally 
or"
-       elog "      remotely on your own."
-
-       elog
-       elog "Collectd is configured to run as unprivileged user by default."
-       elog "You may want to revisit the configuration."
-       elog
-
-       if use collectd_plugins_email; then
-               ewarn "The email plug-in is deprecated. To submit statistics 
please use the unixsock plugin."
-       fi
-
-       if use collectd_plugins_smart; then
-               elog ""
-               elog "If you are using smart plugin and don't run collectd as 
root make sure"
-               elog "that the collectd user is allowed to access the disk you 
want to monitor"
-               elog "(can be done via udev rule for example) and that collectd 
has the required"
-               elog "capabilities set (which is the default when package was 
emerged with"
-               elog "'filecaps' USE flag set)."
-       fi
-
-       if use contrib; then
-               elog "The scripts in /usr/share/doc/${PF}/collection3 for 
generating graphs need dev-perl/HTML-Parser,"
-               elog "dev-perl/config-general, dev-perl/regexp-common, and 
net-analyzer/rrdtool[perl] to be installed."
-       fi
-}

diff --git a/app-metrics/collectd/files/collectd-5.6.0-gentoo.patch 
b/app-metrics/collectd/files/collectd-5.6.0-gentoo.patch
deleted file mode 100644
index dd8c1576354..00000000000
--- a/app-metrics/collectd/files/collectd-5.6.0-gentoo.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 8fe20883e248572690798e4dd1423511aa2f4e5d Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <[email protected]>
-Date: Thu, 22 Sep 2016 00:53:58 +0200
-Subject: [PATCH 1/3] Remove bundled libltdl
-
----
- Makefile.am  | 6 ------
- configure.ac | 8 ++++----
- 2 files changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 03bdd39..ad04a3c 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,11 +1,5 @@
--ACLOCAL_AMFLAGS = -I libltdl/m4
--
- SUBDIRS =
- 
--if BUILD_INCLUDED_LTDL
--SUBDIRS += libltdl
--endif
--
- SUBDIRS += proto src bindings .
- 
- AM_CPPFLAGS = $(LTDLINCL)
-diff --git a/configure.ac b/configure.ac
-index 9a6da11..68e15e0 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -3,7 +3,6 @@ AC_PREREQ([2.60])
- AC_INIT([collectd],[m4_esyscmd(./version-gen.sh)])
- AC_CONFIG_SRCDIR(src/target_set.c)
- AC_CONFIG_HEADERS(src/config.h)
--AC_CONFIG_AUX_DIR([libltdl/config])
- 
- dnl older automake's default of ARFLAGS=cru is noisy on newer binutils;
- dnl we don't really need the 'u' even in older toolchains.  Then there is
-@@ -13,7 +12,6 @@ m4_divert_text([DEFAULTS], [: "${ARFLAGS=cr} 
${AR_FLAGS=cr}"])
- m4_ifdef([LT_PACKAGE_VERSION],
-       # libtool >= 2.2
-       [
--       LT_CONFIG_LTDL_DIR([libltdl])
-        LT_INIT([dlopen])
-        LTDL_INIT([convenience])
-        AC_DEFINE(LIBTOOL_VERSION, 2, [Define to used libtool version.])
-@@ -25,12 +23,14 @@ m4_ifdef([LT_PACKAGE_VERSION],
-        AC_SUBST(LTDLINCL)
-        AC_SUBST(LIBLTDL)
-        AC_LIBTOOL_DLOPEN
--       AC_CONFIG_SUBDIRS(libltdl)
-        AC_DEFINE(LIBTOOL_VERSION, 1, [Define to used libtool version.])
-       ]
- )
- 
--AM_CONDITIONAL([BUILD_INCLUDED_LTDL], [test "x$LTDLDEPS" != "x"])
-+if test "x$LTDLDEPS" != "x"
-+then
-+      AC_MSG_ERROR(["system's libltdl is too old! Should never happen. Please 
file a bug at https://bugs.gentoo.org";])
-+fi
- 
- AM_INIT_AUTOMAKE([subdir-objects tar-pax dist-bzip2 no-dist-gzip foreign])
- m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
--- 
-2.10.0
-
-
-From 0b00f519ce183b8ceaab5cf8e56f574ecd2cb7c4 Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <[email protected]>
-Date: Thu, 22 Sep 2016 00:54:08 +0200
-Subject: [PATCH 2/3] Remove libhal dependency
-
-X-Gentoo-Bug: 353839
-X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=353839
----
- configure.ac | 24 ------------------------
- 1 file changed, 24 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 68e15e0..1700c44 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1663,30 +1663,6 @@ AM_CONDITIONAL(BUILD_WITH_LIBRESOLV, test 
"x$with_libresolv" = "xyes")
- 
- dnl Check for HAL (hardware abstraction library)
- with_libhal="no"
--PKG_CHECK_MODULES([HAL], [hal],
--  [
--    SAVE_LIBS="$LIBS"
--    LIBS="$HAL_LIBS $LIBS"
--    AC_CHECK_LIB([hal], [libhal_device_property_exists],
--      [
--        SAVE_CPPFLAGS="$CPPFLAGS"
--        CPPFLAGS="$HAL_CFLAGS $CPPFLAGS"
--        AC_CHECK_HEADERS([libhal.h],
--        [
--          with_libhal="yes"
--          BUILD_WITH_LIBHAL_CFLAGS="$HAL_CFLAGS"
--          BUILD_WITH_LIBHAL_LIBS="$HAL_LIBS"
--        ])
--        CPPFLAGS="$SAVE_CPPFLAGS"
--      ],
--      [ : ]
--    )
--    LIBS="$SAVE_LIBS"
--  ],
--  [ : ]
--)
--AC_SUBST(BUILD_WITH_LIBHAL_CFLAGS)
--AC_SUBST(BUILD_WITH_LIBHAL_LIBS)
- 
- 
- SAVE_LIBS="$LIBS"
--- 
-2.10.0
-
-
-From 380c61888bed5856319fa32816d8f2f4c88ee7bc Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <[email protected]>
-Date: Thu, 22 Sep 2016 00:54:19 +0200
-Subject: [PATCH 3/3] Link Oracle plug-in against libocci
-
-Author: Aurelien Minet
-X-Gentoo-Bug: 347607
-X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=347607
----
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1700c44..83909a0 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -3587,14 +3587,14 @@ AC_ARG_WITH(oracle, 
[AS_HELP_STRING([--with-oracle@<:@=ORACLE_HOME@:>@], [Path t
- ])
- if test "x$ORACLE_HOME" != "x"
- then
--      with_oracle_cppflags="-I$ORACLE_HOME/rdbms/public"
-+      with_oracle_cppflags="-I$ORACLE_HOME/rdbms/public -locci"
- 
-       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"
-+      with_oracle_libs="-L$ORACLE_HOME/lib -lclntsh -locci"
- fi
- if test "x$with_oracle" = "xyes"
- then
--- 
-2.10.0
-

diff --git a/app-metrics/collectd/files/collectd-5.7.2-CVE-2017-16820.patch 
b/app-metrics/collectd/files/collectd-5.7.2-CVE-2017-16820.patch
deleted file mode 100644
index 0090f2940bf..00000000000
--- a/app-metrics/collectd/files/collectd-5.7.2-CVE-2017-16820.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-CVE-2017-16820: Fix double free of request PDU
-
-https://github.com/collectd/collectd/commit/d16c24542b2f96a194d43a73c2e5778822b9cb47
-
---- a/src/snmp.c
-+++ b/src/snmp.c
-@@ -1357,11 +1357,13 @@ static int csnmp_read_table(host_definition_t *host, 
data_definition_t *data) {
-     if (oid_list_todo_num == 0) {
-       /* The request is still empty - so we are finished */
-       DEBUG("snmp plugin: all variables have left their subtree");
-+      snmp_free_pdu(req);
-       status = 0;
-       break;
-     }
- 
-     res = NULL;
-+    /* snmp_sess_synch_response always frees our req PDU */
-     status = snmp_sess_synch_response(host->sess_handle, req, &res);
-     if ((status != STAT_SUCCESS) || (res == NULL)) {
-       char *errstr = NULL;
-@@ -1376,8 +1378,6 @@ static int csnmp_read_table(host_definition_t *host, 
data_definition_t *data) {
-         snmp_free_pdu(res);
-       res = NULL;
- 
--      /* snmp_synch_response already freed our PDU */
--      req = NULL;
-       sfree(errstr);
-       csnmp_host_close_session(host);
- 
-@@ -1492,9 +1492,6 @@ static int csnmp_read_table(host_definition_t *host, 
data_definition_t *data) {
-     snmp_free_pdu(res);
-   res = NULL;
- 
--  if (req != NULL)
--    snmp_free_pdu(req);
--  req = NULL;
- 
-   if (status == 0)
-     csnmp_dispatch_table(host, data, instance_list_head, value_list_head);

diff --git a/app-metrics/collectd/files/collectd-5.7.2-issue-2443.patch 
b/app-metrics/collectd/files/collectd-5.7.2-issue-2443.patch
deleted file mode 100644
index 19410c139b0..00000000000
--- a/app-metrics/collectd/files/collectd-5.7.2-issue-2443.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-turbostat: import msr-index header from linux to allow building against
-    >=linux-4.12
-
-Backport of https://github.com/collectd/collectd/pull/2446
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -805,28 +805,6 @@ AC_CACHE_CHECK([whether clock_boottime and 
clock_monotonic are supported],
- 
- 
- # For the turbostat plugin
--have_asm_msrindex_h="no"
--AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
--
--if test "x$have_asm_msrindex_h" = "xyes"
--then
--  AC_CACHE_CHECK([whether asm/msr-index.h has MSR_PKG_C10_RESIDENCY],
--                 [c_cv_have_usable_asm_msrindex_h],
--                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
--[[[
--#include<asm/msr-index.h>
--]]],
--[[[
--int y = MSR_PKG_C10_RESIDENCY;
--return(y);
--]]]
--  )],
--                 [c_cv_have_usable_asm_msrindex_h="yes"],
--                 [c_cv_have_usable_asm_msrindex_h="no"],
--                                  )
--                 )
--fi
--
- have_cpuid_h="no"
- AC_CHECK_HEADERS(cpuid.h, [have_cpuid_h="yes"])
- 
-@@ -6108,7 +6086,7 @@ then
-       then
-               plugin_ipvs="yes"
-       fi
--      if test "x$c_cv_have_usable_asm_msrindex_h" = "xyes" && test 
"x$have_cpuid_h" = "xyes"
-+      if test "x$have_cpuid_h" = "xyes"
-       then
-               plugin_turbostat="yes"
-       fi
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -1212,7 +1212,9 @@ endif
- 
- if BUILD_PLUGIN_TURBOSTAT
- pkglib_LTLIBRARIES += turbostat.la
--turbostat_la_SOURCES = turbostat.c
-+turbostat_la_SOURCES = \
-+      turbostat.c \
-+      msr-index.h
- turbostat_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- endif
- 
---- /dev/null
-+++ b/src/msr-index.h
-@@ -0,0 +1,88 @@
-+/*
-+ * Partial header file imported from the linux kernel
-+ * (arch/x86/include/asm/msr-index.h)
-+ * as it is not provided by the kernel sources anymore
-+ *
-+ * Only the minimal blocks of macro have been included
-+ * ----
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms and conditions of the GNU General Public License,
-+ * version 2, as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-+ * more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along 
with
-+ * this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
-+ * ----
-+ */
-+
-+#ifndef _ASM_X86_MSR_INDEX_H
-+#define _ASM_X86_MSR_INDEX_H
-+
-+/*
-+ * CPU model specific register (MSR) numbers.
-+ *
-+ * Do not add new entries to this file unless the definitions are shared
-+ * between multiple compilation units.
-+ */
-+
-+/* Intel MSRs. Some also available on other CPUs */
-+
-+/* C-state Residency Counters */
-+#define MSR_PKG_C3_RESIDENCY          0x000003f8
-+#define MSR_PKG_C6_RESIDENCY          0x000003f9
-+#define MSR_ATOM_PKG_C6_RESIDENCY     0x000003fa
-+#define MSR_PKG_C7_RESIDENCY          0x000003fa
-+#define MSR_CORE_C3_RESIDENCY         0x000003fc
-+#define MSR_CORE_C6_RESIDENCY         0x000003fd
-+#define MSR_CORE_C7_RESIDENCY         0x000003fe
-+#define MSR_KNL_CORE_C6_RESIDENCY     0x000003ff
-+#define MSR_PKG_C2_RESIDENCY          0x0000060d
-+#define MSR_PKG_C8_RESIDENCY          0x00000630
-+#define MSR_PKG_C9_RESIDENCY          0x00000631
-+#define MSR_PKG_C10_RESIDENCY         0x00000632
-+
-+/* Run Time Average Power Limiting (RAPL) Interface */
-+
-+#define MSR_RAPL_POWER_UNIT           0x00000606
-+
-+#define MSR_PKG_POWER_LIMIT           0x00000610
-+#define MSR_PKG_ENERGY_STATUS         0x00000611
-+#define MSR_PKG_PERF_STATUS           0x00000613
-+#define MSR_PKG_POWER_INFO            0x00000614
-+
-+#define MSR_DRAM_POWER_LIMIT          0x00000618
-+#define MSR_DRAM_ENERGY_STATUS                0x00000619
-+#define MSR_DRAM_PERF_STATUS          0x0000061b
-+#define MSR_DRAM_POWER_INFO           0x0000061c
-+
-+#define MSR_PP0_POWER_LIMIT           0x00000638
-+#define MSR_PP0_ENERGY_STATUS         0x00000639
-+#define MSR_PP0_POLICY                        0x0000063a
-+#define MSR_PP0_PERF_STATUS           0x0000063b
-+
-+#define MSR_PP1_POWER_LIMIT           0x00000640
-+#define MSR_PP1_ENERGY_STATUS         0x00000641
-+#define MSR_PP1_POLICY                        0x00000642
-+
-+
-+
-+/* Intel defined MSRs. */
-+#define MSR_IA32_TSC                  0x00000010
-+#define MSR_SMI_COUNT                 0x00000034
-+
-+#define MSR_IA32_MPERF                        0x000000e7
-+#define MSR_IA32_APERF                        0x000000e8
-+
-+#define MSR_IA32_THERM_STATUS         0x0000019c
-+
-+#define MSR_IA32_TEMPERATURE_TARGET   0x000001a2
-+
-+#define MSR_IA32_PACKAGE_THERM_STATUS         0x000001b1
-+
-+
-+#endif /* _ASM_X86_MSR_INDEX_H */
---- a/src/turbostat.c
-+++ b/src/turbostat.c
-@@ -41,7 +41,7 @@
- #include "plugin.h"
- #include "utils_time.h"
- 
--#include <asm/msr-index.h>
-+#include "msr-index.h"
- #include <cpuid.h>
- #ifdef HAVE_SYS_CAPABILITY_H
- #include <sys/capability.h>

diff --git a/app-metrics/collectd/files/collectd-5.7.2-varnish-5.2+.patch 
b/app-metrics/collectd/files/collectd-5.7.2-varnish-5.2+.patch
deleted file mode 100644
index 60830042fa6..00000000000
--- a/app-metrics/collectd/files/collectd-5.7.2-varnish-5.2+.patch
+++ /dev/null
@@ -1,1018 +0,0 @@
-Fix building against >=www-servers/varnish-5.2
-
-https://github.com/collectd/collectd/commit/3c42182e912e3d634fe8c4f6a636053959fcde49
-https://github.com/collectd/collectd/commit/3ab73ae8b23b9816fb69fde630c5ad667aa1e09f
-https://github.com/collectd/collectd/commit/7978b43670472a000831f7ff37a6a30771a6ee6f
-https://github.com/collectd/collectd/commit/68123637814ea09efff5bf56f3209eefbe41287a
-https://github.com/collectd/collectd/commit/8192bfcf975ff6275505c99193a23e2a066927d0
-https://github.com/collectd/collectd/commit/c1e2bf3d2bfa1a1da3a6b42186577f635795e7f8
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -5614,13 +5614,18 @@ then
- 
-       CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags"
- 
--      AC_CHECK_HEADERS(vapi/vsc.h,
--              [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API support])],
--              [AC_CHECK_HEADERS(vsc.h,
--                      [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API 
support])],
--                      [AC_CHECK_HEADERS(varnishapi.h,
--                              [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 
API support])],
--                              [with_libvarnish="no (found none of the varnish 
header files)"])])])
-+      $PKG_CONFIG --atleast-version=5.2 'varnishapi' 2>/dev/null
-+      if test $? -eq 0; then
-+              AC_DEFINE([HAVE_VARNISH_V5], [1], [Varnish 5 API support])
-+      else
-+              AC_CHECK_HEADERS(vapi/vsc.h,
-+                      [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API 
support])],
-+                      [AC_CHECK_HEADERS(vsc.h,
-+                              [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 
API support])],
-+                              [AC_CHECK_HEADERS(varnishapi.h,
-+                                      [AC_DEFINE([HAVE_VARNISH_V2], [1], 
[Varnish 2 API support])],
-+                                      [with_libvarnish="no (found none of the 
varnish header files)"])])])
-+      fi
- 
-       CPPFLAGS="$SAVE_CPPFLAGS"
- fi
---- a/src/varnish.c
-+++ b/src/varnish.c
-@@ -21,6 +21,7 @@
-  *   Jérôme Renard <jerome.renard at gmail.com>
-  *   Marc Fournier <marc.fournier at camptocamp.com>
-  *   Florian octo Forster <octo at collectd.org>
-+ *   Denes Matetelki <dmatetelki at varnish-software.com>
-  **/
- 
- #include "collectd.h"
-@@ -28,7 +29,7 @@
- #include "common.h"
- #include "plugin.h"
- 
--#if HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
- #include <vapi/vsc.h>
- #include <vapi/vsm.h>
- typedef struct VSC_C_main c_varnish_stats_t;
-@@ -69,17 +70,25 @@ struct user_config_s {
-   _Bool collect_sms;
- #if HAVE_VARNISH_V2
-   _Bool collect_sm;
-+#endif
-+#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   _Bool collect_sma;
- #endif
-   _Bool collect_struct;
-   _Bool collect_totals;
--#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   _Bool collect_uptime;
- #endif
-   _Bool collect_vcl;
-   _Bool collect_workers;
--#if HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   _Bool collect_vsm;
-+  _Bool collect_lck;
-+  _Bool collect_mempool;
-+  _Bool collect_mgt;
-+  _Bool collect_smf;
-+  _Bool collect_vbe;
-+  _Bool collect_mse;
- #endif
- };
- typedef struct user_config_s user_config_t; /* }}} */
-@@ -98,60 +107,70 @@ static int varnish_submit(const char *plugin_instance, /* 
{{{ */
- 
-   if (plugin_instance == NULL)
-     plugin_instance = "default";
--  ssnprintf(vl.plugin_instance, sizeof(vl.plugin_instance), "%s-%s",
--            plugin_instance, category);
-+  snprintf(vl.plugin_instance, sizeof(vl.plugin_instance), "%s-%s",
-+           plugin_instance, category);
- 
-   sstrncpy(vl.type, type, sizeof(vl.type));
- 
-   if (type_instance != NULL)
-     sstrncpy(vl.type_instance, type_instance, sizeof(vl.type_instance));
- 
--  return (plugin_dispatch_values(&vl));
-+  return plugin_dispatch_values(&vl);
- } /* }}} int varnish_submit */
- 
- static int varnish_submit_gauge(const char *plugin_instance, /* {{{ */
-                                 const char *category, const char *type,
-                                 const char *type_instance,
-                                 uint64_t gauge_value) {
--  return (varnish_submit(plugin_instance, category, type, type_instance,
--                         (value_t){.gauge = (gauge_t)gauge_value}));
-+  return varnish_submit(plugin_instance, category, type, type_instance,
-+                        (value_t){
-+                            .gauge = (gauge_t)gauge_value,
-+                        });
- } /* }}} int varnish_submit_gauge */
- 
- static int varnish_submit_derive(const char *plugin_instance, /* {{{ */
-                                  const char *category, const char *type,
-                                  const char *type_instance,
-                                  uint64_t derive_value) {
--  return (varnish_submit(plugin_instance, category, type, type_instance,
--                         (value_t){.derive = (derive_t)derive_value}));
-+  return varnish_submit(plugin_instance, category, type, type_instance,
-+                        (value_t){
-+                            .derive = (derive_t)derive_value,
-+                        });
- } /* }}} int varnish_submit_derive */
- 
--#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
- static int varnish_monitor(void *priv,
-                            const struct VSC_point *const pt) /* {{{ */
- {
-   uint64_t val;
-   const user_config_t *conf;
--  const char *class;
-   const char *name;
- 
-   if (pt == NULL)
--    return (0);
-+    return 0;
- 
-   conf = priv;
- 
--#if HAVE_VARNISH_V4
--  class = pt->section->fantom->type;
--  name = pt->desc->name;
-+#if HAVE_VARNISH_V5
-+  char namebuff[DATA_MAX_NAME_LEN];
- 
--  if (strcmp(class, "MAIN") != 0)
--    return (0);
-+  char const *c = strrchr(pt->name, '.');
-+  if (c == NULL) {
-+    return EINVAL;
-+  }
-+  sstrncpy(namebuff, c + 1, sizeof(namebuff));
-+  name = namebuff;
-+
-+#elif HAVE_VARNISH_V4
-+  if (strcmp(pt->section->fantom->type, "MAIN") != 0)
-+    return 0;
- 
-+  name = pt->desc->name;
- #elif HAVE_VARNISH_V3
--  class = pt->class;
--  name = pt->name;
-+  if (strcmp(pt->class, "") != 0)
-+    return 0;
- 
--  if (strcmp(class, "") != 0)
--    return (0);
-+  name = pt->name;
- #endif
- 
-   val = *(const volatile uint64_t *)pt->ptr;
-@@ -178,6 +197,14 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "client_req") == 0)
-       return varnish_submit_derive(conf->instance, "connections", 
"connections",
-                                    "received", val);
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+    else if (strcmp(name, "client_req_400") == 0)
-+      return varnish_submit_derive(conf->instance, "connections", 
"connections",
-+                                   "error_400", val);
-+    else if (strcmp(name, "client_req_417") == 0)
-+      return varnish_submit_derive(conf->instance, "connections", 
"connections",
-+                                   "error_417", val);
-+#endif
-   }
- 
- #ifdef HAVE_VARNISH_V3
-@@ -207,6 +234,9 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "esi_warnings") == 0)
-       return varnish_submit_derive(conf->instance, "esi", "total_operations",
-                                    "warning", val);
-+    else if (strcmp(name, "esi_maxdepth") == 0)
-+      return varnish_submit_derive(conf->instance, "esi", "total_operations",
-+                                   "max_depth", val);
-   }
- 
-   if (conf->collect_backend) {
-@@ -282,6 +312,20 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "fetch_304") == 0)
-       return varnish_submit_derive(conf->instance, "fetch", "http_requests",
-                                    "no_body_304", val);
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+    else if (strcmp(name, "fetch_no_thread") == 0)
-+      return varnish_submit_derive(conf->instance, "fetch", "http_requests",
-+                                   "no_thread", val);
-+    else if (strcmp(name, "fetch_none") == 0)
-+      return varnish_submit_derive(conf->instance, "fetch", "http_requests",
-+                                   "none", val);
-+    else if (strcmp(name, "busy_sleep") == 0)
-+      return varnish_submit_derive(conf->instance, "fetch", "http_requests",
-+                                   "busy_sleep", val);
-+    else if (strcmp(name, "busy_wakeup") == 0)
-+      return varnish_submit_derive(conf->instance, "fetch", "http_requests",
-+                                   "busy_wakeup", val);
-+#endif
-   }
- 
-   if (conf->collect_hcb) {
-@@ -327,6 +371,14 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "n_objoverflow") == 0)
-       return varnish_submit_derive(conf->instance, "objects", "total_objects",
-                                    "workspace_overflow", val);
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+    else if (strcmp(name, "exp_mailed") == 0)
-+      return varnish_submit_gauge(conf->instance, "struct", "objects",
-+                                  "exp_mailed", val);
-+    else if (strcmp(name, "exp_received") == 0)
-+      return varnish_submit_gauge(conf->instance, "struct", "objects",
-+                                  "exp_received", val);
-+#endif
-   }
- 
- #if HAVE_VARNISH_V3
-@@ -351,7 +403,7 @@ static int varnish_monitor(void *priv,
-                                    "duplicate", val);
-   }
- #endif
--#if HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   if (conf->collect_ban) {
-     if (strcmp(name, "bans") == 0)
-       return varnish_submit_derive(conf->instance, "ban", "total_operations",
-@@ -377,6 +429,33 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "bans_dups") == 0)
-       return varnish_submit_derive(conf->instance, "ban", "total_operations",
-                                    "duplicate", val);
-+    else if (strcmp(name, "bans_tested") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "tested", val);
-+    else if (strcmp(name, "bans_lurker_contention") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "lurker_contention", val);
-+    else if (strcmp(name, "bans_lurker_obj_killed") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "lurker_obj_killed", val);
-+    else if (strcmp(name, "bans_lurker_tested") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "lurker_tested", val);
-+    else if (strcmp(name, "bans_lurker_tests_tested") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "lurker_tests_tested", val);
-+    else if (strcmp(name, "bans_obj_killed") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "obj_killed", val);
-+    else if (strcmp(name, "bans_persisted_bytes") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_bytes",
-+                                   "persisted_bytes", val);
-+    else if (strcmp(name, "bans_persisted_fragmentation") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_bytes",
-+                                   "persisted_fragmentation", val);
-+    else if (strcmp(name, "bans_tests_tested") == 0)
-+      return varnish_submit_derive(conf->instance, "ban", "total_operations",
-+                                   "tests_tested", val);
-   }
- #endif
- 
-@@ -411,6 +490,15 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "sess_herd") == 0)
-       return varnish_submit_derive(conf->instance, "session",
-                                    "total_operations", "herd", val);
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+    else if (strcmp(name, "sess_closed_err") == 0)
-+      return varnish_submit_derive(conf->instance, "session",
-+                                   "total_operations", "closed_err", val);
-+    else if (strcmp(name, "sess_dropped") == 0)
-+      return varnish_submit_derive(conf->instance, "session",
-+                                   "total_operations", "dropped_for_thread",
-+                                   val);
-+#endif
-   }
- 
-   if (conf->collect_shm) {
-@@ -510,12 +598,18 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "s_req_bodybytes") == 0)
-       return varnish_submit_derive(conf->instance, "totals", "total_bytes",
-                                    "req_body", val);
-+    else if (strcmp(name, "s_req_protobytes") == 0)
-+      return varnish_submit_derive(conf->instance, "totals", "total_bytes",
-+                                   "req_proto", val);
-     else if (strcmp(name, "s_resp_hdrbytes") == 0)
-       return varnish_submit_derive(conf->instance, "totals", "total_bytes",
-                                    "resp_header", val);
-     else if (strcmp(name, "s_resp_bodybytes") == 0)
-       return varnish_submit_derive(conf->instance, "totals", "total_bytes",
-                                    "resp_body", val);
-+    else if (strcmp(name, "s_resp_protobytes") == 0)
-+      return varnish_submit_derive(conf->instance, "totals", "total_bytes",
-+                                   "resp_proto", val);
-     else if (strcmp(name, "s_pipe_hdrbytes") == 0)
-       return varnish_submit_derive(conf->instance, "totals", "total_bytes",
-                                    "pipe_header", val);
-@@ -580,8 +674,8 @@ static int varnish_monitor(void *priv,
-       return varnish_submit_derive(conf->instance, "workers", "total_threads",
-                                    "dropped", val);
-     else if (strcmp(name, "thread_queue_len") == 0)
--      return varnish_submit_derive(conf->instance, "workers", "queue_length",
--                                   "threads", val);
-+      return varnish_submit_gauge(conf->instance, "workers", "queue_length",
-+                                  "threads", val);
-     else if (strcmp(name, "n_wrk") == 0)
-       return varnish_submit_gauge(conf->instance, "workers", "threads",
-                                   "worker", val);
-@@ -609,9 +703,17 @@ static int varnish_monitor(void *priv,
-     else if (strcmp(name, "n_wrk_lqueue") == 0)
-       return varnish_submit_derive(conf->instance, "workers", 
"total_requests",
-                                    "queue_length", val);
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+    else if (strcmp(name, "pools") == 0)
-+      return varnish_submit_gauge(conf->instance, "workers", "pools", "pools",
-+                                  val);
-+    else if (strcmp(name, "busy_killed") == 0)
-+      return varnish_submit_derive(conf->instance, "workers", "http_requests",
-+                                   "busy_killed", val);
-+#endif
-   }
- 
--#if HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   if (conf->collect_vsm) {
-     if (strcmp(name, "vsm_free") == 0)
-       return varnish_submit_gauge(conf->instance, "vsm", "bytes", "free", 
val);
-@@ -627,9 +729,262 @@ static int varnish_monitor(void *priv,
-       return varnish_submit_derive(conf->instance, "vsm", "total_bytes",
-                                    "overflowed", val);
-   }
-+
-+  if (conf->collect_vbe) {
-+    /* @TODO figure out the collectd type for bitmap
-+    if (strcmp(name, "happy") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe",
-+                                   "bitmap", "happy_hprobes", val);
-+    */
-+    if (strcmp(name, "bereq_hdrbytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "bereq_hdrbytes", val);
-+    else if (strcmp(name, "bereq_bodybytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "bereq_bodybytes", val);
-+    else if (strcmp(name, "bereq_protobytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "bereq_protobytes", val);
-+    else if (strcmp(name, "beresp_hdrbytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "beresp_hdrbytes", val);
-+    else if (strcmp(name, "beresp_bodybytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "beresp_bodybytes", val);
-+    else if (strcmp(name, "beresp_protobytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "beresp_protobytes", val);
-+    else if (strcmp(name, "pipe_hdrbytes") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "pipe_hdrbytes", val);
-+    else if (strcmp(name, "pipe_out") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "pipe_out", val);
-+    else if (strcmp(name, "pipe_in") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "total_bytes",
-+                                   "pipe_in", val);
-+    else if (strcmp(name, "conn") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "connections",
-+                                   "c_conns", val);
-+    else if (strcmp(name, "req") == 0)
-+      return varnish_submit_derive(conf->instance, "vbe", "http_requests",
-+                                   "b_reqs", val);
-+  }
-+
-+  /* All Stevedores support these counters */
-+  if (conf->collect_sma || conf->collect_smf || conf->collect_mse) {
-+
-+    char category[4];
-+    if (conf->collect_sma)
-+      strncpy(category, "sma", 4);
-+    else if (conf->collect_smf)
-+      strncpy(category, "smf", 4);
-+    else
-+      strncpy(category, "mse", 4);
-+
-+    if (strcmp(name, "c_req") == 0)
-+      return varnish_submit_derive(conf->instance, category, 
"total_operations",
-+                                   "alloc_req", val);
-+    else if (strcmp(name, "c_fail") == 0)
-+      return varnish_submit_derive(conf->instance, category, 
"total_operations",
-+                                   "alloc_fail", val);
-+    else if (strcmp(name, "c_bytes") == 0)
-+      return varnish_submit_derive(conf->instance, category, "total_bytes",
-+                                   "bytes_allocated", val);
-+    else if (strcmp(name, "c_freed") == 0)
-+      return varnish_submit_derive(conf->instance, category, "total_bytes",
-+                                   "bytes_freed", val);
-+    else if (strcmp(name, "g_alloc") == 0)
-+      return varnish_submit_derive(conf->instance, category, 
"total_operations",
-+                                   "alloc_outstanding", val);
-+    else if (strcmp(name, "g_bytes") == 0)
-+      return varnish_submit_gauge(conf->instance, category, "bytes",
-+                                  "bytes_outstanding", val);
-+    else if (strcmp(name, "g_space") == 0)
-+      return varnish_submit_gauge(conf->instance, category, "bytes",
-+                                  "bytes_available", val);
-+  }
-+
-+  /* No SMA specific counters */
-+
-+  if (conf->collect_smf) {
-+    if (strcmp(name, "g_smf") == 0)
-+      return varnish_submit_gauge(conf->instance, "smf", "objects",
-+                                  "n_struct_smf", val);
-+    else if (strcmp(name, "g_smf_frag") == 0)
-+      return varnish_submit_gauge(conf->instance, "smf", "objects",
-+                                  "n_small_free_smf", val);
-+    else if (strcmp(name, "g_smf_large") == 0)
-+      return varnish_submit_gauge(conf->instance, "smf", "objects",
-+                                  "n_large_free_smf", val);
-+  }
-+
-+  if (conf->collect_mgt) {
-+    if (strcmp(name, "uptime") == 0)
-+      return varnish_submit_gauge(conf->instance, "mgt", "uptime",
-+                                  "mgt_proc_uptime", val);
-+    else if (strcmp(name, "child_start") == 0)
-+      return varnish_submit_derive(conf->instance, "mgt", "total_operations",
-+                                   "child_start", val);
-+    else if (strcmp(name, "child_exit") == 0)
-+      return varnish_submit_derive(conf->instance, "mgt", "total_operations",
-+                                   "child_exit", val);
-+    else if (strcmp(name, "child_stop") == 0)
-+      return varnish_submit_derive(conf->instance, "mgt", "total_operations",
-+                                   "child_stop", val);
-+    else if (strcmp(name, "child_died") == 0)
-+      return varnish_submit_derive(conf->instance, "mgt", "total_operations",
-+                                   "child_died", val);
-+    else if (strcmp(name, "child_dump") == 0)
-+      return varnish_submit_derive(conf->instance, "mgt", "total_operations",
-+                                   "child_dump", val);
-+    else if (strcmp(name, "child_panic") == 0)
-+      return varnish_submit_derive(conf->instance, "mgt", "total_operations",
-+                                   "child_panic", val);
-+  }
-+
-+  if (conf->collect_lck) {
-+    if (strcmp(name, "creat") == 0)
-+      return varnish_submit_gauge(conf->instance, "lck", "objects", "created",
-+                                  val);
-+    else if (strcmp(name, "destroy") == 0)
-+      return varnish_submit_gauge(conf->instance, "lck", "objects", 
"destroyed",
-+                                  val);
-+    else if (strcmp(name, "locks") == 0)
-+      return varnish_submit_derive(conf->instance, "lck", "total_operations",
-+                                   "lock_ops", val);
-+  }
-+
-+  if (conf->collect_mempool) {
-+    if (strcmp(name, "live") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "in_use", val);
-+    else if (strcmp(name, "pool") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "in_pool", val);
-+    else if (strcmp(name, "sz_wanted") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "bytes",
-+                                  "size_requested", val);
-+    else if (strcmp(name, "sz_actual") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "bytes",
-+                                  "size_allocated", val);
-+    else if (strcmp(name, "allocs") == 0)
-+      return varnish_submit_derive(conf->instance, "mempool",
-+                                   "total_operations", "allocations", val);
-+    else if (strcmp(name, "frees") == 0)
-+      return varnish_submit_derive(conf->instance, "mempool",
-+                                   "total_operations", "frees", val);
-+    else if (strcmp(name, "recycle") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "recycled", val);
-+    else if (strcmp(name, "timeout") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "timed_out", val);
-+    else if (strcmp(name, "toosmall") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "too_small", val);
-+    else if (strcmp(name, "surplus") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "surplus", val);
-+    else if (strcmp(name, "randry") == 0)
-+      return varnish_submit_gauge(conf->instance, "mempool", "objects",
-+                                  "ran_dry", val);
-+  }
-+
-+  if (conf->collect_mse) {
-+    if (strcmp(name, "c_full") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "full_allocs", val);
-+    else if (strcmp(name, "c_truncated") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "truncated_allocs", val);
-+    else if (strcmp(name, "c_expanded") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "expanded_allocs", val);
-+    else if (strcmp(name, "c_failed") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "failed_allocs", val);
-+    else if (strcmp(name, "c_bytes") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_bytes",
-+                                   "bytes_allocated", val);
-+    else if (strcmp(name, "c_freed") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_bytes",
-+                                   "bytes_freed", val);
-+    else if (strcmp(name, "g_fo_alloc") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "fo_allocs_outstanding", val);
-+    else if (strcmp(name, "g_fo_bytes") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse", "bytes",
-+                                  "fo_bytes_outstanding", val);
-+    else if (strcmp(name, "g_membuf_alloc") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse", "objects",
-+                                  "membufs_allocated", val);
-+    else if (strcmp(name, "g_membuf_inuse") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse", "objects",
-+                                  "membufs_inuse", val);
-+    else if (strcmp(name, "g_bans_bytes") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse", "bytes",
-+                                  "persisted_banspace_used", val);
-+    else if (strcmp(name, "g_bans_space") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse", "bytes",
-+                                  "persisted_banspace_available", val);
-+    else if (strcmp(name, "g_bans_persisted") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "bans_persisted", val);
-+    else if (strcmp(name, "g_bans_lost") == 0)
-+      return varnish_submit_derive(conf->instance, "mse", "total_operations",
-+                                   "bans_lost", val);
-+
-+    /* mse seg */
-+    else if (strcmp(name, "g_journal_bytes") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_reg", "bytes",
-+                                  "journal_bytes_used", val);
-+    else if (strcmp(name, "g_journal_space") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_reg", "bytes",
-+                                  "journal_bytes_free", val);
-+
-+    /* mse segagg */
-+    else if (strcmp(name, "g_bigspace") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_segagg", "bytes",
-+                                  "big_extents_bytes_available", val);
-+    else if (strcmp(name, "g_extfree") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_segagg", "objects",
-+                                  "free_extents", val);
-+    else if (strcmp(name, "g_sparenode") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_segagg", "objects",
-+                                  "spare_nodes_available", val);
-+    else if (strcmp(name, "g_objnode") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_segagg", "objects",
-+                                  "object_nodes_in_use", val);
-+    else if (strcmp(name, "g_extnode") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_segagg", "objects",
-+                                  "extent_nodes_in_use", val);
-+    else if (strcmp(name, "g_bigextfree") == 0)
-+      return varnish_submit_gauge(conf->instance, "mse_segagg", "objects",
-+                                  "free_big_extents", val);
-+    else if (strcmp(name, "c_pruneloop") == 0)
-+      return varnish_submit_derive(conf->instance, "mse_segagg",
-+                                   "total_operations", "prune_loops", val);
-+    else if (strcmp(name, "c_pruned") == 0)
-+      return varnish_submit_derive(conf->instance, "mse_segagg",
-+                                   "total_objects", "pruned_objects", val);
-+    else if (strcmp(name, "c_spared") == 0)
-+      return varnish_submit_derive(conf->instance, "mse_segagg",
-+                                   "total_operations", "spared_objects", val);
-+    else if (strcmp(name, "c_skipped") == 0)
-+      return varnish_submit_derive(conf->instance, "mse_segagg",
-+                                   "total_operations", "missed_objects", val);
-+    else if (strcmp(name, "c_nuked") == 0)
-+      return varnish_submit_derive(conf->instance, "mse_segagg",
-+                                   "total_operations", "nuked_objects", val);
-+    else if (strcmp(name, "c_sniped") == 0)
-+      return varnish_submit_derive(conf->instance, "mse_segagg",
-+                                   "total_operations", "sniped_objects", val);
-+  }
-+
- #endif
- 
--  return (0);
-+  return 0;
- 
- } /* }}} static int varnish_monitor */
- #else /* if HAVE_VARNISH_V2 */
-@@ -971,21 +1326,32 @@ static void varnish_monitor(const user_config_t *conf, 
/* {{{ */
- } /* }}} void varnish_monitor */
- #endif
- 
--#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
- static int varnish_read(user_data_t *ud) /* {{{ */
- {
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-   struct VSM_data *vd;
--  const c_varnish_stats_t *stats;
-   _Bool ok;
-+  const c_varnish_stats_t *stats;
-+#elif HAVE_VARNISH_V5
-+  struct vsm *vd;
-+  struct vsc *vsc;
-+  int vsm_status;
-+#endif
- 
-   user_config_t *conf;
- 
-   if ((ud == NULL) || (ud->data == NULL))
--    return (EINVAL);
-+    return EINVAL;
- 
-   conf = ud->data;
- 
-   vd = VSM_New();
-+
-+#if HAVE_VARNISH_V5
-+  vsc = VSC_New();
-+#endif
-+
- #if HAVE_VARNISH_V3
-   VSC_Setup(vd);
- #endif
-@@ -993,48 +1359,85 @@ static int varnish_read(user_data_t *ud) /* {{{ */
-   if (conf->instance != NULL) {
-     int status;
- 
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-     status = VSM_n_Arg(vd, conf->instance);
-+#elif HAVE_VARNISH_V5
-+    status = VSM_Arg(vd, 'n', conf->instance);
-+#endif
-+
-     if (status < 0) {
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-       VSM_Delete(vd);
--      ERROR("varnish plugin: VSM_n_Arg (\"%s\") failed "
-+#elif HAVE_VARNISH_V5
-+      VSC_Destroy(&vsc, vd);
-+      VSM_Destroy(&vd);
-+#endif
-+      ERROR("varnish plugin: VSM_Arg (\"%s\") failed "
-             "with status %i.",
-             conf->instance, status);
--      return (-1);
-+      return -1;
-     }
-   }
- 
- #if HAVE_VARNISH_V3
-   ok = (VSC_Open(vd, /* diag = */ 1) == 0);
--#else /* if HAVE_VARNISH_V4 */
-+#elif HAVE_VARNISH_V4
-   ok = (VSM_Open(vd) == 0);
- #endif
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-   if (!ok) {
-     VSM_Delete(vd);
-     ERROR("varnish plugin: Unable to open connection.");
--
--    return (-1);
-+    return -1;
-   }
-+#endif
- 
- #if HAVE_VARNISH_V3
-   stats = VSC_Main(vd);
--#else /* if HAVE_VARNISH_V4 */
-+#elif HAVE_VARNISH_V4
-   stats = VSC_Main(vd, NULL);
- #endif
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-   if (!stats) {
-     VSM_Delete(vd);
-     ERROR("varnish plugin: Unable to get statistics.");
-+    return -1;
-+  }
-+#endif
-+
-+#if HAVE_VARNISH_V5
-+  if (VSM_Attach(vd, STDERR_FILENO)) {
-+    ERROR("varnish plugin: Cannot attach to varnish. %s", VSM_Error(vd));
-+    VSC_Destroy(&vsc, vd);
-+    VSM_Destroy(&vd);
-+    return -1;
-+  }
- 
--    return (-1);
-+  vsm_status = VSM_Status(vd);
-+  if (vsm_status & ~(VSM_MGT_RUNNING | VSM_WRK_RUNNING)) {
-+    ERROR("varnish plugin: Unable to get statistics.");
-+    VSC_Destroy(&vsc, vd);
-+    VSM_Destroy(&vd);
-+    return -1;
-   }
-+#endif
- 
- #if HAVE_VARNISH_V3
-   VSC_Iter(vd, varnish_monitor, conf);
--#else /* if HAVE_VARNISH_V4 */
-+#elif HAVE_VARNISH_V4
-   VSC_Iter(vd, NULL, varnish_monitor, conf);
-+#elif HAVE_VARNISH_V5
-+  VSC_Iter(vsc, vd, varnish_monitor, conf);
- #endif
-+
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-   VSM_Delete(vd);
-+#elif HAVE_VARNISH_V5
-+  VSC_Destroy(&vsc, vd);
-+  VSM_Destroy(&vd);
-+#endif
- 
--  return (0);
-+  return 0;
- } /* }}} */
- #else /* if HAVE_VARNISH_V2 */
- static int varnish_read(user_data_t *ud) /* {{{ */
-@@ -1044,7 +1447,7 @@ static int varnish_read(user_data_t *ud) /* {{{ */
-   user_config_t *conf;
- 
-   if ((ud == NULL) || (ud->data == NULL))
--    return (EINVAL);
-+    return EINVAL;
- 
-   conf = ud->data;
- 
-@@ -1052,12 +1455,12 @@ static int varnish_read(user_data_t *ud) /* {{{ */
-   if (stats == NULL) {
-     ERROR("Varnish plugin : unable to load statistics");
- 
--    return (-1);
-+    return -1;
-   }
- 
-   varnish_monitor(conf, stats);
- 
--  return (0);
-+  return 0;
- } /* }}} */
- #endif
- 
-@@ -1075,7 +1478,7 @@ static void varnish_config_free(void *ptr) /* {{{ */
- static int varnish_config_apply_default(user_config_t *conf) /* {{{ */
- {
-   if (conf == NULL)
--    return (EINVAL);
-+    return EINVAL;
- 
-   conf->collect_backend = 1;
-   conf->collect_cache = 1;
-@@ -1096,21 +1499,29 @@ static int varnish_config_apply_default(user_config_t 
*conf) /* {{{ */
-   conf->collect_shm = 1;
- #if HAVE_VARNISH_V2
-   conf->collect_sm = 0;
-+#endif
-+#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   conf->collect_sma = 0;
- #endif
-   conf->collect_sms = 0;
-   conf->collect_struct = 0;
-   conf->collect_totals = 0;
--#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   conf->collect_uptime = 0;
- #endif
-   conf->collect_vcl = 0;
-   conf->collect_workers = 0;
--#if HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-   conf->collect_vsm = 0;
-+  conf->collect_lck = 0;
-+  conf->collect_mempool = 0;
-+  conf->collect_mgt = 0;
-+  conf->collect_smf = 0;
-+  conf->collect_vbe = 0;
-+  conf->collect_mse = 0;
- #endif
- 
--  return (0);
-+  return 0;
- } /* }}} int varnish_config_apply_default */
- 
- static int varnish_init(void) /* {{{ */
-@@ -1118,11 +1529,11 @@ static int varnish_init(void) /* {{{ */
-   user_config_t *conf;
- 
-   if (have_instance)
--    return (0);
-+    return 0;
- 
-   conf = calloc(1, sizeof(*conf));
-   if (conf == NULL)
--    return (ENOMEM);
-+    return ENOMEM;
- 
-   /* Default settings: */
-   conf->instance = NULL;
-@@ -1133,11 +1544,12 @@ static int varnish_init(void) /* {{{ */
-       /* group = */ "varnish",
-       /* name      = */ "varnish/localhost",
-       /* callback  = */ varnish_read,
--      /* interval  = */ 0, &(user_data_t){
--                               .data = conf, .free_func = varnish_config_free,
--                           });
-+      /* interval  = */ 0,
-+      &(user_data_t){
-+          .data = conf, .free_func = varnish_config_free,
-+      });
- 
--  return (0);
-+  return 0;
- } /* }}} int varnish_init */
- 
- static int varnish_config_instance(const oconfig_item_t *ci) /* {{{ */
-@@ -1147,7 +1559,7 @@ static int varnish_config_instance(const oconfig_item_t 
*ci) /* {{{ */
- 
-   conf = calloc(1, sizeof(*conf));
-   if (conf == NULL)
--    return (ENOMEM);
-+    return ENOMEM;
-   conf->instance = NULL;
- 
-   varnish_config_apply_default(conf);
-@@ -1158,7 +1570,7 @@ static int varnish_config_instance(const oconfig_item_t 
*ci) /* {{{ */
-     status = cf_util_get_string(ci, &conf->instance);
-     if (status != 0) {
-       sfree(conf);
--      return (status);
-+      return status;
-     }
-     assert(conf->instance != NULL);
- 
-@@ -1170,7 +1582,7 @@ static int varnish_config_instance(const oconfig_item_t 
*ci) /* {{{ */
-     WARNING("Varnish plugin: \"Instance\" blocks accept only "
-             "one argument.");
-     sfree(conf);
--    return (EINVAL);
-+    return EINVAL;
-   }
- 
-   for (int i = 0; i < ci->children_num; i++) {
-@@ -1218,11 +1630,11 @@ static int varnish_config_instance(const 
oconfig_item_t *ci) /* {{{ */
-     else if (strcasecmp("CollectSMS", child->key) == 0)
-       cf_util_get_boolean(child, &conf->collect_sms);
-     else if (strcasecmp("CollectSMA", child->key) == 0)
--#if HAVE_VARNISH_V2
-+#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-       cf_util_get_boolean(child, &conf->collect_sma);
- #else
-       WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
--              child->key, "v2");
-+              child->key, "v2 and v4");
- #endif
-     else if (strcasecmp("CollectSM", child->key) == 0)
- #if HAVE_VARNISH_V2
-@@ -1236,7 +1648,7 @@ static int varnish_config_instance(const oconfig_item_t 
*ci) /* {{{ */
-     else if (strcasecmp("CollectTotals", child->key) == 0)
-       cf_util_get_boolean(child, &conf->collect_totals);
-     else if (strcasecmp("CollectUptime", child->key) == 0)
--#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-       cf_util_get_boolean(child, &conf->collect_uptime);
- #else
-       WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-@@ -1247,11 +1659,60 @@ static int varnish_config_instance(const 
oconfig_item_t *ci) /* {{{ */
-     else if (strcasecmp("CollectWorkers", child->key) == 0)
-       cf_util_get_boolean(child, &conf->collect_workers);
-     else if (strcasecmp("CollectVSM", child->key) == 0)
--#if HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-       cf_util_get_boolean(child, &conf->collect_vsm);
- #else
-       WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-               child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectLock", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_lck);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectMempool", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_mempool);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectManagement", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_mgt);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectSMF", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_smf);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectSMF", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_smf);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectVBE", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_vbe);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "v4");
-+#endif
-+    else if (strcasecmp("CollectMSE", child->key) == 0)
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      cf_util_get_boolean(child, &conf->collect_mse);
-+#else
-+      WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.",
-+              child->key, "Plus v4");
- #endif
-     else {
-       WARNING("Varnish plugin: Ignoring unknown "
-@@ -1275,38 +1736,44 @@ static int varnish_config_instance(const 
oconfig_item_t *ci) /* {{{ */
- #endif
-       && !conf->collect_session && !conf->collect_shm && !conf->collect_sms
- #if HAVE_VARNISH_V2
--      && !conf->collect_sma && !conf->collect_sm
-+      && !conf->collect_sm
-+#endif
-+#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      && !conf->collect_sma
- #endif
-       && !conf->collect_struct && !conf->collect_totals
--#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
-+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-       && !conf->collect_uptime
- #endif
-       && !conf->collect_vcl && !conf->collect_workers
--#if HAVE_VARNISH_V4
--      && !conf->collect_vsm
-+#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5
-+      && !conf->collect_vsm && !conf->collect_vbe && !conf->collect_smf &&
-+      !conf->collect_mgt && !conf->collect_lck && !conf->collect_mempool &&
-+      !conf->collect_mse
- #endif
-       ) {
-     WARNING("Varnish plugin: No metric has been configured for "
-             "instance \"%s\". Disabling this instance.",
-             (conf->instance == NULL) ? "localhost" : conf->instance);
-     sfree(conf);
--    return (EINVAL);
-+    return EINVAL;
-   }
- 
--  ssnprintf(callback_name, sizeof(callback_name), "varnish/%s",
--            (conf->instance == NULL) ? "localhost" : conf->instance);
-+  snprintf(callback_name, sizeof(callback_name), "varnish/%s",
-+           (conf->instance == NULL) ? "localhost" : conf->instance);
- 
-   plugin_register_complex_read(
-       /* group = */ "varnish",
-       /* name      = */ callback_name,
-       /* callback  = */ varnish_read,
--      /* interval  = */ 0, &(user_data_t){
--                               .data = conf, .free_func = varnish_config_free,
--                           });
-+      /* interval  = */ 0,
-+      &(user_data_t){
-+          .data = conf, .free_func = varnish_config_free,
-+      });
- 
-   have_instance = 1;
- 
--  return (0);
-+  return 0;
- } /* }}} int varnish_config_instance */
- 
- static int varnish_config(oconfig_item_t *ci) /* {{{ */
-@@ -1323,7 +1790,7 @@ static int varnish_config(oconfig_item_t *ci) /* {{{ */
-     }
-   }
- 
--  return (0);
-+  return 0;
- } /* }}} int varnish_config */
- 
- void module_register(void) /* {{{ */
-@@ -1331,5 +1798,3 @@ void module_register(void) /* {{{ */
-   plugin_register_complex_config("varnish", varnish_config);
-   plugin_register_init("varnish", varnish_init);
- } /* }}} */
--
--/* vim: set sw=8 noet fdm=marker : */

Reply via email to