#!@@GOODSH@@
# -*- sh -*-

: << =cut

=head1 NAME

netstat - Plugin to monitor network connections

=head1 APPLICABLE SYSTEMS

Cygwin on NT-based Windows.

=head1 CONFIGURATION

No configuration

=head1 AUTHOR

Erik Inge Bolsų <knan-munin@anduin.net>

Based on node.d.linux/netstat, by unknown author.

=head1 LICENSE

GPLv2

=head1 MAGIC MARKERS

 #%# family=auto
 #%# capabilities=autoconf

=cut

. $MUNIN_LIBDIR/plugins/plugin.sh

if [ "$1" = "autoconf" ]; then
	if ( netstat -s 2>/dev/null >/dev/null ); then
		echo yes
		exit 0
	else
		if [ $? -eq 127 ]
		then
			echo "no (netstat program not found)"
			exit 0
		else
			echo no
			exit 0
		fi
	fi
fi

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

	echo 'graph_title Netstat'
	echo 'graph_args --base 1000 --logarithmic'
	echo 'graph_vlabel active connections'
	echo 'graph_category network'
	echo 'graph_period second'
	echo 'graph_info This graph shows the TCP activity of all the network interfaces combined.'
	echo 'active.label active'
	echo 'active.type DERIVE'
	echo 'active.max 50000'
	echo 'active.min 0'
	echo 'active.info The number of active TCP openings per second.'
	print_warning active
	print_critical active
	echo 'passive.label passive'
	echo 'passive.type DERIVE'
	echo 'passive.max 50000'
	echo 'passive.min 0'
	echo 'passive.info The number of passive TCP openings per second.'
	print_warning passive
	print_critical passive
	echo 'failed.label failed'
	echo 'failed.type DERIVE'
	echo 'failed.max 50000'
	echo 'failed.min 0'
	echo 'failed.info The number of failed TCP connection attempts per second.'
	print_warning failed
	print_critical failed
	echo 'resets.label resets'
	echo 'resets.type DERIVE'
	echo 'resets.max 50000'
	echo 'resets.min 0'
	echo 'resets.info The number of TCP connection resets.'
	print_warning resets
	print_critical resets
	echo 'established.label established'
	echo 'established.type GAUGE'
	echo 'established.max 50000'
	echo 'established.info The number of currently open connections.'
	print_warning established
	print_critical established
	exit 0
fi

netstat -s | awk '
/Active Opens/                 { print "active.value " $4 }
/Passive Opens/                { print "passive.value " $4 }
/Failed Connection Attempts/   { print "failed.value " $5 }
/Reset Connections/            { print "resets.value " $4 }
/Current Connections/          { print "established.value " $4 }'
