Blame lib/smi.h.in

Packit 022b05
/*
Packit 022b05
 * smi.h --
Packit 022b05
 *
Packit 022b05
 *      Interface Definition of libsmi (version @VERSION_LIBTOOL@).
Packit 022b05
 *
Packit 022b05
 * Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig.
Packit 022b05
 *
Packit 022b05
 * See the file "COPYING" for information on usage and redistribution
Packit 022b05
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
Packit 022b05
 *
Packit 022b05
 * @(#) $Id: smi.h.in 8090 2008-04-18 12:56:29Z strauss $
Packit 022b05
 */
Packit 022b05
Packit 022b05
#ifndef _SMI_H
Packit 022b05
#define _SMI_H
Packit 022b05
Packit 022b05
#include <stdlib.h>
Packit 022b05
#include <stdarg.h>
Packit 022b05
#ifdef HAVE_STDINT_H
Packit 022b05
#include <stdint.h>
Packit 022b05
#endif
Packit 022b05
#ifdef HAVE_LIMITS_H
Packit 022b05
#include "limits.h"
Packit 022b05
#endif
Packit 022b05
#include <time.h>
Packit 022b05
Packit 022b05
Packit 022b05
#ifdef __cplusplus
Packit 022b05
extern "C" {
Packit 022b05
#endif
Packit 022b05
Packit 022b05
Packit 022b05
#define SMI_LIBRARY_VERSION "@VERSION_LIBTOOL@"
Packit 022b05
extern const char *smi_library_version;
Packit 022b05
Packit 022b05
#define SMI_VERSION_MAJOR @LIBSMI_MAJOR@
Packit 022b05
#define SMI_VERSION_MINOR @LIBSMI_MINOR@
Packit 022b05
#define SMI_VERSION_PATCHLEVEL @LIBSMI_PATCHLEVEL@
Packit 022b05
#define SMI_VERSION_STRING "@VERSION_STRING@"
Packit 022b05
extern const char *smi_version_string;
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
#define SMI_FLAG_NODESCR   0x0800 /* do not load descriptions/references.    */
Packit 022b05
#define SMI_FLAG_VIEWALL   0x1000 /* all modules are `known', need no views. */
Packit 022b05
#define SMI_FLAG_ERRORS    0x2000 /* print parser errors.                    */
Packit 022b05
#define SMI_FLAG_RECURSIVE 0x4000 /* recursively parse imported modules.     */
Packit 022b05
#define SMI_FLAG_STATS     0x8000 /* print statistics after parsing module.  */
Packit 022b05
#define SMI_FLAG_MASK      (SMI_FLAG_NODESCR|SMI_FLAG_VIEWALL|SMI_FLAG_STATS|\
Packit 022b05
			    SMI_FLAG_RECURSIVE|SMI_FLAG_ERRORS)
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
/* misc mappings of SMI types to C types                                     */
Packit 022b05
typedef char                    *SmiIdentifier;
Packit 022b05
typedef unsigned long           SmiUnsigned32;
Packit 022b05
typedef long                    SmiInteger32;
Packit 022b05
#ifdef _MSC_VER /* if using MSVC and not configure */
Packit 022b05
typedef __int64                 SmiInteger64;
Packit 022b05
typedef unsigned __int64        SmiUnsigned64;
Packit 022b05
#else
Packit 022b05
typedef @UINT64_TYPE@           SmiUnsigned64;
Packit 022b05
typedef @INT64_TYPE@            SmiInteger64;
Packit 022b05
#endif
Packit 022b05
typedef unsigned int            SmiSubid;
Packit 022b05
typedef float                   SmiFloat32;
Packit 022b05
typedef double                  SmiFloat64;
Packit 022b05
typedef long double             SmiFloat128;
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
/* SmiLanguage -- language of an actual MIB module                           */
Packit 022b05
typedef enum SmiLanguage {
Packit 022b05
    SMI_LANGUAGE_UNKNOWN                = 0,  /* should not occur            */
Packit 022b05
    SMI_LANGUAGE_SMIV1                  = 1,
Packit 022b05
    SMI_LANGUAGE_SMIV2                  = 2,
Packit 022b05
    SMI_LANGUAGE_SMING                  = 3,
Packit 022b05
    SMI_LANGUAGE_SPPI                   = 4
Packit 022b05
} SmiLanguage;
Packit 022b05
Packit 022b05
/* SmiBasetype -- base types of all languages                                */
Packit 022b05
typedef enum SmiBasetype {
Packit 022b05
    SMI_BASETYPE_UNKNOWN                = 0,  /* should not occur            */
Packit 022b05
    SMI_BASETYPE_INTEGER32              = 1,  /* also SMIv1/v2 INTEGER       */
Packit 022b05
    SMI_BASETYPE_OCTETSTRING            = 2,
Packit 022b05
    SMI_BASETYPE_OBJECTIDENTIFIER       = 3,
Packit 022b05
    SMI_BASETYPE_UNSIGNED32             = 4,
Packit 022b05
    SMI_BASETYPE_INTEGER64              = 5,  /* SMIng and SPPI              */
Packit 022b05
    SMI_BASETYPE_UNSIGNED64             = 6,  /* SMIv2, SMIng and SPPI       */
Packit 022b05
    SMI_BASETYPE_FLOAT32                = 7,  /* only SMIng                  */
Packit 022b05
    SMI_BASETYPE_FLOAT64                = 8,  /* only SMIng                  */
Packit 022b05
    SMI_BASETYPE_FLOAT128               = 9,  /* only SMIng                  */
Packit 022b05
    SMI_BASETYPE_ENUM                   = 10,
Packit 022b05
    SMI_BASETYPE_BITS                   = 11, /* SMIv2, SMIng and SPPI       */
Packit 022b05
    SMI_BASETYPE_POINTER		= 12  /* only SMIng                  */
Packit 022b05
} SmiBasetype;
Packit 022b05
Packit 022b05
#ifdef INT32_MIN
Packit 022b05
#define SMI_BASETYPE_INTEGER32_MIN  INT32_MIN
Packit 022b05
#else
Packit 022b05
#define SMI_BASETYPE_INTEGER32_MIN  INT_MIN
Packit 022b05
#endif
Packit 022b05
#ifdef INT32_MAX
Packit 022b05
#define SMI_BASETYPE_INTEGER32_MAX  INT32_MAX
Packit 022b05
#else
Packit 022b05
#define SMI_BASETYPE_INTEGER32_MAX  INT_MAX
Packit 022b05
#endif
Packit 022b05
#define SMI_BASETYPE_INTEGER64_MIN  LIBSMI_INT64_MIN
Packit 022b05
#define SMI_BASETYPE_INTEGER64_MAX  LIBSMI_INT64_MAX
Packit 022b05
#define SMI_BASETYPE_UNSIGNED32_MIN 0
Packit 022b05
#ifdef UINT32_MAX
Packit 022b05
#define SMI_BASETYPE_UNSIGNED32_MAX UINT32_MAX
Packit 022b05
#else
Packit 022b05
#define SMI_BASETYPE_UNSIGNED32_MAX UINT_MAX
Packit 022b05
#endif
Packit 022b05
#define SMI_BASETYPE_UNSIGNED64_MIN 0
Packit 022b05
#define SMI_BASETYPE_UNSIGNED64_MAX LIBSMI_UINT64_MAX
Packit 022b05
Packit 022b05
/* SmiStatus -- values of status levels                                      */
Packit 022b05
typedef enum SmiStatus {
Packit 022b05
    SMI_STATUS_UNKNOWN          = 0, /* should not occur                     */
Packit 022b05
    SMI_STATUS_CURRENT          = 1, /* only SMIv2, SMIng and SPPI           */
Packit 022b05
    SMI_STATUS_DEPRECATED       = 2, /* SMIv1, SMIv2, SMIng and SPPI         */
Packit 022b05
    SMI_STATUS_MANDATORY        = 3, /* only SMIv1                           */
Packit 022b05
    SMI_STATUS_OPTIONAL         = 4, /* only SMIv1                           */
Packit 022b05
    SMI_STATUS_OBSOLETE         = 5  /* SMIv1, SMIv2, SMIng and SPPI         */
Packit 022b05
} SmiStatus;
Packit 022b05
Packit 022b05
/* SmiAccess -- values of access levels                                      */
Packit 022b05
typedef enum SmiAccess {
Packit 022b05
    SMI_ACCESS_UNKNOWN          = 0, /* should not occur                     */
Packit 022b05
    SMI_ACCESS_NOT_IMPLEMENTED  = 1, /* only for agent capability variations */
Packit 022b05
    SMI_ACCESS_NOT_ACCESSIBLE   = 2, /* the values 2 to 5 are allowed to be  */
Packit 022b05
    SMI_ACCESS_NOTIFY           = 3, /* compared by relational operators.    */
Packit 022b05
    SMI_ACCESS_READ_ONLY        = 4,
Packit 022b05
    SMI_ACCESS_READ_WRITE       = 5,
Packit 022b05
    SMI_ACCESS_INSTALL          = 6, /* these three entries are only valid   */
Packit 022b05
    SMI_ACCESS_INSTALL_NOTIFY   = 7, /* for SPPI                             */
Packit 022b05
    SMI_ACCESS_REPORT_ONLY      = 8,
Packit 022b05
    SMI_ACCESS_EVENT_ONLY      	= 9	 /* this entry is valid only for SMIng	 */
Packit 022b05
} SmiAccess;
Packit 022b05
Packit 022b05
/* SmiNodekind -- type or statement that leads to a definition               */
Packit 022b05
typedef unsigned int SmiNodekind;
Packit 022b05
#define SMI_NODEKIND_UNKNOWN      0x0000     /* should not occur             */
Packit 022b05
#define SMI_NODEKIND_NODE         0x0001
Packit 022b05
#define SMI_NODEKIND_SCALAR       0x0002
Packit 022b05
#define SMI_NODEKIND_TABLE        0x0004
Packit 022b05
#define SMI_NODEKIND_ROW          0x0008
Packit 022b05
#define SMI_NODEKIND_COLUMN       0x0010
Packit 022b05
#define SMI_NODEKIND_NOTIFICATION 0x0020
Packit 022b05
#define SMI_NODEKIND_GROUP        0x0040
Packit 022b05
#define SMI_NODEKIND_COMPLIANCE   0x0080
Packit 022b05
#define SMI_NODEKIND_CAPABILITIES 0x0100
Packit 022b05
#define SMI_NODEKIND_ANY          0xffff
Packit 022b05
Packit 022b05
/* SmiDecl -- type or statement that leads to a definition                   */
Packit 022b05
typedef enum SmiDecl {
Packit 022b05
    SMI_DECL_UNKNOWN            = 0,  /* should not occur                    */
Packit 022b05
    /* SMIv1/v2 ASN.1 statements and macros */
Packit 022b05
    SMI_DECL_IMPLICIT_TYPE      = 1,
Packit 022b05
    SMI_DECL_TYPEASSIGNMENT     = 2,
Packit 022b05
    SMI_DECL_IMPL_SEQUENCEOF    = 4,	/* this will go away */
Packit 022b05
    SMI_DECL_VALUEASSIGNMENT    = 5,
Packit 022b05
    SMI_DECL_OBJECTTYPE         = 6,    /* values >= 6 are assumed to be */
Packit 022b05
    SMI_DECL_OBJECTIDENTITY     = 7,    /* registering an OID, see check.c */
Packit 022b05
    SMI_DECL_MODULEIDENTITY     = 8,
Packit 022b05
    SMI_DECL_NOTIFICATIONTYPE   = 9,
Packit 022b05
    SMI_DECL_TRAPTYPE           = 10,
Packit 022b05
    SMI_DECL_OBJECTGROUP        = 11, 
Packit 022b05
    SMI_DECL_NOTIFICATIONGROUP  = 12,
Packit 022b05
    SMI_DECL_MODULECOMPLIANCE   = 13,
Packit 022b05
    SMI_DECL_AGENTCAPABILITIES  = 14,
Packit 022b05
    SMI_DECL_TEXTUALCONVENTION  = 15,
Packit 022b05
    SMI_DECL_MACRO	        = 16,
Packit 022b05
    SMI_DECL_COMPL_GROUP        = 17,
Packit 022b05
    SMI_DECL_COMPL_OBJECT       = 18,
Packit 022b05
    SMI_DECL_IMPL_OBJECT        = 19,	/* object label in sth like "iso(1)" */
Packit 022b05
    /* SMIng statements */
Packit 022b05
    SMI_DECL_MODULE             = 33,
Packit 022b05
    SMI_DECL_EXTENSION          = 34,
Packit 022b05
    SMI_DECL_TYPEDEF            = 35,
Packit 022b05
    SMI_DECL_NODE               = 36,
Packit 022b05
    SMI_DECL_SCALAR             = 37,
Packit 022b05
    SMI_DECL_TABLE              = 38,
Packit 022b05
    SMI_DECL_ROW                = 39,
Packit 022b05
    SMI_DECL_COLUMN             = 40,
Packit 022b05
    SMI_DECL_NOTIFICATION       = 41,
Packit 022b05
    SMI_DECL_GROUP              = 42,
Packit 022b05
    SMI_DECL_COMPLIANCE         = 43,
Packit 022b05
    SMI_DECL_IDENTITY	        = 44,
Packit 022b05
    SMI_DECL_CLASS		= 45,
Packit 022b05
    SMI_DECL_ATTRIBUTE		= 46,
Packit 022b05
    SMI_DECL_EVENT		= 47
Packit 022b05
} SmiDecl;
Packit 022b05
Packit 022b05
/* SmiIndexkind -- actual kind of a table row's index method                 */
Packit 022b05
typedef enum SmiIndexkind {
Packit 022b05
    SMI_INDEX_UNKNOWN           = 0, 
Packit 022b05
    SMI_INDEX_INDEX             = 1,
Packit 022b05
    SMI_INDEX_AUGMENT           = 2,
Packit 022b05
    SMI_INDEX_REORDER           = 3,
Packit 022b05
    SMI_INDEX_SPARSE            = 4,
Packit 022b05
    SMI_INDEX_EXPAND            = 5
Packit 022b05
} SmiIndexkind;
Packit 022b05
Packit 022b05
/* SmiValue -- any single value; for use in default values and subtyping     */
Packit 022b05
typedef struct SmiValue {
Packit 022b05
    SmiBasetype             basetype;
Packit 022b05
    unsigned int	    len;         /* OID, OctetString, Bits           */
Packit 022b05
    union {
Packit 022b05
        SmiUnsigned64       unsigned64;
Packit 022b05
        SmiInteger64        integer64;
Packit 022b05
        SmiUnsigned32       unsigned32;
Packit 022b05
        SmiInteger32        integer32;
Packit 022b05
        SmiFloat32          float32;
Packit 022b05
        SmiFloat64          float64;
Packit 022b05
        SmiFloat128         float128;
Packit 022b05
        SmiSubid	    *oid;
Packit 022b05
        char                *ptr;	 /* OctetString, Bits                */
Packit 022b05
    } value;
Packit 022b05
} SmiValue;
Packit 022b05
Packit 022b05
/* SmiNamedNumber -- a named number; for enumeration and bitset types        */
Packit 022b05
typedef struct SmiNamedNumber {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiValue            value;
Packit 022b05
} SmiNamedNumber;
Packit 022b05
Packit 022b05
/* SmiRange -- a min-max value range; for subtyping of sizes or numbers      */
Packit 022b05
typedef struct SmiRange {
Packit 022b05
    SmiValue            minValue;
Packit 022b05
    SmiValue            maxValue;
Packit 022b05
} SmiRange;
Packit 022b05
Packit 022b05
/* SmiModule -- the main structure of a module                               */
Packit 022b05
typedef struct SmiModule {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    char                *path;
Packit 022b05
    char                *organization;
Packit 022b05
    char                *contactinfo;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
    SmiLanguage		language;
Packit 022b05
    int                 conformance;
Packit 022b05
} SmiModule;
Packit 022b05
Packit 022b05
/* SmiRevision -- content of a single module's revision clause               */
Packit 022b05
typedef struct SmiRevision {
Packit 022b05
    time_t              date;
Packit 022b05
    char                *description;
Packit 022b05
} SmiRevision;
Packit 022b05
Packit 022b05
/* SmiImport -- an imported descriptor                                       */
Packit 022b05
typedef struct SmiImport {
Packit 022b05
    SmiIdentifier       module;
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
} SmiImport;
Packit 022b05
Packit 022b05
/* SmiMacro -- the main structure of a SMIv1/v2 macro or SMIng extension     */
Packit 022b05
typedef struct SmiMacro {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
    char		*abnf; /* only for SMIng */
Packit 022b05
} SmiMacro;
Packit 022b05
Packit 022b05
/* SmiIdentity -- the main structure of a SMIng Identity.		     */
Packit 022b05
/* NOTE: Not to be confused with SMIv2 MODULE-IDENTITY */
Packit 022b05
typedef struct SmiIdentity {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
} SmiIdentity;
Packit 022b05
Packit 022b05
/* SmiType -- the main structure of a type definition (also base types)      */
Packit 022b05
/* also SMIng attributes      */
Packit 022b05
typedef struct SmiType {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiBasetype         basetype;
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    char                *format;
Packit 022b05
    SmiValue            value;
Packit 022b05
    char                *units;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
} SmiType;
Packit 022b05
Packit 022b05
/* SmiNode -- the main structure of any clause that defines a node           */
Packit 022b05
typedef struct SmiNode {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    unsigned int	oidlen;
Packit 022b05
    SmiSubid		*oid;         /* array of length oidlen */
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    SmiAccess           access;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *format;
Packit 022b05
    SmiValue            value;
Packit 022b05
    char                *units;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
    SmiIndexkind        indexkind;    /* only valid for rows */
Packit 022b05
    int                 implied;      /* only valid for rows */
Packit 022b05
    int                 create;       /* only valid for rows */
Packit 022b05
    SmiNodekind         nodekind;
Packit 022b05
} SmiNode;
Packit 022b05
Packit 022b05
/* SmiElement -- an item in a list (row index column, notification object)   */
Packit 022b05
typedef struct SmiElement {
Packit 022b05
#ifndef __GNUC__
Packit 022b05
    char dummy;		/* many compilers are unhappy with empty structures. */
Packit 022b05
#endif
Packit 022b05
    /* no visible attributes */
Packit 022b05
} SmiElement;
Packit 022b05
Packit 022b05
/* SmiOption -- an optional group in a compliance statement                  */
Packit 022b05
typedef struct SmiOption {
Packit 022b05
    char                *description;
Packit 022b05
} SmiOption;
Packit 022b05
Packit 022b05
/* SmiRefinement -- a refined object in a compliance statement               */
Packit 022b05
typedef struct SmiRefinement {
Packit 022b05
    SmiAccess           access;
Packit 022b05
    char                *description;
Packit 022b05
} SmiRefinement;
Packit 022b05
Packit 022b05
/* SmiClass -- main structure for SMIng class statement               */
Packit 022b05
typedef struct SmiClass {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
} SmiClass;
Packit 022b05
Packit 022b05
/* SmiClass -- main structure for class attribute               */
Packit 022b05
typedef struct SmiAttribute {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiBasetype         basetype;
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    char                *format;
Packit 022b05
    SmiValue            value;
Packit 022b05
    char                *units;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
    SmiAccess		access;
Packit 022b05
} SmiAttribute;
Packit 022b05
Packit 022b05
Packit 022b05
/* SmiEvent -- the main structure of a SMIng Event(part of class definition).*/
Packit 022b05
typedef struct SmiEvent {
Packit 022b05
    SmiIdentifier       name;
Packit 022b05
    SmiDecl             decl;
Packit 022b05
    SmiStatus           status;
Packit 022b05
    char                *description;
Packit 022b05
    char                *reference;
Packit 022b05
} SmiEvent;
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
extern int smiInit(const char *tag);
Packit 022b05
Packit 022b05
extern void smiExit(void);
Packit 022b05
Packit 022b05
extern void smiSetErrorLevel(int level);
Packit 022b05
Packit 022b05
extern int smiGetFlags(void);
Packit 022b05
Packit 022b05
extern void smiSetFlags(int userflags);
Packit 022b05
Packit 022b05
extern char *smiGetPath(void);
Packit 022b05
Packit 022b05
extern int smiSetPath(const char *path);
Packit 022b05
Packit 022b05
extern void smiSetSeverity(char *pattern, int severity);
Packit 022b05
Packit 022b05
extern int smiReadConfig(const char *filename, const char *tag);
Packit 022b05
Packit 022b05
extern char *smiLoadModule(const char *module);
Packit 022b05
Packit 022b05
extern int smiIsLoaded(const char *module);
Packit 022b05
Packit 022b05
Packit 022b05
typedef void (SmiErrorHandler) (char *path, int line, int severity, char *msg, char *tag);
Packit 022b05
Packit 022b05
extern void smiSetErrorHandler(SmiErrorHandler smiErrorHandler);
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiModule *smiGetModule(const char *module);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetFirstModule(void);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetNextModule(SmiModule *smiModulePtr);
Packit 022b05
      
