FreeBSD 6.2 + my gensnmptree issue

Jeff Royle lists at
Wed Oct 17 12:21:28 PDT 2007

Hartmut Brandt wrote:
> On Wed, 17 Oct 2007, Jeff Royle wrote:
> JR>I am having an issue which is most likely my lack of understanding and not a
> JR>problem with 6.2 itself.
> JR>
> JR>The system is running 6.2-RELEASE and I use bsnmpd.  Here is the uname
> JR>output.
> JR>
> JR>FreeBSD lucky.orisit 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Wed Oct 10 10:40:51
> JR>EDT 2007
> JR>
> JR>What I am trying to do is get bsnmp to respond to new MIBs, specifically
> JR>
> JR>After reading the manpages for bsnmp and gensnmptree I believe gensnmptree is
> JR>the command I need to use.
> JR>
> JR>This is where I get into trouble.   The gensnmptree command doesn't give me
> JR>any results no matter what I do.  Even using a bug report example of
> JR>gensnmptree -e sysName gives me no results.
> JR>
> JR>So I proceeded to do some more google searching and noticed gensnmpdef was
> JR>referenced several times as the program which may be what I need to use.
> JR>
> JR>I found the code for this in /usr/src/contrib/bsnmp/gensnmpdef without a
> JR>makefile.   There is no gensnmpdef in /usr/sbin on the system but it is in
> JR>the /usr/ports/net-mgt/bsnmpd/pkg-plist.
> JR>
> JR>So I guess I need some guidance.   Can I use gensnmptree to get this MIB into
> JR>the bsnmp system? If so how is this done? -or- Is there a problem with the
> JR>6.2 release for gensnmpdef and that is in fact the program I am suppose to be
> JR>using?
> JR>
> JR>Any assistance would be appreciated.
> Well, yes that would be the tool, but things are more complicated. BSNMP 
> uses a special file format (the .def files) to automatically create some 
> tables and #defines when you implement a MIB. If you invent your own MIB, 
> you normally write the .def file from scratch. It basically contains the 
> same info as the MIB file, but in a less baroque and more machine-parsable 
> format. If you're going to implement a MIB for which you already have a 
> MIB file you can shorten the time to write the .def file by feeding the 
> MIB file into gensnmpdef. It will create you an initial .def file, which, 
> in most cases, you have to edit, though.
> But having the .def file is only the start of implementing. Because then 
> you must write the action routines that actually implement the MIB 
> behaviour. You might look under /usr/src/contrib/bsnmp/snmp_mibII. Here 
> you find an example .def file the contents of which you might find 
> familiar. The .c files there implement the semantic of the standard MIB-2.
> gensnmpdef is not built automatically, because it requires libsmi which 
> you need to install from ports.

This explains much about what I was confused with.  Thank you for the 
quick response.

It was fairly simple to get the port installed and get 
/usr/src/contrib/bsnmp/gensnmpdef compiled and installed.

 From there I went and built my ucd_tree.def file using gensnmpdef which 
I had to edit as you said.

I see after doing this and looking into the examples you suggested this 
would be a bit more involved then I initially thought.   I was able to 
generate some .c/.h files using gensnmptree but from there the legwork 
goes beyond me a bit.  Looks like I have to look into this deeper.

I do have one remaining question.   How is the gensnmptree -l command 
used exactly?  Something like cat ucd_tree.c | gensnmptree -l ?

More information about the freebsd-questions mailing list