HOST-RESOURCES-MIB is in -CURRENT (20-01-2006)
Harti submitted the code for this BSNMP module a few days ago. Many thanks to PhilipPaeps & HartiBrandt for their work in polishing and fixing the code in preparation for -CURRENT. There are still known & unknown issues to be fixed - if you have a chance to test it please report any bug/ suggestion / anything else to the usual mailing lists and/or to victor.cruceru[no_spam_at]gmail.com.
Enjoy!
BSNMP patch for 3 new MIBs (14-09-2005)
It is available from here: bsnmp.diff.tgz
It was made against the CVS HEAD of 13-09-2005 and it is an unified diff.
The patched code should be functional on 5.4-* and 6.0-*
Testing is needed, see Caveats below.
Feel free to report any issue to victor.cruceru[no_spam_at]gmail.com
or to the freebsd-hackers mailing list. Thanks!
What's new
1) An almost complete implementation for HOST-RESOURCES-MIB ( http://www.ietf.org/rfc/rfc2790.txt )
2) A quite complete implementation for the new TCP-MIB with combined IPv4 & IPv6 support. ( http://www.ietf.org/rfc/rfc4022.txt ). This new TCP-MIB is 100% backward compatible with the old one (v4 only). It adds a clear distinction between active and passive tcp endpoints and for each endpoint info about the process it belongs to.
3) A quite complete implementation for the new UDP-MIB with combined IPv4 & IPv6 support. ( http://www.ietf.org/rfc/rfc4113.txt ). This new UDP-MIB is 100% backward compatible with the old one (v4 only) and it adds multiple instances support for the UDP endpoints and for each endpoint info about the processes that use it.
How to use it
You must first do a checkout of the original sources from the CVS. Let's suppose you are going to do this in a directory named TESTING in your home (in order to keep your systems clean against any possible mistakes):
cd ~/TESTING
The directories you have to co from the FreeBSD CVS are:
src/contrib/bsnmp
src/lib/libbegemot
src/lib/libbsnmp
src/usr.sbin/bsnmpd
The patch can be applied this way:
patch -u -p1 < ~/bsnmp.diff
from the TESTING directory.
In order to build it, you may need to copy a Makefile.inc under the new tree: cp /usr/src/usr.sbin/Makefile.inc ~/TESTING/src/usr.sbin/
Then build and install it: from ~/TESTING/src/lib/libbsnmp/ and ~/TESTING/src/usr.sbin/bsnmpd/ In the second directory above you may need to supply -DNO_ATM flag at make.
For a configuration file see ~/TESTING/src/contrib/bsnmp/snmpd/snmpd.config after patching.
For testing the new {TCP, UDP}-MIB you are going to need a SNMP client supporting the INET-ADDRESS-MIB TCs. Net-snmp-5.2.1 is just fine.
A Walk
In order to check what's really inside you can use the Net-SNMP client. It is easy to build the Net-SNMP package for FreeBSD. I've prepared an archive containing exactly the MIB files you need to walk these new MIBs ( from your favorite SNMP client, not only with Net-SNMP ). While for HOST-RESOURCES-MIB the MIB files supplied with the Net-SNMP 5.2.1 are enough, for both TCP and UDP MIBs you need some 3 new MIB files which are missing in the Net-SNMP 5.2.1. You can download this MIB archive from here: BMIBS.tgz
If you extract the directory BMIBS into you home, then you can walk the MIBs using a sequence like this one below.
For HOST-RESOURCES-MIB tree:
snmpwalk -v 2c -c public -M ~/BMIBS -m ALL <bsnmpd_ip> host
For one of its table, SWRunTable:
snmpwalk -v 2c -c public -M ~/BMIBS -m ALL <bsnmpd_ip> SWRunTable
For the TCP-MIB tree:
snmpwalk -v 2c -c public -M ~/BMIBS -m ALL <bsnmpd_ip> tcp
and for UDP-MIB tree:
snmpwalk -v 2c -c public -M ~/BMIBS -m ALL <bsnmpd_ip> udp
where:
<bsnmpd_ip> is the ip where the bsnmpd agent is running,
host ( tcp, udp ) is the top OID for each of these MIBs,
"-v 2c" is used to specify the SNMP version (we support only 1 and 2c),
"-c public" is the community name (must be the same as that one
configured in the bsnmpd config file, but 'public' is usually used),
"-M" and "-m" are used to control from where and which MIBs/ OIDs are imported.
Caveats
The new BSNMP modules were tested only on i386 without SMP. So we need more testing under:
1) 64-bit architectures
2) SMP
3) Big endian architectures