Packit 022b05
extern SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiImport *smiGetFirstImport(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiImport *smiGetNextImport(SmiImport *smiImportPtr);
Packit 022b05
Packit 022b05
extern int smiIsImported(SmiModule *smiModulePtr,
Packit 022b05
			 SmiModule *importedModulePtr, char *importedName);
Packit 022b05
Packit 022b05
extern SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr);
Packit 022b05
Packit 022b05
extern int smiGetRevisionLine(SmiRevision *smiRevisionPtr);
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr);
Packit 022b05
Packit 022b05
extern SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr);
Packit 022b05
Packit 022b05
extern int smiGetIdentityLine(SmiIdentity *smiIdentityPtr);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr);
Packit 022b05
Packit 022b05
extern SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr,char *identity);
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiType *smiGetType(SmiModule *smiModulePtr, char *type);
Packit 022b05
Packit 022b05
extern SmiType *smiGetFirstType(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiType *smiGetNextType(SmiType *smiTypePtr);
Packit 022b05
Packit 022b05
extern SmiType *smiGetParentType(SmiType *smiTypePtr);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetTypeModule(SmiType *smiTypePtr);
Packit 022b05
Packit 022b05
extern int smiGetTypeLine(SmiType *smiTypePtr);
Packit 022b05
Packit 022b05
extern SmiRange *smiGetFirstRange(SmiType *smiTypePtr);
Packit 022b05
Packit 022b05
extern SmiRange *smiGetNextRange(SmiRange *smiRangePtr);
Packit 022b05
Packit 022b05
extern int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max);
Packit 022b05
Packit 022b05
extern SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr);
Packit 022b05
Packit 022b05
extern SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber
Packit 022b05
					         *smiNamedNumberPtr);
