Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MIB2C(1)			    Net-SNMP				MIB2C(1)

NAME
     mib2c -- generate template code for extending the agent

SYNOPSIS
     mib2c  [-h]  -c  CONFIGFILE [-I PATH] [-f OUTNAME] [-i][-s][-q][-S VAR=VAL]
     MIBNODE

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.

     In order to implement a new MIB module, three files are necessary:

     - MIB definition file
     - C header file
     - C implementation file.

     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 nec-
     essary to obtain information from the operating system  or  application  to
     complete the module.

     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.

     The mib2c tool accepts both SMIv1 and SMIv2 MIBs.

     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  envi-
     ronment variable to include the MIB file you are using.  An example of set-
     ting this environment variable is:

	MIBS=+NET-SNMP-TUTORIAL-MIB

	or

	MIBS=ALL

     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  /usr/local/share/snmp/mibs.  This  search
     location can be modified by the MIBDIRS environment variable.

     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  in-
     formation.

     The  generated *.c and *.h files will be created in the current working di-
     rectory.

OPTIONS
     -h     Display a help message.

     -c CONFIGFILE
	    Use CONFIGFILE when generating code.  These files will  be	searched
	    for  first in the current directory and then in the /usr/local/share
	    directory (which is where the default mib2c configuration files  can
	    be found).	Running mib2c without the -c CONFIGFILE option will dis-
	    play  a description of the valid values for CONFIGFILE, that is, the
	    available config files, including new ones that you might author.

	    For example,

	    % mib2c ifTable

	    will display a description of the  currently  available  values  for
	    CONFIGFILE.

	    The following values are supported for CONFIGFILE:

	    mib2c.mfd.conf
	    mib2c.scalar.conf
	    mib2c.int_watch.conf
	    mib2c.iterate.conf
	    mib2c.create-dataset.conf
	    mib2c.array-user.conf
	    mib2c.column_defines.conf
	    mib2c.column_enums.conf

	    GENERATING CODE FOR SCALAR OBJECTS:

	    If you're writing code for some scalars, run:

		 mib2c -c mib2c.scalar.conf MIBNODE

	    If you want to magically "tie" integer variables to integer scalars,
	    use:

		 mib2c -c mib2c.int_watch.conf MIBNODE

	    GENERATING CODE FOR TABLES:

	    The  recommended  configuration file for tables is the MIBs for Dum-
	    mies, or MFD, configuration file. It hides as much of the  SNMP  de-
	    tails  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  exam-
	    ple:

		    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/exam-
	    ples/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 in-
	    dex 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

     -IPATH
	    Search for configuration files in PATH.  Multiple paths can be spec-
	    ified  using multiple -I switches or by using one with a comma sepa-
	    rated list of paths in it.

     -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.

     -i     Do not run indent on the resulting code.

     -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.

     -q     Run  in "quiet" mode, which minimizes the status messages mib2c gen-
	    erates.

     -SVAR=VAL
	    Preset a variable VAR, in the mib2c.*.conf file, to the  value  VAL.
	    None  of  the existing mib2c configuration files (mib2c.*.conf) cur-
	    rently makes use of this feature, however, so this option should  be
	    considered available only for future use.

EXAMPLES
     The  following  generates C template code for the header and implementation
     files to implement UCD-DEMO-MIB::ucdDemoPublic.

	    % mib2c -c mib2c.scalar.conf ucdDemoPublic
	    writing to ucdDemoPublic.h
	    writing to ucdDemoPublic.c
	    running indent on ucdDemoPublic.h
	    running indent on ucdDemoPublic.c

     The resulting ucdDemoPublic.c and ucdDemoPublic.h files  are  generated  in
     the current working directory.

     The  following  generates C template code for the header and implementation
     files  for the module to implement TCP-MIB::tcpConnTable.

	    % mib2c -c mib2c.iterate.conf tcpConnTable
	    writing to tcpConnTable.h
	    writing to tcpConnTable.c
	    running indent on tcpConnTable.h
	    running indent on tcpConnTable.c

     The resulting tcpConnTable.c and tcpConnTable.h files are generated in  the
     current working directory.

SEE ALSO
     snmpcmd(1), snmp.conf(5)

V5.9.5.2			   05 Apr 2010				MIB2C(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mib2c&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help