MIB2C.CONF(5)



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  cur-
              rent 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-notifi-
              cations 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
              evaluated.

       @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 expres-
              sion@, @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 af-
              fect current files opened.

       @include FILE@
              Sources the contents of FILE as a mib2c  file  and  appends  its
              output 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  exam-
       ple.  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)

Man(1) output converted with man2html
list of all man pages