Packit 022b05
					         
Packit 022b05
					         
Packit 022b05
extern SmiClass *smiGetFirstClass(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiClass *smiGetNextClass(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiClass *smiGetParentClass(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetClassModule(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiClass *smiGetClass(SmiModule *smiModulePtr,char *class);
Packit 022b05
Packit 022b05
extern int smiGetClassLine(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute);
Packit 022b05
Packit 022b05
extern SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiAttribute *smiGetNextAttribute(SmiAttribute *smiAtrributePtr);
Packit 022b05
Packit 022b05
extern SmiType *smiGetAttributeParentType(SmiAttribute *smiAtrributePtr);
Packit 022b05
Packit 022b05
extern SmiClass *smiGetAttributeParentClass(SmiAttribute *smiAtrributePtr);
Packit 022b05
Packit 022b05
extern SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *smiTypePtr);
Packit 022b05
Packit 022b05
extern int 		smiIsClassScalar(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr);
Packit 022b05
Packit 022b05
extern SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber
Packit 022b05
					         *smiNamedNumberPtr);
Packit 022b05
extern SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr);
Packit 022b05
Packit 022b05
extern SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr);
Packit 022b05
Packit 022b05
extern int smiGetAttributeLine(SmiAttribute *smiAttributePtr);
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiEvent *smiGetEvent(SmiClass *smiClassPtr, char *attribute);
Packit 022b05
Packit 022b05
extern SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr);
Packit 022b05
Packit 022b05
extern SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr);
Packit 022b05
Packit 022b05
extern int smiGetEventLine(SmiEvent *smiEventPtr);
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro);
Packit 022b05
Packit 022b05
extern SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr);
Packit 022b05
Packit 022b05
extern SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr);
Packit 022b05
Packit 022b05
extern int smiGetMacroLine(SmiMacro *smiMacroPtr);
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *name);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetParentNode(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern SmiModule *smiGetNodeModule(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern SmiType *smiGetNodeType(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern int smiGetNodeLine(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiElement *smiGetFirstElement(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
extern SmiElement *smiGetNextElement(SmiElement *smiElementPtr);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetElementNode(SmiElement *smiElementPtr);
Packit 022b05
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr);
Packit 022b05
Packit 022b05
extern SmiOption *smiGetNextOption(SmiOption *smiOptionPtr);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr);
Packit 022b05
Packit 022b05
extern int smiGetOptionLine(SmiOption *smiOptionPtr);
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr);
Packit 022b05
Packit 022b05
extern SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr);
Packit 022b05
Packit 022b05
extern SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr);
Packit 022b05
Packit 022b05
extern SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr);
Packit 022b05
Packit 022b05
extern SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr);
Packit 022b05
Packit 022b05
extern int smiGetRefinementLine(SmiRefinement *smiRefinementPtr);
Packit 022b05
Packit 022b05
Packit 022b05
extern SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr);
Packit 022b05
Packit 022b05
#define smiGetNextUniquenessElement(p) smiGetNextElement(p)
Packit 022b05
Packit 022b05
extern char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags);
Packit 022b05
Packit 022b05
extern char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr,
Packit 022b05
			    int flags);
