summaryrefslogtreecommitdiff
path: root/local/README.mib2c
diff options
context:
space:
mode:
Diffstat (limited to 'local/README.mib2c')
-rw-r--r--local/README.mib2c224
1 files changed, 224 insertions, 0 deletions
diff --git a/local/README.mib2c b/local/README.mib2c
new file mode 100644
index 0000000..6b28770
--- /dev/null
+++ b/local/README.mib2c
@@ -0,0 +1,224 @@
+This README describes the ./local/mib2c script.
+
+Author: Derek Simkowiak
+ dereks@kd-dev.com
+ http://www.kd-dev.com
+ (please mail questions to net-snmp-coders@lists.sourceforge.net,
+ not to the author directly. Thanks!)
+
+Date: Wed Jan 20 02:51:06 PST 1999
+-----------------------------------------------------------------------
+mib2c
+
+OVERVIEW
+
+ mib2c is a Perl script that takes a MIB (such as those files found
+in ./mibs/ ) and converts it into C code. That C code can then be used as a
+"template" to implement your MIB. Then, when you are done editing the C
+code and recompiling, the UCD-SNMP agent (snmpd) will support your MIB.
+mib2c takes the place of "MIB Compilers" that come with commercial SNMP
+agents.
+
+
+REQUIREMENTS/INSTALLATION
+
+ mib2c requires the SNMP.pm Perl module. As of this writing the
+latest version of the SNMP.pm module is 1.8.
+
+ The SNMP.pm module can be downloaded from CPAN at
+
+http://www.cpan.org/modules/by-module/SNMP/
+
+ ...the file that you want is probably SNMP-1.8b5.tar.gz .
+If you didn't know that already, most every Perl module can be downloaded
+from CPAN (www.cpan.org). Follow the installation instructions for the
+module.
+
+ NOTE: If you are running Redhat Linux 5.2 (and perhaps other
+versions), you might get the following errors during the "make test" phase
+of the installation of the SNMP.pm module:
+
+[root@olly SNMP-1.8b5]# make test # This is the command...
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib
+-I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 -e 'use Test::Harness
+qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
+t/mib...............ok
+t/session...........FAILED tests 7-8
+ Failed 2/14 tests, 85.71% okay
+t/translate.........ok
+Failed Test Status Wstat Total Fail Failed List of failed
+-------------------------------------------------------------------------------
+t/session.t 14 2 14.29% 7-8
+Failed 1/3 test scripts, 66.67% okay. 2/24 subtests failed, 91.67% okay.
+make: *** [test_dynamic] Error 9
+
+
+ If the "make" went okay, then you can ignore these test failures.
+These indicate you don't have write access to the portions of the mib
+tree that the test script is trying to use. Please don't email the
+UCD-SNMP list with other errors regarding the SNMP.pm module.
+comp.lang.perl.modules is probably the most appropriate spot to
+discuss problems with the SNMP.pm perl module itself. Interelated
+problems between net-snmp and SNMP could be discussed on the net-snmp
+mailing lists though.
+
+
+USAGE
+
+ mib2c takes one argument: an OID. It then traces down that OID
+and generates the template C code. Here is the documentation, from the
+top of the script:
+
+# This program, given an OID reference as an argument, creates some
+# template mib module files to be used with the net-snmp agent. It is
+# far from perfect and will not generate working modules, but it
+# significantly shortens development time by outlining the basic
+# structure.
+#
+# Its up to you to verify what it does and change the default values
+# it returns.
+#
+# You *must* correct the beginning of the var_XXX() function to
+# correctly determine mib ownership of the incoming request.
+
+
+FINDING YOUR MIB
+
+ Before you can specify the OID for your enterprise/MIB on the
+command line, the script needs to be able to find your MIB so that it can
+read it in and generate template code. Joe Marzot (gmarzot@nortelnetworks.com)
+tells us:
+--------------------------------------
+you should read (man mib_api). The default behaviour for mib loading
+from within the perl interface uses the environment variables described
+there. You can also override these and explicitly define mibdirs and
+load modules through the perl/SNMP api.
+
+the easiest thing to do is toss the mibs in /usr/local/share/snmp/mibs
+and set the env. var., MIBS, to 'ALL'.
+--------------------------------------
+
+ I recommend following the last two lines of advice. I simply did
+
+# cp /home/dereks/MY-MIB-FILE.txt /usr/local/share/snmp/mibs/
+# export MIBS=ALL
+
+ ...on my Redhat system (with a BASH shell) and it was able to find
+my MIB just fine.
+
+
+EXAMPLES
+
+ Here are some examples from Wes Hardaker (wjhardaker@ucdavis.edu).
+He's using a C shell. Wes writes:
+--------------------------------------
+Ok, in order to run the thing, you actually need to do something like
+this:
+
+setenv MIBS MY-ITEM-MIB # assumes csh
+mib2c itemNode
+
+Where, "itemNode" should be a node in the mib tree that you want to
+generate C code for. Note, pick small pieces not large ones. Yes, it
+will generate code for the entire mibII tree if you ask it to, in one
+very large mib file.
+
+Examples:
+
+% mib2c interfaces
+outputing to interfaces.c and interfaces.h ...
+ depth: 3
+ Number of Lines Created:
+178 interfaces.c
+84 interfaces.h
+262 total
+Done.
+
+% mib2c mib-2 # Don't ever do this.
+outputing to mib-2.c and mib-2.h ...
+ depth: 5
+ Number of Lines Created:
+2783 mib-2.c
+617 mib-2.h
+3400 total
+Done.
+
+It may have some sorting problems with multiple level mib tree
+branches being generated into one piece of code (reorder the .h file
+structure to be in OID lexical order if needed).
+--------------------------------------
+
+WHAT TO DO WITH THE CODE THAT GETS GENERATED
+
+ You will need to edit your generated code to work with your
+hardware. For instance, if your MIB is for a refrigerator, you will need
+to write the code that talks to the refridgerator (through the serial
+port, maybe?) in Fridge Protocol.
+
+ See the files in ./agent/mibgroup/examples/ and
+./agent/mibgroup/dummy/ for heavily-commented example code. Don't ask me
+questions about this stuff--I'm just now figuring it out myself...
+
+ [NOTE: If anyone out there has tips about necessary options to
+./configure, or re-compiling snmpd with custom MIB support, please add
+them here...]
+
+WARNING
+
+ As of this writing, the mib2c compiler is a bit outdated and needs
+some work. Wes writes:
+--------------------------------------
+It already needs changing, because the architecture has changed in the
+3.6 line (though its backwards compatible, I'd prefer to generate
+code from newer models than older ones).
+--------------------------------------
+ When I asked him to elaborate on the new 3.6 archictecture, all I
+got was:
+--------------------------------------
+It hopefully will be in the new documentation about mib module api
+that Dave Shield is putting together (which is also currently wrong,
+for that matter)...
+--------------------------------------
+ ...so I don't know what the hell he's talking about.
+
+
+SOME ERRORS AND THEIR MEANING
+
+ If you get a large number of errors that look like:
+
+[...]
+unknown type: INTEGER for prIndex
+unknown type: OCTETSTR for prNames
+unknown type: INTEGER for prMin
+[...]
+
+ ...then you are trying to use an old version of the mib2c script
+that does not support the SNMP.pm module version 1.8. Get the latest
+version of the script.
+
+ If you get the error
+
+Couldn't find mib reference: myEnterpriseOID
+
+ ...when you know that it should be finding your MIB file(s), then
+you forgot to put the word "END" at the very end of your MIB. (Uh...I'm
+not speaking from experience here. Really.)
+
+ACKNOWLEGMENTS
+
+ Many thanks to the people on the UCD-SNMP mailing list
+(net-snmp-users@lists.sourceforge.net). In particular, many thanks to
+
+Wes Hardaker <wjhardaker@ucdavis.edu>
+Ken McNamara <conmara@tcon.net>
+Joe Marzot <gmarzot@nortelnetworks.com>
+
+ ...since about half this document is just cut'n'pasted from emails
+they sent me.
+
+ Good luck with your project.
+
+Derek Simkowiak
+dereks@kd-dev.com
+http://www.kd-dev.com
+