diff options
Diffstat (limited to 'man/mib2c.1.def')
-rw-r--r-- | man/mib2c.1.def | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/man/mib2c.1.def b/man/mib2c.1.def new file mode 100644 index 0000000..b9c1134 --- /dev/null +++ b/man/mib2c.1.def @@ -0,0 +1,227 @@ +.\" Portions of this file are subject to the following copyright. See +.\" the Net-SNMP's COPYING file for more details and other copyrights +.\" that may apply: +.\" /*********************************************************** +.\" Portions of this file are copyrighted by: +.\" Copyright Copyright 2003 Sun Microsystems, Inc. All rights reserved. +.\" Use is subject to license terms specified in the COPYING file +.\" distributed with the Net-SNMP package. +.\" ******************************************************************/ +.TH MIB2C 1 "05 Apr 2010" VVERSIONINFO "Net-SNMP" +.SH NAME +mib2c -- generate template code for extending the agent +.SH SYNOPSIS +.B mib2c +[-h] -c CONFIGFILE [-I PATH] [-f OUTNAME] [-i][-s][-q][-S VAR=VAL] MIBNODE +.SH DESCRIPTION +The mib2c tool is designed to take a portion of the MIB tree (as defined +by a MIB file) and generate the template C code necessary to implement +the relevant management objects within it. +.PP +In order to implement a new MIB module, three files are necessary: +.PP +.br +- MIB definition file +.br +- C header file +.br +- C implementation file. +.PP +The mib2c tool uses the MIB definition file to produce the two C +code files. Thus, mib2c generates a template that you can edit +to add logic necessary to obtain information from the +operating system or application to complete the module. +.PP +MIBNODE is the top level mib node you want to generate code for. +You must give mib2c a mib node (e.g. ifTable) on the command line, +not a mib file. This is the single most common mistake. +.PP +The mib2c tool accepts both SMIv1 and SMIv2 MIBs. +.PP +mib2c needs to be able to find and load a MIB file in order to generate +C code for the MIB. To enable mib2c to find the MIB file, set the +MIBS environment variable to include the MIB file you are using. +An example of setting this environment variable is: +.PP + MIBS=+NET-SNMP-TUTORIAL-MIB +.PP + or +.PP + MIBS=ALL +.PP +The first example ensures that mib2c finds the NET-SNMP-TUTORIAL-MIB +mib, in addition to the default MIB modules. The default list of MIB +modules is set when the suite is first configured and built and +basically corresponds to the list of modules that the agent supports. +The second example ensures that mib2c finds all MIBs in the search +location for MIB files. The default search location for MIB files is +DATADIR/snmp/mibs. This search location can be modified +by the MIBDIRS environment variable. +.PP +Both the MIB files to be loaded and the MIB file search location can +also be configured in the snmp.conf file. Please see snmp.conf(5) for +more information. +.PP +The generated *.c and *.h files will be created in the current working +directory. +.SH "OPTIONS" +.TP +.BI -h +Display a help message. +.TP +.BI -c " CONFIGFILE" +Use CONFIGFILE when generating code. These files will be searched for +first in the current directory and then in the DATADIR directory +(which is where the default mib2c configuration files can be found). +Running mib2c without the -c CONFIGFILE option will display +a description of the valid values for CONFIGFILE, that is, +the available config files, including new ones that you might +author. +.IP +For example, +.IP +% mib2c ifTable +.IP +will display a description of the currently available values +for CONFIGFILE. +.IP +The following values are supported for CONFIGFILE: +.IP +mib2c.mfd.conf +.br +mib2c.scalar.conf +.br +mib2c.int_watch.conf +.br +mib2c.iterate.conf +.br +mib2c.create-dataset.conf +.br +mib2c.array-user.conf +.br +mib2c.column_defines.conf +.br +mib2c.column_enums.conf +.IP +GENERATING CODE FOR SCALAR OBJECTS: +.IP +If you're writing code for some scalars, run: + + mib2c -c mib2c.scalar.conf MIBNODE +.IP +If you want to magically "tie" integer variables to integer +scalars, use: + + mib2c -c mib2c.int_watch.conf MIBNODE +.IP +GENERATING CODE FOR TABLES: + +The recommended configuration file for tables is the MIBs for +Dummies, or MFD, configuration file. It hides as much of the SNMP +details as possible, generating small, easy to understand functions. +It is also the most flexible and well documented configuration file. +See the agent/mibgroup/if-mib/ifTable/ifTable*.c files for an example: + + mib2c -c mib2c.mfd.conf MIBNODE + +If your table data is kept somewhere else (e.g. it's in the +kernel and not in the memory of the agent itself) and you need to +"iterate" over it to find the right data for the SNMP row being +accessed. See the agent/mibgroup/mibII/vacm_context.c file for an +example: + + mib2c -c mib2c.iterate.conf MIBNODE + +If your table data is kept in the agent (i.e. it's not located in +an external source) and is purely data driven (i.e. you do not need +to perform any work when a set occurs). See the +agent/mibgroup/examples/data_set.c file for an example of such a +table: + + mib2c -c mib2c.create-dataset.conf MIBNODE + +If your table data is kept in the agent (i.e. it's not located in +an external source), and you can keep your data sorted by the table +index but you do need to perform work when a set occurs: + + mib2c -c mib2c.array-user.conf MIBNODE + +GENERATING HEADER FILE DEFINITIONS + +To generate just a header with a define for each column number in +your table: + + mib2c -c mib2c.column_defines.conf MIBNODE + +To generate just a header with a define for each enum for any +column containing enums: + + mib2c -c mib2c.column_enums.conf MIBNODE + + GENERATING CODE FOR THE 4.X LINE OF CODE (THE OLDER API) + + mib2c -c mib2c.old-api.conf MIBNODE +.TP +.BI -I PATH +Search for configuration files in PATH. Multiple paths can be +specified using multiple -I switches or by using one with a comma +separated list of paths in it. +.TP +.BI -f " OUTNAME" +Places the output code into OUTNAME.c and OUTNAME.h. Normally, mib2c +will place the output code into files which correspond to the table +names it is generating code for, which is probably what you want anyway. +.TP +.BI -i +Do not run indent on the resulting code. +.TP +.BI -s +Do not look for MIBNODE.sed and run sed on the resulting code. This +is useful to shorten long mib variable names in the code. +.TP +.BI -q +Run in "quiet" mode, which minimizes the status messages +mib2c generates. +.TP +.BI -S VAR=VAL +Preset a variable VAR, in the mib2c.*.conf file, to the value +VAL. None of the existing mib2c configuration files +(mib2c.*.conf) currently makes use of this feature, however, +so this option should be considered available only for future use. +.SH EXAMPLES +.PP +The following generates C template code for the header and implementation +files to implement UCD-DEMO-MIB::ucdDemoPublic. +.IP +% mib2c -c mib2c.scalar.conf ucdDemoPublic +.br +writing to ucdDemoPublic.h +.br +writing to ucdDemoPublic.c +.br +running indent on ucdDemoPublic.h +.br +running indent on ucdDemoPublic.c +.PP +The resulting ucdDemoPublic.c and ucdDemoPublic.h files are +generated the current working directory. +.PP +The following generates C template code for the header and implementation +files for the module to implement TCP-MIB::tcpConnTable. +.IP +% mib2c -c mib2c.iterate.conf tcpConnTable +.br +writing to tcpConnTable.h +.br +writing to tcpConnTable.c +.br +running indent on tcpConnTable.h +.br +running indent on tcpConnTable.c +.PP +The resulting tcpConnTable.c and tcpConnTable.h files are generated +in the current working directory. +.PP +.SH SEE ALSO +.PP +snmpcmd(1), snmp.conf(5) |