Packit 022b05
Packit 022b05
extern char *smiRenderNode(SmiNode *smiNodePtr, int flags);
Packit 022b05
Packit 022b05
extern char *smiRenderType(SmiType *smiTypePtr, int flags);
Packit 022b05
Packit 022b05
#define SMI_RENDER_NUMERIC   0x01 /* render as numeric values */
Packit 022b05
#define SMI_RENDER_NAME      0x02 /* render as names */
Packit 022b05
#define SMI_RENDER_QUALIFIED 0x04 /* render names with module prefix */
Packit 022b05
#define SMI_RENDER_FORMAT    0x08 /* render by applying the type's format if
Packit 022b05
				     type is given and format is present */
Packit 022b05
#define SMI_RENDER_PRINTABLE 0x10 /* render string values as a printable
Packit 022b05
				     string if all octets are isprint() */
Packit 022b05
#define SMI_RENDER_UNKNOWN   0x20 /* render even unknown items as strings
Packit 022b05
  				     ("<unknown>") so that we never get NULL */
Packit 022b05
#define SMI_RENDER_ALL       0xff /* render as `human friendly' as possible */
Packit 022b05
Packit 022b05
#define SMI_UNKNOWN_LABEL "<unknown>"
Packit 022b05
Packit 022b05
   
