BSNMP - mini SNMP daemon

For a couple of projects that involved controlling software on a couple of machines from a single controlling machine I decided to use SNMP. After looking at several available SNMP implementations I started to implement my own SNMP stuff, because what was available was not really what I needed (for several reasons). The result is bsnmp.

Bsnmp consists of the following pieces:

The bsnmpd daemon implements just the bare minimum that is needed for such a daemon: the system group, parts of the SNMP group and a private tree that does the following: All real functionality is implemented via loadable modules and hence the daemon can be used for remote-control functions that have nothing to do with network management.

Examples

Snmp_mibII implements much of the standard MIB-II tree. The source of this module is part of the bsnmp distribution.

Snmp_netgraph allows read-only access to the netgraph sub-system in the FreeBSD kernel. The source of this module is part of FreeBSD.

Several modules exists that implement different functions of the ATM protocol stack. Snmp_ilmi implements the ILMI protocol as well as management of local UNI instances (creation, destroy, change). Snmp_atmroute implements the management of ATM routes for an ATM switch. Snmp_switch on top of these two modules implements the call control functionality of an ATM switch.

Snmp_watm is used to control a wireless ATM simulator for satellite links. The controlling application for the simulator runs on a remote machine and communicates with the simulator via SNMP.

Portability

As of version 1.11 the full version of bsnmp runs only on FreeBSD. Most parts may be built on Linux (last I tried was a year ago). The snmp_mibII port for Linux is complicated by the fact that Linux misses usable interfaces between the kernel networking stuff and userland.

Source

A stable version of bsnmp is available in the FreeBSD base system under src/contrib/bsnmp. The most actual source can be found here. Note that in order to build you need also either a libisc (you may get this from earlier bind sources), or better libbegemot.