dwww Home | Manual pages | Find package

MIB2C.CONF(5)                       Net-SNMP                      MIB2C.CONF(5)

NAME
       mib2c.conf  -  How to write mib2c.conf files to do ANYTHING based on MIB
       input.

SYNOPSIS
       % cat > mib2c.test.conf  << EOF @foreach $t table@
         Starting table $t
         @foreach $c column@
           echo $t has column $c which has a syntax of $c.syntax
         @end@

       @end@ EOF

       % mib2c -c mib2c.test.conf internet

DESCRIPTION
       The mib2c.conf script language is a MIB-particular language designed  to
       easily  process  MIB  nodes  in ways that you want.  mib2c is a misnomer
       (for historical purposes), because you can produce anything (not just  C
       code).   Look  in  the Net-SNMP "local" directory for a bunch of example
       mib2c.*.conf files and behold the power before you.

COMMANDS
       All commands within mib2c.conf files are embraced by @ signs.   Anything
       with  an  @ sign at the front and back of the line is generally supposed
       to be a mib2c specific command.  These are detailed here:

       @open FILE@
              writes generated output to FILE note  that  for  file  specifica-
              tions, opening '-' will print to stdout.

       @append FILE@
              appends the given FILE

       @close FILE@
              closes the given FILE

       @push@ save the current outputs, then clear outputs. Use with @open@ and
              @pop@  to  write  to  a new file without interfering with current
              outputs.

       @pop@  pop up the process() stack one level. Use after a @push@  to  re-
              turn to the previous set of open files.

       @foreach $VAR scalar@
              repeat  iterate  over  code until @end@ setting $VAR to all known
              scalars

       @foreach $VAR table@
              repeat iterate over code until @end@ setting $VAR  to  all  known
              tables

       @foreach $VAR column@
              repeat  iterate  over  code until @end@ setting $VAR to all known
              columns within a given table.   Obviously  this  must  be  called
              within a foreach-table clause.

       @foreach $VAR nonindex@
              repeat  iterate  over  code until @end@ setting $VAR to all known
              non-index columns within a given table.  Obviously this  must  be
              called within a foreach-table clause.

       @foreach $VAR internalindex@
              repeat  iterate  over  code until @end@ setting $VAR to all known
              internal index columns within a given table.  Obviously this must
              be called within a foreach-table clause.

       @foreach $VAR externalindex@
              repeat iterate over code until @end@ setting $VAR  to  all  known
              external index columns within a given table.  Obviously this must
              be called within a foreach-table clause.

       @foreach $VAR index@
              repeat  iterate  over  code until @end@ setting $VAR to all known
              indexes within a given table.   Obviously  this  must  be  called
              within a foreach-table clause.

       @foreach $VAR notifications@
              repeat  iterate  over  code until @end@ setting $VAR to all known
              notifications

       @foreach $VAR varbinds@
              repeat iterate over code until @end@ setting $VAR  to  all  known
              varbinds Obviously this must be called within a foreach-notifica-
              tions clause.

       @foreach $LABEL, $VALUE enum@
              repeat iterate over code until @end@ setting $LABEL and $VALUE to
              the label and values from the enum list.

       @foreach $RANGE_START, $RANGE_END range NODE@
              repeat  iterate  over  code  until @end@ setting $RANGE_START and
              $RANGE_END to the legal accepted range set for a given mib NODE.

       @foreach $var stuff a b c d@
              repeat iterate over values a, b, c,  d  as  assigned  generically
              (ie,  the values are taken straight from the list with no mib-ex-
              pansion, etc).

       @while expression@
              repeat iterate over code until the expression is false

       @eval $VAR = expression@
              evaluates expression and assigns the results to  $VAR.   This  is
              not  a  full  perl eval, but sort of a ""psuedo"" eval useful for
              simple expressions while keeping the same  variable  name  space.
              See below for a full-blown export to perl.

       @perleval STUFF@
              evaluates  STUFF directly in perl.  Note that all mib2c variables
              interpereted within .conf files are in  $vars{NAME}  and  that  a
              warning  will  be  printed  if STUFF does not return 0. (adding a
              'return 0;' at the end of STUFF is a workaround.

       @startperl@

       @endperl@
              treats everything between these tags as perl code, and  evaluates
              it.

       @next@ restart foreach; should only be used inside a conditional.  skips
              out of current conditional, then continues to skip to end for the
              current foreach clause.

       @if expression@
              evaluates  expression,  and  if expression is true processes con-
              tained part until appropriate @end@ is reached.  If  the  expres-
              sion  is false, the next @elsif expression@ expression (if it ex-
              ists) will be evaluated, until an expression is true. If no  such
              expression exists and an @else@ clause is found, it will be eval-
              uated.

       @ifconf file@
              If  the specified file can be found in the conf file search path,
              and if found processes contained part until an appropriate  @end@
              is  found.  As with a regular @if expression@, @elsif expression@
              and @else@ can be used.

       @ifdir dir@
              If the specified directory exists, process contained  part  until
              an appropriate @end@ is found. As with a regular @if expression@,
              @elsif expression@ and @else@ can be used.

       @define NAME@

       @enddefine@
              Memorizes  ""stuff""  between  the  define and enddefine tags for
              later calling as NAME by @calldefine NAME@.

       @calldefine NAME@
              Executes stuff previously memorized as NAME.

       @printf "expression" stuff1, stuff2, ...@
              Like all the other printf's you know and love.

       @run FILE@
              Sources the contents of FILE as a mib2c file, but does not affect
              current files opened.

       @include FILE@
              Sources the contents of FILE as a mib2c file and appends its out-
              put to the current output.

       @prompt $var QUESTION@
              Presents the user with QUESTION, expects a response and  puts  it
              in $var

       @print STUFF@
              Prints  stuff directly to the users screen (ie, not to where nor-
              mal mib2c output goes)

       @quit@ Bail out (silently)

       @exit@ Bail out!

VARIABLES
       Variables in the mib2c language look very similar to perl variables,  in
       that they start with a "$".  They can be used for anything you want, but
       most  typically  they'll hold mib node names being processed by @foreach
       ...@ clauses.

       They also have a special properties when they are a mib node, such  that
       adding  special  suffixes  to  them will allow them to be interpreted in
       some fashion.  The easiest way to understand this is through an example.
       If the variable 'x' contained the word 'ifType' then some magical things
       happen.  In mib2c output,  anytime  $x  is  seen  it  is  replaced  with
       "ifType".   Additional suffixes can be used to get other aspects of that
       mib node though.  If $x.objectID is seen, it'll be replaced by  the  OID
       for  ifType: ".1.3.6.1.2.1.2.2.1.3".  Other suffixes that can appear af-
       ter a dot are listed below.

       One last thing: you can use things like $vartext immediately  ending  in
       some other text, you can use {}s to get proper expansion of only part of
       the  mib2c  input.   IE, $xtext will produce "$xtext", but ${x}text will
       produce "ifTypetext" instead.

       $var.uc
              all upper case version of $var

       $var.objectID
              dotted, fully-qualified, and numeric OID

       $var.commaoid
              comma separated numeric OID for array initialization

       $var.oidlength
              length of the oid

       $var.subid
              last number component of oid

       $var.module
              MIB name that the object comes from

       $var.parent
              contains the label of the parent node of $var.

       $var.isscalar
              returns 1 if var contains the name of a scalar

       $var.iscolumn
              returns 1 if var contains the name of a column

       $var.children
              returns 1 if var has children

       $var.perltype
              node's perl SYNTAX ($SNMP::MIB{node}{'syntax'})

       $var.type
              node's ASN_XXX type (Net-SNMP specific #define)

       $var.decl
              C data type (char, u_long, ...)

       $var.readable
              1 if an object is readable, 0 if not

       $var.settable
              1 if an object is writable, 0 if not

       $var.creatable
              1 if a column object can be created as part of a new  row,  0  if
              not

       $var.noaccess
              1 if not-accessible, 0 if not

       $var.accessible
              1 if accessible, 0 if not

       $var.storagetype
              1 if an object is a StorageType object, 0 if not

       $var.rowstatus
              1  if an object is a RowStatus object, 0 if not 'settable', 'cre-
              atable', 'lastchange', 'storagetype' and 'rowstatus' can also  be
              used  with  table  variables  to  indicate  whether  it  contains
              writable, creatable, LastChange, StorageType or RowStatus  column
              objects

       $var.hasdefval
              returns 1 if var has a DEFVAL clause

       $var.defval
              node's DEFVAL

       $var.hashint
              returns 1 if var has a HINT clause

       $var.hint
              node's HINT

       $var.ranges
              returns 1 if var has a value range defined

       $var.enums
              returns 1 if var has enums defined for it.

       $var.access
              node's access type

       $var.status
              node's status

       $var.syntax
              node's syntax

       $var.reference
              node's reference

       $var.description
              node's description

SEE ALSO
       mib2c(1)

VVERSIONINFO                      28 Apr 2004                     MIB2C.CONF(5)

Generated by dwww version 1.16 on Sat Oct 3 08:36:00 CEST 2026.