Packit 022b05
/*
Packit 022b05
 * The functions smiGetMaxSize() and smiGetMinSize() compute the
Packit 022b05
 * max size constraint on a given BITS, OCTET STRING or OBJECT
Packit 022b05
 * IDENTIFIER type. The functions recurse towards the top of the
Packit 022b05
 * type derivation tree.
Packit 022b05
 */
Packit 022b05
Packit 022b05
extern unsigned int smiGetMinSize(SmiType *smiType);
Packit 022b05
extern unsigned int smiGetMaxSize(SmiType *smiType);
Packit 022b05
Packit 022b05
/*
Packit 022b05
 * Two utility functions to pack and unpack instance identifiers.
Packit 022b05
 * The smiUnpack() function allocates the array of SmiValues and
Packit 022b05
 * the smiPack() function allocates the array of SmiSubids.
Packit 022b05
 */
Packit 022b05
Packit 022b05
extern int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen,
Packit 022b05
		     SmiValue **vals, int *valslen);
Packit 022b05
Packit 022b05
extern int smiPack(SmiNode *row, SmiValue *vals, int valslen,
Packit 022b05
		   SmiSubid **oid, unsigned int *oidlen);
Packit 022b05
Packit 022b05
/*
Packit 022b05
 * Two printf functions that allocate memory dynamically. The call has
Packit 022b05
 * to free the allocated memory.
Packit 022b05
 */
