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

FreeBSD Manual Pages


home | help
SNMP::MIB::Compiler(3)User Contributed Perl DocumentatioSNMP::MIB::Compiler(3)

       SNMP::MIB::Compiler - a MIB Compiler supporting SMIv1 and SMIv2

	   use SNMP::MIB::Compiler;

	   my $mib = new SNMP::MIB::Compiler;

	   # search MIBs there...
	   $mib->add_path('./mibs', '/foo/bar/mibs');

	   # possibly using these extensions...
	   $mib->add_extension('', '.mib', '.my');

	   # store the compiled	MIBs there..

	   # only accept SMIv2 MIBs
	   $mib->{'accept_smiv1'} = 0;
	   $mib->{'accept_smiv2'} = 1;

	   # no	debug
	   $mib->{'debug_lexer'}     = 0;
	   $mib->{'debug_recursive'} = 0;

	   # store compiled MIBs into files
	   $mib->{'make_dump'}	= 1;
	   # read compiled MIBs
	   $mib->{'use_dump'}	= 1;
	   # follow IMPORTS clause while compiling
	   $mib->{'do_imports'}	= 1;

	   # load a precompiled	MIB

	   # compile a new MIB

	   print $mib->resolve_oid('ifInOctets'), "\n";
	   print $mib->convert_oid(''), "\n";
	   print $mib->tree('ifMIB');

	   SNMP::MIB::Compiler is a MIB	compiler that fully supports
	   both	SMI(v1)	and SMIv2. This	module can be use to compile
	   MIBs	(recursively or	not) or	load already compiled MIBs for
	   later use.
	   Some	tasks can be performed by the resulting	object such as :

	     - resolution of object names into object identifiers (OIDs).
	       e.g. ifInOctets =>

	     - convertion of OIDs.
	       e.g. =>

	     - drawing MIB trees.
	       e.g. ifTestTable	=> ifTestTable
				       +-- --- ifTestEntry(1)
					   +-- -rw Integer  ifTestId(1)
					   +-- -rw Integer  ifTestStatus(2)
					   +-- -rw ObjectID ifTestType(3)
					   +-- -r- Integer  ifTestResult(4)
					   +-- -r- ObjectID ifTestCode(5)
					   +-- -rw String   ifTestOwner(6)

	   The MIB to be compiled requires no modification. Everything legal
	   according to	SMIs is	accepted, including MACRO definitions (which
	   are parsed but ignored).

	   This	module is shipped with the basic MIBs usually needed by	IMPORTS
	   clauses. A lot of IETF MIBs has been	successfully tested as well as
	   some	private	ones.

	    "SNMP::MIB::Compiler::new()" class method

	    To create a	new MIB, send a	new() message to the
	    SNMP::MIB::Compiler	class.	For example:

		    my $mib = new SNMP::MIB::Compiler;

	    This will create an	empty MIB ready	to accept both SMIv1 and SMIv2
	    MIBs. A lot	of attributes can be (des)activated to obtain a	more
	    or less strict and verbose compiler.  The created object is

	    "SNMP::MIB::Compiler::add_path(p1[,p2[,p3]])" object method

	    Add	one or more directories	to the search path. This path is used
	    to locate a	MIB file when the 'compile' method is invoqued.	 The
	    current list of paths is returned.


		# search MIBs in the "mibs" directory (relative
		# to cwd) and in "/foo/bar/mibs" (absolute path)
		$mib->add_path('./mibs', '/foo/bar/mibs');

	    "SNMP::MIB::Compiler::add_extension(e1[,e2[,e3]])" object method

	    Add	one or more extensions to the extension	list. These extensions
	    are	used to	locate a MIB file when the 'compile' method is
	    invoqued. All extensions are tested	for each directory specified
	    by the add_path() method until one match.  The current list	of
	    extensions is returned.


		$mib->add_path('./mibs', '/foo/bar/mibs');
		$mib->add_extension('',	'.mib');

		The order is "./mibs/FOO", "./mibs/FOO.mib", "/foo/bar/mibs/FOO"
		and "/foo/bar/mibs/FOO.mib".

	    "SNMP::MIB::Compiler::repository([dir])" object method

	    If 'dir' is	defined, set the directory where compiled MIBs will be
	    stored (using the compile()	method)	or loaded (using the load()
	    method).  The repository MUST be initialized before	a MIB can be
	    compiled or	loaded.	 The current repository	is returned.


		print "Current repository is ",	$mib->repository, "\n";

	    "SNMP::MIB::Compiler::compile(mib)"	object method

	    Compile a MIB given	its name. All information contained in this
	    MIB	is inserted into the current object and	is stored into a file
	    in the repository (see the 'make_dump' attribute).	The choosen
	    name is the	same as	the real MIB name (defined in the MIB itself).
	    If a precompiled MIB already exists	in the repository and is newer
	    than the given file, it is used instead of a real compilation (see
	    the	'use_dump' attribute).	The compiler can be recursive if
	    IMPORTS clauses are	followed (see the 'do_imports' attribute) and
	    in that case, uncompiled MIB names must be explict according to
	    paths and extensions critaeria (see	add_path() and
	    add_extensions() methods).	The current object is returned.

	    "SNMP::MIB::Compiler::load(mib)" object method

	    Load a precompiled MIB given its name. All information contained
	    in this MIB	is inserted into the current object. The file is
	    searched in	the repository which MUST be initialized. In case of
	    success, returns 1 else returns 0.



	    "SNMP::MIB::Compiler::resolve_oid(node)" object method


		print $mib->resolve_oid('ifInOctets'), "\n";

	    "SNMP::MIB::Compiler::convert_oid(oid)" object method


		print $mib->convert_oid(''), "\n";

	    "SNMP::MIB::Compiler::tree(node)" object method


		print $mib->tree('ifMIB');


       Currently, it is	more a TODO list than a	bug list.

       - not enough documentation

       - not enough methods

       - not enough test scripts

       - find a	better name for	compiled MIBs than 'dump's.. even if they are
       no more than dumps.

       If your MIBs can't be compiled by this module, please, double check
       their syntax. If	you really think that they are correct,	send them to
       me including their "uncommon" dependencies.

       Fabien Tassin (

       Copyright 1998, 1999, Fabien Tassin. All	rights reserved.  It may be
       used and	modified freely, but I do request that this copyright notice
       remain attached to the file. You	may modify this	module as you wish,
       but if you redistribute a modified version, please attach a note
       listing the modifications you have made.

perl v5.32.1			  1999-09-05		SNMP::MIB::Compiler(3)


Want to link to this manual page? Use this URL:

home | help