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

NAME
     smiGetNode,  smiGetNodeByOID,  smiGetFirstNode,  smiGetNextNode, smiGetPar-
     entNode,  smiGetRelatedNode,   smiGetFirstChildNode,   smiGetNextChildNode,
     smiGetNodeModule,	 smiGetNodeType,   smiGetNodeLine,   smiGetFirstElement,
     smiGetNextElement, smiGetElementNode, smiGetFirstOption,  smiGetNextOption,
     smiGetOptionNode,	smiGetFirstRefinement,	smiGetNextRefinement,  smiGetRe-
     finementModule, smiGetRefinementNode,  smiGetRefinementType,  smiGetRefine-
     mentWriteType - SMI type information routines

SYNOPSIS
     #include <smi.h>

     SmiNode *smiGetNode(SmiModule *smiModulePtr, char *node);

     SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]);

     SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind kinds);

     SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind kinds);

     SmiNode *smiGetParentNode(SmiNode *smiNodePtr);

     SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr);

     SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr);

     SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr);

     SmiModule *smiGetNodeModule(SmiNode *smiNodePtr);

     SmiType *smiGetNodeType(SmiNode *smiNodePtr);

     int smiGetNodeLine(SmiNode *smiNodePtr);

     SmiElement *smiGetFirstElement(SmiNode *smiNodePtr);

     SmiElement *smiGetNextElement(SmiElement *smiElementPtr);

     SmiNode *smiGetElementNode(SmiElement *smiElementPtr);

     SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr);

     SmiOption *smiGetNextOption(SmiOption *smiOptionPtr);

     SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr);

     SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr);

     SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr);

     SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr);

     SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr);

     SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr);

     typedef struct SmiNode {
	 SmiIdentifier	     name;
	 int		     oidlen;
	 SmiSubid	     *oid;	   /* array of length oidlen */
	 SmiDecl	     decl;
	 SmiAccess	     access;
	 SmiStatus	     status;
	 char		     *format;
	 SmiValue	     value;
	 char		     *units;
	 char		     *description;
	 char		     *reference;
	 SmiIndexkind	     indexkind;
	 int		     implied;
	 int		     create;
	 SmiNodekind	     nodekind;
     } SmiNode;

     typedef struct SmiElement {
	 /* no visible attributes */
     } SmiElement;

     typedef struct SmiOption {
	 char		     *description;
     } SmiOption;

     typedef struct SmiRefinement {
	 SmiAccess	     access;
	 char		     *description;
     } SmiRefinement;

DESCRIPTION
     These  functions retrieve information on any SMI node definition in the ob-
     ject identifier tree, these are ASN.1 object identifier  assignments,  MOD-
     ULE-IDENTITYs,  OBJECT-IDENTITYs,	OBJECT-TYPEs,  NOTIFICATION-TYPEs, TRAP-
     TYPEs, OBJECT-GROUPs, NOTIFICATION-GROUPs, MODULE-COMPLIANCEs,  and  AGENT-
     CAPABILITYs in SMIv1/v2 and node, scalar, table, row, column, notification,
     group, and compliance statements in SMIng.

     The smiGetNode() function retrieves a struct SmiNode that represents a node
     of any kind. Node may be either a fully qualified descriptor, a simple node
     name,  or	a  numerical OID.  Nodes are also found, if node contains an in-
     stance identifier suffix.	If smiModulePtr is not NULL it used to limit the
     search to the given module. If the node is not found, smiGetNode()  returns
     NULL.

     The  smiGetNodeByOID() function retrieves a struct SmiNode that matches the
     longest prefix of the node that is specified by the object identifier oid[]
     with the length oidlen.  If no such node is  not  found,  smiGetNodeByOID()
     returns NULL.

     The  smiGetFirstNode()  and  smiGetNextNode()  functions are used to itera-
     tively retrieve struct SmiNodes in tree pre-order.   smiGetFirstNode()  re-
     turns  the  first node defined in the module specified by smiModulePtr that
     is of any kind specified in the kinds bitset.  Subsequent calls to  smiGet-
     NextNode()  return the next node of any kind specified in the kinds bitset.
     If there are no more node definitions in the module, NULL is returned.

     The smiGetFirstChildNode() and smiGetNextChildNode() functions are used  to
     iteratively  retrieve  struct  SmiNodes  that represent the immediate child
     nodes  of	the  node  specified  by  smiNodePtr  passed  to   the	 smiGet-
     FirstChildNode() call.

     The  smiGetParentNode() function is used to retrieve a struct SmiNodes that
     represents the parent node of the node specified by smiNodePtr.

     The smiGetRelatedNode() function is used to retrieve a struct SmiNodes that
     is related to the node specified by smiNodePtr. Actually, this is used  for
     SMIv2 table augmentation entries and similar SMIng constructs.

     The  smiGetNodeModule()  function	returns the module that defines the node
     given by struct SmiNodePtr.

     The smiGetNodeType() function returns the type of the (scalar or  columnar)
     node  given  by struct SmiNodePtr.  If struct SmiNodePtr does not specify a
     scalar or columnar node, NULL is returned.

     The smiGetFirstElement() and smiGetNextElement() functions are used to  it-
     eratively	retrieve  struct  SmiElements  that  represent elements of index
     clauses or notification object lists, groups of object types  or  notifica-
     tion  types, and mandatory groups of module compliance statements. The node
     to which the list belongs has to be specified by  smiNodePtr.  To	retrieve
     the  node	that  is represented by a struct SmiElement, the smiGetElementN-
     ode() function has to be called.

     The smiGetFirstOption() and smiGetNextOption() functions are used to itera-
     tively retrieve struct SmiOptions that  represent	statements  on	optional
     (object  or  notification) groups within the compliance statement specified
     by smiComplianceNodePtr. The group node which is subject of such  a  state-
     ment can be retrieved by the smiGetOptionNode() function.

     Similarly, the smiGetFirstRefinement() and smiGetNextRefinement() functions
     are  used	to  iteratively  retrieve  struct  SmiRefinements that represent
     statements on optional object refinements within the  compliance  statement
     specified	by smiComplianceNodePtr. The node which is subject of such a re-
     finement can be retrieved by the smiGetRefinementNode() function.	The  op-
     tional  refined type and write-type of a refinement can be retrieved by the
     smiGetRefinementType() and smiGetRefinementWriteType() functions.	If  they
     are not present, NULL is returned.

     The  smiGetNodeLine()  function  returns  the line number within the module
     where the node specified by smiNodePtr is defined.

FILES
     ${prefix}/include/smi.h	SMI library header file

SEE ALSO
     libsmi(3), smi_config(3), smi_type(3), smi_module(3), smi.h

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

IBR				 March 30, 2004 		     smi_node(3)

home | help