Packit 022b05
Packit 022b05
extern int smiAsprintf(char **strp, const char *format, ...);
Packit 022b05
Packit 022b05
extern int smiVasprintf(char **strp, const char *format, va_list ap);
Packit 022b05
Packit 022b05
Packit 022b05
/*
Packit 022b05
 * The functions smiMalloc() and friends are used within the library
Packit 022b05
 * for all memory allocations and deallocations. These functions are
Packit 022b05
 * simple wrappers around the standard malloc() and friends functions,
Packit 022b05
 * sometimes with some additional checking. We export these functions
Packit 022b05
 * because on some systems (e.g. Windows) it is necessary to allocate
Packit 022b05
 * / deallocate memory with the 'right' version of malloc() and
Packit 022b05
 * friends.
Packit 022b05
 */
Packit 022b05
Packit 022b05
#ifdef HAVE_DMALLOC_H
Packit 022b05
Packit 022b05
extern void *_smiMalloc(char *, int, size_t);
Packit 022b05
extern void *_smiRealloc(char *, int, void *ptr, size_t size);
Packit 022b05
extern char *_smiStrdup(char *, int, const char *s1);
Packit 022b05
extern char *_smiStrndup(char *, int, const char *s1, size_t n);
Packit 022b05
extern void _smiFree(char *, int, void *ptr);
Packit 022b05
Packit 022b05
#define	smiMalloc(s)	_smiMalloc(__FILE__, __LINE__, s)
Packit 022b05
#define	smiRealloc(p,s)	_smiRealloc(__FILE__, __LINE__, p, s)
Packit 022b05
#define	smiStrdup(s)	_smiStrdup(__FILE__, __LINE__, s)
Packit 022b05
#define	smiStrndup(s,n)	_smiStrndup(__FILE__, __LINE__, s, n)
Packit 022b05
#define	smiFree(p)	_smiFree(__FILE__, __LINE__, p)
Packit 022b05
Packit 022b05
#else
Packit 022b05
extern void *smiMalloc(size_t size);
Packit 022b05
extern void *smiRealloc(void *ptr, size_t size);
Packit 022b05
extern char *smiStrdup(const char *s1);
Packit 022b05
extern char *smiStrndup(const char *s1, size_t n);
Packit 022b05
extern void smiFree(void *ptr);
Packit 022b05
#endif
Packit 022b05
Packit 022b05
#ifdef __cplusplus
Packit 022b05
}
Packit 022b05
#endif
Packit 022b05
Packit 022b05
Packit 022b05
#endif /* _SMI_H */