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

FreeBSD Manual Pages

  
 
  

home | help
smi_config(3)	      SMI Management Information Library	 smi_config(3)

NAME
       smiInit,	 smiExit, smiSetErrorLevel, smiGetFlags, smiSetFlags, smiLoad-
       Module, smiGetPath, smiSetPath, smiReadConfig - SMI library  configura-
       tion routines

SYNOPSIS
       #include	<smi.h>

       int smiInit(const char *tag);

       int smiExit();

       void smiSetErrorLevel(int level);

       int smiGetFlags();

       void smiSetFlags(int userflags);

       char *smiLoadModule(char	*module);

       int smiIsLoaded(char *module);

       char *smiGetPath();

       int smiSetPath(char *path);

       int smiSetSeverity(char *pattern, int severity);

       int smiReadConfig(char *filename, const char *tag);

       void smiSetErrorHandler(SmiErrorHandler *smiErrorHandler);

       typedef void (SmiErrorHandler) (char *path, int line,
			   int severity, char *msg, char *tag);

DESCRIPTION
       These  functions	 provide some initialization and adjustment operations
       for the SMI library.

       The smiInit() function should be	the first SMI function	called	in  an
       application.  It	 initializes  its  internal  structures. If tag	is not
       NULL, the global	configuration file and (on UNIX	systems) a  user  con-
       figuration file are read	implicitly, if existent. All global statements
       and  those  statements with a tag (a ``tag: '' prefix) that matches the
       tag argument are	executed.  (see	also CONFIGURATION FILES below).  smi-
       Init() returns zero on success, or otherwise a negative value.

       The smiInit() function can also be used to support multiple sets	of MIB
       data. In	this case, the tag argument may	be prepended by	a colon	and  a
       name  to	 differentiate the data	sets. Any library function call	subse-
       quent to	an smiInit("tag:dataset") call is  using  the  specified  data
       set.

       The  smiExit() function should be called	when the application no	longer
       needs any SMI information to release any	allocated SMI resources.

       The smiSetErrorLevel() function sets the	pedantic level	(0-9)  of  the
       SMI  parsers  of	 the  SMI  library, currently SMIv1/v2 and SMIng.  The
       higher the level, the louder it complains. Values up to 3 should	be re-
       garded as errors, higher	level could be interpreted as  warnings.   But
       note  that this classification is some kind of personal taste.  The de-
       fault level is 0, since usually only MIB	checkers want to tune a	higher
       level.

       The smiGetFlags() and smiSetFlags() functions allow to  fetch,  modify,
       and  set	 some  userflags that control the SMI library's	behaviour.  If
       SMI_FLAG_ERRORS is not set, no error messages are  printed  at  all  to
       keep  the  SMI library totally quiet, which might be mandatory for some
       applications. If	SMI_FLAG_STATS is set, the library prints some	module
       statistics.  If	SMI_FLAG_RECURSIVE  is set, the	library	also complains
       about errors in modules that are	read  due  to  import  statements.  If
       SMI_FLAG_NODESCR	 is  set,  no  description  and	references strings are
       stored in memory. This may save a huge amount of	memory in case of  ap-
       plications that do not need this	information.

       The  smiSetSeverity()  function allows to set the severity of all error
       that have name prefixed by pattern to the value severity.

       The smiLoadModule() function specifies an additional  MIB  module  that
       the  application	 claims	 to  know  or an additional file path to read.
       Only after a module is made known through this function,	iterating  re-
       trieval functions and retrieval functions without fully qualified iden-
       tifiers	will  return results from this module. smiLoadModule() returns
       the name	of the loaded module, of NULL if it could not be loaded.

       The smiIsLoaded() function returns a positive value if the module named
       module is already loaded, or zero otherwise.

       The smiGetPath()	and smiSetPath() functions allow to fetch, modify, and
       set the path that is used to search MIB modules.	 smiGetPath()  returns
       a  copy of the current search path in the form "DIR1:DIR2:...", or NULL
       if no path is set.  The application should free this string if it is no
       longer needed. smiSetPath() sets	the search path	to path.

       The smiReadConfig() function reads  the	configuration  file  filename.
       All  global  statements	in the configuration file and those statements
       with a tag (a ``tag: '' prefix)	that  matches  the  tag	 argument,  if
       present,	are executed.

       The  smiSetErrorHandler()  function  allows  to set a callback function
       that is called by the MIB parsers deviating from	 the  builtin  default
       error  handler, that prints error messages to stderr. The error handler
       has to comply with the SmiErrorHandler function type. The  path,	 line,
       severity, msg, and tag arguements carry the module's pathname, the line
       number  within  the  module,  the error severity	level, a textual error
       message,	and a short error name of the error being reported.

