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.


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.


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.


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.