#!/bin/sh
#
# Wildcard-plugin to monitor network interfaces. To monitor an
# interface, link if_<interface> to this file. E.g.
#
#    ln -s /usr/share/munin/plugins/if_ /etc/munin/node.d/if_eth0
#
# ...will monitor eth0.
#
# Any device found in /usr/bin/kstat can be monitored.
#
# Magic markers (optional - used by munin-config and some installation
# scripts):
#
#%# family=auto
#%# capabilities=autoconf suggest


INTERFACE=`basename $0 | sed 's/^if_//g'`

if [ "$1" = "autoconf" ]; then
	if [ -x /usr/bin/kstat ]; then
		echo yes
		exit 0
	else
		echo "no (/usr/bin/kstat not found)"
		exit 1
	fi
fi

if [ "$1" = "suggest" ]; then
	if [ -x /usr/bin/kstat ]; then
		kstat -p -s '/^rbytes$/' | awk -F: '{ print $3 }'
		exit 0
	else
		exit 1
	fi
fi

if [ "$1" = "config" ]; then

	echo "graph_order rbytes obytes" 
	echo "graph_title $INTERFACE traffic"
	echo 'graph_args --base 1000'
	echo 'graph_vlabel bits per ${graph_period} in (-) / out (+)'
	echo 'graph_category network'
	echo 'rbytes.label received'
        echo 'rbytes.type COUNTER'
        echo 'rbytes.max 2000000000'
        echo 'rbytes.graph no'
        echo 'rbytes.cdef rbytes,8,*'
        echo 'obytes.label bps'
	echo 'obytes.type COUNTER'
	echo 'obytes.negative rbytes'
	echo 'obytes.cdef obytes,8,*'
        echo 'obytes.max 2000000000'
	exit 0
fi;

kstat -p -n $INTERFACE -s '/^[ro]bytes$/' | awk -F: '
{
	split($4, four, "\t")
	print four[1] ".value", four[2]
}'