MODULE LOCATIONS
       The SMI library may retrieve MIB	modules	from different	kinds  of  re-
       sources.	 Currently, SMIv1/v2 and SMIng module files are	supported.  If
       in an smiLoadModule() function call a module is	specified  by  a  path
       name  (identified  by  containing at least one dot or slash character),
       this is assumed to be the exact file to read. Otherwise,	if a module is
       identified by its plain module name,  the  correspondant	 file  (either
       SMIv1/2	or  SMIng)  is searched	along a	path. This path	is initialized
       with			       /usr/local/share/smi/mibs/ietf:/usr/lo-
       cal/share/smi/mibs/iana:/usr/local/share/smi/mibs/irtf:/usr/lo-
       cal/share/smi/mibs/site:/usr/local/share/smi/mibs/tubs:/usr/lo-
       cal/share/smi/pibs/ietf:/usr/local/share/smi/pibs/site:/usr/lo-
       cal/share/smi/pibs/tubs.	  Afterwards the optional global and user con-
       figuration files	are parsed for `path' commands,	and  finally  the  op-
       tional  SMIPATH	environment  variable is evaluated. The	`path' command
       argument	and the	environment variable either start with a path  separa-
       tor  character (`:' on UNIX-like	systems, `;' on	MS-Windows systems) to
       append to the path, or end with a path separator	character  to  prepend
       to  the	path,  or otherwise completely replace the path.  The path can
       also be controlled by the smiGetPath() and smiSetPath() functions  (see
       above).

       When  files are searched	by a given module name,	they might have	no ex-
       tension or one of the extensions	`.my', `.smiv2', `.sming', `.mib',  or
       `.txt'.	However,  the  MIB module language is identified by the	file's
       content,	not by its file	name extension.

CONFIGURATION FILES
       SMI library configuration files read at initialization and on demand by
       smiReadConfig() have a simple line oriented  syntax.  Empty  lines  and
       those starting with `#' are ignored. Other lines	start with an optional
       tag (prepended by a colon), followed by a command and options dependent
       on  the command.	Tags are used to limit the scope of a command to those
       applications that are using this	tag.

       The load	command	is used	to preload a given  MIB	 module.  If  multiple
       modules shall be	preloaded, multiple load commands must be used.

       The path	command	allows to prepend or append components to the MIB mod-
       ule  search  path or to modify it completely (see also MODULE LOCATIONS
       above).

       The cache command allows	to add an additional directory for MIB	module
       lookup as a last	resort.	The first argument specifies the directory and
       the  rest  of  the line starting	from the second	argument specifies the
       caching method, which is	invoked	with the MIB module name  appended  if
       the  module  is	found neither in one of	the regular directories	nor in
       the cache directory beforehand.

       The level command sets the error	level.

       The hide	command	allows to tune the list	of errors that	are  reported.
       It raises all errors with names prefixed	by the given pattern to	sever-
       ity level 9. [Currently,	there is no way	to list	the error names. RTFS:
       error.c.]

       Example configuration:

	 #
	 # $HOME/.smirc
	 #

	 # add a private directory
	 path :/usr/home/strauss/lib/mibs

	 # don't show any errors by default
	 level 0

	 # preload some	basic modules
	 load SNMPv2-SMI
	 load SNMPv2-TC
	 load SNMPv2-CONF

	 # want	to make	smilint	shout
	 smilint: level	8

	 # but please don't claim about
	 # any names longer than 32 chars
	 smilint: hide namelength-32

	 tcpdump: load DISMAN-SCRIPT-MIB

	 smiquery: load	IF-MIB
	 smiquery: load	DISMAN-SCRIPT-MIB

FILES
       ${prefix}/etc/smi.conf	 global	configuration file
       $HOME/.smirc		  user configuration file
       ${prefix}/include/smi.h	 SMI library header file
       /usr/local/share/smi/mibs/     SMI module repository directory

SEE ALSO
       libsmi(3), smi.h

AUTHOR
       (C)    1999-2001	   Frank    Strauss,	TU    Braunschweig,    Germany
       <strauss@ibr.cs.tu-bs.de>

IBR				August 22, 2001			 smi_config(3)

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

home | help