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

FreeBSD Manual Pages

  
 
  

home | help
MIB2C.CONF(5)			    Net-SNMP			   MIB2C.CONF(5)

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

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  specifications,
	    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  out-
	    puts.

     @pop@  pop  up  the process() stack one level. Use after a @push@ to return
	    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 ta-
	    bles

     @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  in-
	    ternal  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  ex-
	    ternal  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  in-
	    dexes  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 noti-
	    fications

     @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-expansion,
	    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  ex-
	    pressions 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 in-
	    terpereted	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  contained
	    part  until  appropriate  @end@  is  reached.   If the expression is
	    false, the next @elsif expression@ expression (if it exists) 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 expression@, @el-
	    sif 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  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  normal
	    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  property  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".   Addi-
     tional  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 after 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.ucall 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',  'creat-
	    able',  'lastchange', 'storagetype' and 'rowstatus' can also be used
	    with table variables to indicate whether it contains writable,  cre-
	    atable, 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)

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

home | help