Blame lib/error.c

Packit Service 9ccfef
/*
Packit Service 9ccfef
 * error.c --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Error handling routines.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * See the file "COPYING" for information on usage and redistribution
Packit Service 9ccfef
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * @(#) $Id: error.c 7734 2008-02-15 07:49:14Z schoenw $
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
#include <config.h>
Packit Service 9ccfef
Packit Service 9ccfef
#include <string.h>
Packit Service 9ccfef
#include <stdio.h>
Packit Service 9ccfef
#include <stdarg.h>
Packit Service 9ccfef
#ifdef HAVE_UNISTD_H
Packit Service 9ccfef
#include <unistd.h>
Packit Service 9ccfef
#endif
Packit Service 9ccfef
Packit Service 9ccfef
#if defined(HAVE_WIN_H)
Packit Service 9ccfef
#include "win.h"
Packit Service 9ccfef
#endif
Packit Service 9ccfef
Packit Service 9ccfef
#include "smi.h"
Packit Service 9ccfef
#include "error.h"
Packit Service 9ccfef
#include "util.h"
Packit Service 9ccfef
Packit Service 9ccfef
#ifdef HAVE_DMALLOC_H
Packit Service 9ccfef
#include <dmalloc.h>
Packit Service 9ccfef
#endif
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * Structure to hold error messages with their associated error level.
Packit Service 9ccfef
 * Note that it is possible to modify the error levels at run time.
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct Error {
Packit Service 9ccfef
    int level;			/* 0: fatal, no way to continue		     */
Packit Service 9ccfef
                 		/* 1: severe, changing semantics to continue */
Packit Service 9ccfef
				/*    must be corrected                      */
Packit Service 9ccfef
				/* 2: error, but able to continue,           */
Packit Service 9ccfef
				/*    should be corrected                    */
Packit Service 9ccfef
				/* 3: minor error, but should be corrected   */
Packit Service 9ccfef
				/* 4: change is recommended if possible      */
Packit Service 9ccfef
				/* 5: warning, but might totally correct     */
Packit Service 9ccfef
				/*    under some circumstances               */
Packit Service 9ccfef
				/* 6: just a notice                          */
Packit Service 9ccfef
                                /* 128+: flag to signal an ignored error msg */
Packit Service 9ccfef
    int id;			/* error id, used in error() invocation	     */
Packit Service 9ccfef
    char *tag;			/* tag for error identification on cmd line  */
Packit Service 9ccfef
    char *fmt;			/* the complete error format string	     */
Packit Service 9ccfef
    char *description;		/* text describing the error in more detail  */
Packit Service 9ccfef
} Error;
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * Note: The Makefile produces a list of error macros for every `ERR...'
Packit Service 9ccfef
 * pattern in this file (error.c). This list is written to errormacros.h.
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
static Error errors[] = {
Packit Service 9ccfef
    { 0, ERR_INTERNAL, "internal", 
Packit Service 9ccfef
      "internal error!",
Packit Service 9ccfef
      "An internal error occured in the libsmi core, which is not further\n"
Packit Service 9ccfef
      "specified. This is most likely not related to a bug in a MIB/PIB\n"
Packit Service 9ccfef
      "module or any unexpected circumstances of your system environment.\n"
Packit Service 9ccfef
      "Please submit a detailed bug report to the libsmi maintainer or the\n"
Packit Service 9ccfef
      "libsmi mailing list at <libsmi@ibr.cs.tu-bs.de>."},
Packit Service 9ccfef
    { 0, ERR_MAX_LEX_DEPTH, "import-depth", 
Packit Service 9ccfef
      "maximum IMPORTS nesting, probably a loop?",
Packit Service 9ccfef
      "A new parser instance is created whenever a module imports from\n"
Packit Service 9ccfef
      "another module that has not yet been parsed. This might lead to\n"
Packit Service 9ccfef
      "recursive creation of parser instances in case of recursive imports.\n"
Packit Service 9ccfef
      "The maximum depth of these recursive imports is limited (30).\n"
Packit Service 9ccfef
      "Usually this limit should never be reached. However, this error\n"
Packit Service 9ccfef
      "might occur when modules illegally import definitions in a loop."},
Packit Service 9ccfef
    { 0, ERR_OUT_OF_MEMORY, "internal-memory", 
Packit Service 9ccfef
      "out of memory",
Packit Service 9ccfef
      "Libsmi needs to allocate memory dynamically during runtime, but\n"
Packit Service 9ccfef
      "the system did run out of memory."},
Packit Service 9ccfef
    { 1, ERR_LEX_UNEXPECTED_CHAR, "lexical", 
Packit Service 9ccfef
      "lexically unexpected character, skipping to end of line", 
Packit Service 9ccfef
      "While parsing a MIB/PIB file a lexically unexpected character has\n"
Packit Service 9ccfef
      "been read, so that subsequent input is dropped up to the end of\n"
Packit Service 9ccfef
      "line. Note that MIBs and PIBs only allow 7-bit ASCII characters and\n"
Packit Service 9ccfef
      "no international characters at any place in the file (RFC 2578,\n"
Packit Service 9ccfef
      "Section 3.1.1)."},
Packit Service 9ccfef
    { 1, ERR_OTHER_ERROR, "internal-other", 
Packit Service 9ccfef
      "%s", 
Packit Service 9ccfef
      "An unspecified error occured. Please submit a detailed bug report\n"
Packit Service 9ccfef
      "to the libsmi maintainer or the libsmi mailing list at\n"
Packit Service 9ccfef
      "<libsmi@ibr.cs.tu-bs.de>."},
Packit Service 9ccfef
    { 1, ERR_ILLEGAL_KEYWORD, "keyword-illegal", 
Packit Service 9ccfef
      "illegal keyword `%s'", 
Packit Service 9ccfef
      "ASN.1 has some language keywords that are explicitly forbidden in\n"
Packit Service 9ccfef
      "MIB and PIB files. Such a keyword has been read from the current\n"
Packit Service 9ccfef
      "file (RFC 2578, Section 3.7)."},
Packit Service 9ccfef
    { 2, ERR_ID_ENDS_IN_HYPHEN, "hyphen-end",
Packit Service 9ccfef
      "identifier `%s' illegally ends in a hyphen", NULL},
Packit Service 9ccfef
    { 3, ERR_LEADING_ZEROS, "number-leading-zero",
Packit Service 9ccfef
      "leading zero(s) on a number",
Packit Service 9ccfef
      "A decimal number other than 0 must not start with a 0 digit. The\n"
Packit Service 9ccfef
      "value 0 must be represented as a single 0 digit."},
Packit Service 9ccfef
    { 2, ERR_NUMBER_TOO_LARGE, "number-range",
Packit Service 9ccfef
      "number `%s' too large",
Packit Service 9ccfef
      "The range of numerical values is restricted depending on the\n"
Packit Service 9ccfef
      "underlying base type and possibly further type refinements."},
Packit Service 9ccfef
    { 2, ERR_MODULENAME_64, "namelength-64-module",
Packit Service 9ccfef
      "module name `%s' must not be longer that 64 characters", NULL},
Packit Service 9ccfef
    { 128 + 4, ERR_MODULENAME_32, "namelength-32-module",
Packit Service 9ccfef
      "module name `%s' longer than 32 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_TYPENAME_64, "namelength-64-type",
Packit Service 9ccfef
      "type name `%s' must not be longer that 64 characters", NULL},
Packit Service 9ccfef
    { 128 + 4, ERR_TYPENAME_32, "namelength-32-type",
Packit Service 9ccfef
      "type name `%s' longer than 32 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_OIDNAME_64, "namelength-64-object",
Packit Service 9ccfef
      "object identifier name `%s' must not be longer that 64 characters", NULL},
Packit Service 9ccfef
    { 128 + 4, ERR_OIDNAME_32, "namelength-32-object",
Packit Service 9ccfef
      "object identifier name `%s' longer than 32 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUMNAME_64, "namelength-64-enumeration",
Packit Service 9ccfef
      "enumeration name `%s' must not be longer that 64 characters", NULL},
Packit Service 9ccfef
    { 128 + 4, ERR_ENUMNAME_32, "namelength-32-enumeration",
Packit Service 9ccfef
      "enumeration name `%s' longer than 32 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_BITNAME_64, "namelength-64-bit",
Packit Service 9ccfef
      "bit name `%s' must not be longer than 64 characters", NULL},
Packit Service 9ccfef
    { 128 + 4, ERR_BITNAME_32, "namelength-32-bit",
Packit Service 9ccfef
      "bit name `%s' longer than 32 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_UCIDENTIFIER_64, "namelength-64-uc-identifier",
Packit Service 9ccfef
      "uppercase identifier `%s' must not be longer than 64 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_LCIDENTIFIER_64, "namelength-64-lc-identifier",
Packit Service 9ccfef
      "lowercase identifier `%s' must not be longer than 64 characters", NULL},
Packit Service 9ccfef
    { 2, ERR_TRAP_TYPE, "trap",
Packit Service 9ccfef
      "TRAP-TYPE macro is not allowed in SMIv2", NULL},
Packit Service 9ccfef
    { 2, ERR_TOO_MANY_MODULE_IDENTITIES, "module-identity-multiple",
Packit Service 9ccfef
      "more than one MODULE-IDENTITY clause in SMIv2 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_NO_MODULE_IDENTITY, "module-identity-missing",
Packit Service 9ccfef
      "missing MODULE-IDENTITY clause in SMIv2 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_OID_DEFVAL_TOO_LONG_SMIV2, "default-too-long-smiv2",
Packit Service 9ccfef
      "object identifier default values must be expressed as a single identifier", NULL},
Packit Service 9ccfef
    { 4, ERR_OID_DEFVAL_TOO_LONG_SMIV1, "default-too-long-smiv1",
Packit Service 9ccfef
      "object identifier default values in form of sub-identifier sequences are not implemented", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_SMIV1_ACCESS, "access-invalid-smiv1", 
Packit Service 9ccfef
      "invalid access `%s' in SMIv1 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_SMIV2_ACCESS, "access-invalid-smiv2",
Packit Service 9ccfef
      "invalid access `%s' in SMIv2 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_SMIV2_WRITE_ONLY, "access-write-only-smiv2", 
Packit Service 9ccfef
      "access `write-only' is no longer allowed in SMIv2", NULL},
Packit Service 9ccfef
    { 4, ERR_SMIV1_WRITE_ONLY, "access-write-only-smiv1", 
Packit Service 9ccfef
      "access `write-only' is not a good idea", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, "variation-access-notification", 
Packit Service 9ccfef
      "invalid access `%s' in a notification variation", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_VARIATION_ACCESS, "variation-access", 
Packit Service 9ccfef
      "invalid access `%s' in a variation", NULL},
Packit Service 9ccfef
    { 2, ERR_NOTIFICATION_VARIATION_SYNTAX, "variation-syntax", 
Packit Service 9ccfef
      "SYNTAX is not allowed in a notification variation", NULL},
Packit Service 9ccfef
    { 2, ERR_NOTIFICATION_VARIATION_WRITESYNTAX, "variation-writesyntax", 
Packit Service 9ccfef
      "WRITE-SYNTAX is not allowed in a notification variation", NULL},
Packit Service 9ccfef
    { 2, ERR_DEFVAL_SYNTAX, "defval-syntax", 
Packit Service 9ccfef
      "default value syntax does not match object syntax", NULL},
Packit Service 9ccfef
    { 2, ERR_NOTIFICATION_VARIATION_DEFVAL, "variation-defval", 
Packit Service 9ccfef
      "default value is not allowed in a notification variation", NULL},
Packit Service 9ccfef
    { 2, ERR_NOTIFICATION_VARIATION_CREATION, "variation-creation", 
Packit Service 9ccfef
      "CREATION-REQUIRES is not allowed in a notification variation", NULL},
Packit Service 9ccfef
    { 3, ERR_MODULE_IDENTITY_NOT_FIRST, "module-identity-not-first", 
Packit Service 9ccfef
      "MODULE-IDENTITY clause must be the first declaration in a module", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_SMIV1_STATUS, "status-invalid-smiv1", 
Packit Service 9ccfef
      "invalid status `%s' in SMIv1 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_SMIV2_STATUS, "status-invalid-smiv2", 
Packit Service 9ccfef
      "invalid status `%s' in SMIv2 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_CAPABILITIES_STATUS, "status-invalid-capabilities", 
Packit Service 9ccfef
      "invalid status `%s' in AGENT-CAPABILITIES macro", NULL},
Packit Service 9ccfef
    { 5, ERR_OIDNAME_INCLUDES_HYPHEN, "hyphen-in-object",
Packit Service 9ccfef
      "object identifier name `%s' should not include hyphens in SMIv2 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_ILLEGAL_CHAR_IN_STRING, "char-illegal-string", 
Packit Service 9ccfef
      "illegal character `%c' (0x%2x) in quoted string", NULL},
Packit Service 9ccfef
    { 2, ERR_BIN_STRING_MUL8, "stringlength-binary", 
Packit Service 9ccfef
      "length of binary string `%s' is not a multiple of 8", NULL},
Packit Service 9ccfef
    { 2, ERR_HEX_STRING_MUL2, "stringlength-hexadecimal", 
Packit Service 9ccfef
      "length of hexadecimal string `%s' is not a multiple of 2", NULL},
Packit Service 9ccfef
    { 5, ERR_FLUSH_DECLARATION, "internal-flushing", 
Packit Service 9ccfef
      "flushing recent incorrect declaration, see previous error(s)", NULL},
Packit Service 9ccfef
    { 2, ERR_MAX_ACCESS_IN_SMIV1, "maxaccess-in-smiv1", 
Packit Service 9ccfef
      "MAX-ACCESS is SMIv2 style, use ACCESS in SMIv1 MIBs instead", NULL},
Packit Service 9ccfef
    { 2, ERR_ACCESS_IN_SMIV2, "access-in-smiv2", 
Packit Service 9ccfef
      "ACCESS is SMIv1 style, use MAX-ACCESS in SMIv2 MIBs instead", NULL},
Packit Service 9ccfef
    { 1, ERR_MODULE_NOT_FOUND, "module-not-found", 
Packit Service 9ccfef
      "failed to locate MIB module `%s'", NULL},
Packit Service 9ccfef
    { 1, ERR_OPENING_INPUTFILE, "module-not-readable", 
Packit Service 9ccfef
      "%s: %s", NULL},
Packit Service 9ccfef
    { 1, ERR_ILLEGAL_INPUTFILE, "module-unknown-format", 
Packit Service 9ccfef
      "%s: unable to determine SMI version", NULL},
Packit Service 9ccfef
    { 1, ERR_UNKNOWN_OIDLABEL, "object-identifier-unknown", 
Packit Service 9ccfef
      "unknown object identifier label `%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_OIDLABEL_CHANGED, "object-identifier-label-not-matching", 
Packit Service 9ccfef
      "label `%s' does not match previous label `%s' for same object identifier", NULL},
Packit Service 9ccfef
    { 5, ERR_IDENTIFIER_OID_CHANGED, "object-identifier-oid-not-matching", 
Packit Service 9ccfef
      "object identifier for label `%s' does not match previous label usage", NULL},
Packit Service 9ccfef
    { 2, ERR_EXISTENT_OBJECT, "object-identifier-redefined", 
Packit Service 9ccfef
      "an object named `%s' already exists", NULL},
Packit Service 9ccfef
    { 2, ERR_IDENTIFIER_NOT_IN_MODULE, "import-failed", 
Packit Service 9ccfef
      "identifier `%s' cannot be imported from module `%s'", NULL},
Packit Service 9ccfef
    { 1, ERR_MACRO, "macro-not-allowed", 
Packit Service 9ccfef
      "MACRO definitions are only allowed in SMI base modules", NULL},
Packit Service 9ccfef
    { 1, ERR_CHOICE, "choice-not-allowed", 
Packit Service 9ccfef
      "CHOICE type definitions are only allowed in SMI base modules", NULL},
Packit Service 9ccfef
    { 1, ERR_TYPE_SMI_OR_SPPI, "type-not-allowed", 
Packit Service 9ccfef
      "type `%s' may only be defined in SMI/SPPI base modules", NULL},
Packit Service 9ccfef
    { 1, ERR_TYPE_SPPI, "type-not-allowed-sppi", 
Packit Service 9ccfef
      "type `%s' may only be defined in SPPI base modules", NULL},
Packit Service 9ccfef
    { 1, ERR_TYPE_TAG, "tagged-type-not-allowed", 
Packit Service 9ccfef
      "tagged or IMPLICIT types may only be defined in SMI base modules", NULL},
Packit Service 9ccfef
    { 1, ERR_EXPORTS, "export-not-allowed", 
Packit Service 9ccfef
      "EXPORTS are only allowed in SMIv1 base modules", NULL},
Packit Service 9ccfef
    { 1, ERR_ILLEGALLY_QUALIFIED, "object-identifier-qualified", 
Packit Service 9ccfef
      "illegally qualified object identifier label `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_MISSING_DESCRIPTION, "description-missing", 
Packit Service 9ccfef
      "description missing in object definition", NULL},
Packit Service 9ccfef
    { 2, ERR_OIDLABEL_NOT_FIRST, "object-identifier-not-prefix", 
Packit Service 9ccfef
      "Object identifier element `%s' name only allowed as first element", NULL},
Packit Service 9ccfef
    { 2, ERR_UNKNOWN_TYPE, "type-unknown", 
Packit Service 9ccfef
      "unknown type `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_UNKNOWN_CLASS, "class-unknown", 
Packit Service 9ccfef
      "unknown class `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_UNKNOWN_TYPE_OR_CLASS, "type-or-class-unknown", 
Packit Service 9ccfef
      "unknown type or class `%s' in attribute statement", NULL},
Packit Service 9ccfef
    { 2, ERR_ATTRIBUTE_CLASS_ACCESS, "class-refference-access-statement", 
Packit Service 9ccfef
      "attribute `%s' refferences class and must not have access statement", NULL},
Packit Service 9ccfef
    { 2, ERR_ATTRIBUTE_MISSING_ACCESS, "type-refference-missing-access-statement", 
Packit Service 9ccfef
      "attribute `%s' refferences type and must have access statement", NULL},
Packit Service 9ccfef
    { 2, ERR_ATTRIBUTE_CLASS_DEFAULT, "class-refference-default-statement", 
Packit Service 9ccfef
      "attribute `%s' refferences class and must not have default statement", NULL},
Packit Service 9ccfef
    { 2, ERR_ATTRIBUTE_CLASS_FORMAT, "class-refference-format-statement", 
Packit Service 9ccfef
      "attribute `%s' refferences class and must not have format statement", NULL},
Packit Service 9ccfef
    { 2, ERR_ATTRIBUTE_CLASS_UNITS, "class-refference-unit-statement", 
Packit Service 9ccfef
      "attribute `%s' refferences class and must not have units statement", NULL},
Packit Service 9ccfef
    { 2, ERR_DUPLICATE_TYPE_NAME, "duplicate-type-name", 
Packit Service 9ccfef
      "type name `%s' already used in this module", NULL},
Packit Service 9ccfef
    { 2, ERR_ATTRIBUTE_NOT_FOUND, "unknown-attribute-name", 
Packit Service 9ccfef
      "attribute name `%s' is not defined in this class", NULL},
Packit Service 9ccfef
    { 2, ERR_DUPLICATE_ATTRIBUTE_NAME, "duplicate-attribute-name", 
Packit Service 9ccfef
      "attribute name `%s' already used in this class", NULL},
Packit Service 9ccfef
    { 2, ERR_DUPLICATE_CLASS_NAME, "duplicate-class-name", 
Packit Service 9ccfef
      "class name `%s' already used in this module", NULL},
Packit Service 9ccfef
    { 2, ERR_ILLEGAL_RANGE_FOR_COUNTER, "counter-range-illegal", 
Packit Service 9ccfef
      "illegal range restriction for counter type `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, "range-illegal", 
Packit Service 9ccfef
      "illegal range restriction for non-numerical parent type `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, "size-illegal", 
Packit Service 9ccfef
      "illegal size restriction for non-octet-string parent type `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, "enum-illegal", 
Packit Service 9ccfef
      "illegal enumeration or bits restriction for non-enumeration-or-bits parent type `%s'", NULL},
Packit Service 9ccfef
    { 1, ERR_SMIV2_SIGNED_NUMBER_RANGE, "out-of-range-signed", 
Packit Service 9ccfef
      "number `%s' is out of SMIv1/SMIv2 signed number range", NULL},
Packit Service 9ccfef
    { 1, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, "out-of-range-unsigned", 
Packit Service 9ccfef
      "number `%s' is out of SMIv1/SMIv2 unsigned number range", NULL},
Packit Service 9ccfef
    { 1, ERR_INTEGER32_TOO_LARGE, "out-of-range-integer32", 
Packit Service 9ccfef
      "Integer32 value `%u' is too large", NULL},
Packit Service 9ccfef
    { 1, ERR_UNEXPECTED_VALUETYPE, "type-not-matching", 
Packit Service 9ccfef
      "type of value does not match declaration", NULL},
Packit Service 9ccfef
    { 1, ERR_FLOAT_OVERFLOW, "under-or-overflow-float", 
Packit Service 9ccfef
      "float value `%s' cannot be stored as it causes over or underflow", NULL},
Packit Service 9ccfef
    { 1, ERR_SMI_NOT_SUPPORTED, "smi-not-supported", 
Packit Service 9ccfef
      "file `%s' seems to be SMIv1 or SMIv2 which is not supported", NULL},
Packit Service 9ccfef
    { 1, ERR_SMING_NOT_SUPPORTED, "sming-not-supported", 
Packit Service 9ccfef
      "file `%s' seems to be SMIng which is not supported", NULL},
Packit Service 9ccfef
    { 5, ERR_UNUSED_IMPORT, "import-unused", 
Packit Service 9ccfef
      "identifier `%s' imported from module `%s' is never used", NULL},
Packit Service 9ccfef
    { 2, ERR_MACRO_NOT_IMPORTED, "macro-not-imported", 
Packit Service 9ccfef
      "macro `%s' has not been imported from module `%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_IMPLICIT_NODE, "node-implicit", 
Packit Service 9ccfef
      "implicit node definition", NULL},
Packit Service 9ccfef
    { 3, ERR_SCALAR_READCREATE, "scalar-not-creatable", 
Packit Service 9ccfef
      "scalar object must not have a `read-create' access value", NULL},
Packit Service 9ccfef
    { 4, ERR_NAMEDNUMBER_INCLUDES_HYPHEN, "hyphen-in-label", 
Packit Service 9ccfef
      "named number `%s' must not include a hyphen in SMIv2", NULL},
Packit Service 9ccfef
    { 4, ERR_NAMEDBIT_INCLUDES_HYPHEN, "hyphen-in-label", 
Packit Service 9ccfef
      "named bit `%s' must not include a hyphen in SMIv2", NULL},
Packit Service 9ccfef
    { 2, ERR_REDEFINITION, "identifier-redefined", 
Packit Service 9ccfef
      "redefinition of identifier `%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_EXT_REDEFINITION, "identifier-external-redefined", 
Packit Service 9ccfef
      "redefinition of identifier `%s::%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_CASE_REDEFINITION, "identifier-case-match", 
Packit Service 9ccfef
      "identifier `%s' differs from `%s' only in case", NULL},
Packit Service 9ccfef
    { 5, ERR_EXT_CASE_REDEFINITION, "identifier-external-case-match", 
Packit Service 9ccfef
      "identifier `%s' differs from `%s::%s' only in case", NULL},
Packit Service 9ccfef
    { 5, ERR_BASETYPE_REDEFINITION, "identifier-basetype-redefined", 
Packit Service 9ccfef
      "definition of identifier `%s' which is already a SMI or SPPI basetype", NULL},
Packit Service 9ccfef
    { 6, ERR_PREVIOUS_DEFINITION, "previous-definition",
Packit Service 9ccfef
      "previous definition of `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_FORMAT, "invalid-format", 
Packit Service 9ccfef
      "invalid format specification `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_REFINEMENT_ALREADY_EXISTS, "refinement-exists", 
Packit Service 9ccfef
      "refinement for `%s' already exists in this compliance statement", NULL},
Packit Service 9ccfef
    { 3, ERR_OPTIONALGROUP_ALREADY_EXISTS, "optional-group-exists", 
Packit Service 9ccfef
      "optional group definition for `%s' already exists in this compliance statement", NULL},
Packit Service 9ccfef
    { 2, ERR_UNEXPECTED_TYPE_RESTRICTION, "subtype-illegal", 
Packit Service 9ccfef
      "subtyping not allowed",
Packit Service 9ccfef
      "The types OBJECT IDENTIFIER, IpAddress, Counter32, Counter64,\n"
Packit Service 9ccfef
      "and TimeTicks, and any types in a SEQUENCE clause must not be\n"
Packit Service 9ccfef
      "sub-typed (RFC 2578, Sections 7.1.12 and 9)."},
Packit Service 9ccfef
    { 1, ERR_UNKNOWN_CONFIG_CMD, "config-command-unknown", 
Packit Service 9ccfef
      "unknown configuration command `%s' in file `%s'", NULL},
Packit Service 9ccfef
    { 6, ERR_CACHE_CONFIG_NOT_SUPPORTED, "config-caching-not-supported", 
Packit Service 9ccfef
      "module caching is not supported though configured in file `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_SMIV2_OPAQUE_OBSOLETE, "opaque-smiv2", 
Packit Service 9ccfef
      "SMIv2 provides Opaque solely for backward-compatibility", NULL},
Packit Service 9ccfef
    { 4, ERR_SPPI_OPAQUE_OBSOLETE, "opaque-sppi", 
Packit Service 9ccfef
      "SPPI provides Opaque solely for backward-compatibility", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_CHARACTER, "date-character", 
Packit Service 9ccfef
      "date specification `%s' contains an illegal character", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_LENGTH, "date-length", 
Packit Service 9ccfef
      "date specification `%s' has an illegal length", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_VALUE, "date-value", 
Packit Service 9ccfef
      "date specification `%s' contains an illegal value", NULL},
Packit Service 9ccfef
    { 5, ERR_DATE_YEAR_2DIGITS, "date-year-2digits", 
Packit Service 9ccfef
      "date specification `%s' contains a two-digit year representing `%d'", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_YEAR, "date-year", 
Packit Service 9ccfef
      "date specification `%s' contains an illegal year", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_MONTH, "date-month", 
Packit Service 9ccfef
      "date specification `%s' contains an illegal month", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_DAY, "date-day", 
Packit Service 9ccfef
      "date specification `%s' contains an illegal day", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_HOUR, "date-hour", 
Packit Service 9ccfef
      "date specification `%s' contains an illegal hour", NULL},
Packit Service 9ccfef
    { 2, ERR_DATE_MINUTES, "date-minutes", 
Packit Service 9ccfef
      "date specification `%s' contains illegal minutes", NULL},
Packit Service 9ccfef
    { 4, ERR_DATE_IN_FUTURE, "date-in-future", 
Packit Service 9ccfef
      "date specification `%s' is in the future", NULL},
Packit Service 9ccfef
    { 4, ERR_DATE_IN_PAST, "date-in-past", 
Packit Service 9ccfef
      "date specification `%s' predates the SMI standard", NULL},
Packit Service 9ccfef
    { 3, ERR_REVISION_NOT_DESCENDING, "revision-not-descending", 
Packit Service 9ccfef
      "revision not in reverse chronological order", NULL},
Packit Service 9ccfef
    { 3, ERR_REVISION_MISSING, "revision-missing", 
Packit Service 9ccfef
      "revision for last update is missing", NULL},
Packit Service 9ccfef
    { 3, ERR_REVISION_AFTER_LAST_UPDATE, "revision-after-update", 
Packit Service 9ccfef
      "revision date after last update", NULL},
Packit Service 9ccfef
    { 5, ERR_INTEGER_IN_SMIV2, "integer-misuse", 
Packit Service 9ccfef
      "use Integer32 instead of INTEGER in SMIv2", NULL},
Packit Service 9ccfef
    { 5, ERR_MODULE_ALREADY_LOADED, "module-already-loaded", 
Packit Service 9ccfef
      "module `%s' is already loaded, aborting parser on this file", NULL},
Packit Service 9ccfef
    { 5, ERR_IDENTITY_PARENT_NOT_FOUND, "sming-identity-parent-not-found", 
Packit Service 9ccfef
      "sming identity parent `%s' could not be found, or is forward reference", NULL},
Packit Service 9ccfef
    { 2, ERR_SMIV2_BASETYPE_NOT_IMPORTED, "basetype-not-imported", 
Packit Service 9ccfef
      "SMIv2 base type `%s' must be imported from SNMPv2-SMI", NULL},
Packit Service 9ccfef
    { 2, ERR_BASETYPE_UNKNOWN, "basetype-unknown", 
Packit Service 9ccfef
      "type `%s' of node `%s' does not resolve to a known base type", NULL},
Packit Service 9ccfef
    { 2, ERR_ROW_SUBID_ONE, "row-node-subidentifier-one", 
Packit Service 9ccfef
      "subidentifier of row node `%s' must be 1", NULL},
Packit Service 9ccfef
    { 5, ERR_ROWNAME_ENTRY, "row-name-entry", 
Packit Service 9ccfef
      "row identifier `%s' should match `*Entry'", NULL},
Packit Service 9ccfef
    { 5, ERR_TABLENAME_TABLE, "table-name-table", 
Packit Service 9ccfef
      "table identifier `%s' should match `*Table'", NULL},
Packit Service 9ccfef
    { 5, ERR_ROWNAME_TABLENAME, "row-name-table-name",
Packit Service 9ccfef
      "row identifier `%s' should have the same prefix as table identifier `%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_SMIV2_TYPE_ASSIGNEMENT, "type-assignement-smiv2", 
Packit Service 9ccfef
      "type assignement `%s' should be a textual convention in SMIv2", NULL},
Packit Service 9ccfef
    { 5, ERR_ILLEGAL_IMPORT, "import-illegal", 
Packit Service 9ccfef
      "identifier `%s' may not be imported from module `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, "textual-convention-nested", 
Packit Service 9ccfef
      "textual convention `%s' can not be derived from the textual convention `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_TABLE_ACCESS, "access-table-illegal", 
Packit Service 9ccfef
      "table node `%s' must be `not-accessible'", NULL},
Packit Service 9ccfef
    { 3, ERR_ROW_ACCESS, "access-row-illegal", 
Packit Service 9ccfef
      "row node `%s' must be `not-accessible'", NULL},
Packit Service 9ccfef
    { 4, ERR_COUNTER_ACCESS, "access-counter-illegal", 
Packit Service 9ccfef
      "counter object `%s' must be `read-only' or `accessible-for-notify'", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUM_SUBTYPE_OF, "subtype-enumeration-illegal", 
Packit Service 9ccfef
      "named number `%s(%d)' illegal in sub-type of `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_BITS_SUBTYPE_OF, "subtype-bits-illegal", 
Packit Service 9ccfef
      "named number `%s' illegal in sub-type of `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUM_SUBTYPE, "subtype-enumeration-illegal", 
Packit Service 9ccfef
      "named number `%s(%d)' illegal in sub-type", NULL},
Packit Service 9ccfef
    { 2, ERR_BITS_SUBTYPE, "subtype-bits-illegal", 
Packit Service 9ccfef
      "named number `%s' illegal in sub-type", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUM_NAME_REDEFINITION, "enum-name-redefinition", 
Packit Service 9ccfef
      "redefinition of name `%s' in number enumeration", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUM_NUMBER_REDEFINITION, "enum-number-redefinition", 
Packit Service 9ccfef
      "redefinition of number `%d' in number enumeration", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUM_NAME_NOT_DEFINED, "enum-name-not-defined", 
Packit Service 9ccfef
      "enumeration name `%s' not defined in this scope ", NULL},
Packit Service 9ccfef
    { 2, ERR_ENUM_ZERO, "enum-zero", 
Packit Service 9ccfef
      "number enumeration contains zero value in SMIv1 MIB", NULL},
Packit Service 9ccfef
    { 2, ERR_BITS_NAME_REDEFINITION, "bits-name-redefinition", 
Packit Service 9ccfef
      "redefinition of name `%s' in named bits list", NULL},
Packit Service 9ccfef
    { 2, ERR_BITS_NUMBER_REDEFINITION, "bits-number-redefinition", 
Packit Service 9ccfef
      "redefinition of number `%u' in named bits list", NULL},
Packit Service 9ccfef
    { 2, ERR_BITS_NUMBER_NEGATIVE, "bits-number-negative", 
Packit Service 9ccfef
      "there is negative number in bits definition", NULL},
Packit Service 9ccfef
    { 2, ERR_BITS_NUMBER_TOO_LARGE, "bits-number-too-large", 
Packit Service 9ccfef
      "named bit `%s(%u)' exceeds maximum bit position", NULL},
Packit Service 9ccfef
    { 4, ERR_BITS_NUMBER_LARGE, "bits-number-large", 
Packit Service 9ccfef
      "named bit `%s(%u)' may cause interoperability or implementation problems", NULL},
Packit Service 9ccfef
    { 4, ERR_BITS_ZERO_NOT_NAMED, "bits-zero-not-used",
Packit Service 9ccfef
      "first bit (bit zero) has no name assigned",
Packit Service 9ccfef
      "Named bits should start at bit position zero (RFC 2578,\n"
Packit Service 9ccfef
      "Section 7.1.4)."},
Packit Service 9ccfef
    { 2, ERR_RANGE_OUT_OF_BASETYPE, "range-bounds",
Packit Service 9ccfef
      "range limit exceeds underlying basetype", NULL},
Packit Service 9ccfef
    { 2, ERR_RANGE_OVERLAP, "range-overlap",
Packit Service 9ccfef
      "overlapping range limits", NULL},
Packit Service 9ccfef
    { 5, ERR_RANGES_NOT_ASCENDING, "range-ascending",
Packit Service 9ccfef
      "ranges not in ascending order", NULL},
Packit Service 9ccfef
    { 5, ERR_NAMED_NUMBERS_NOT_ASCENDING, "named-numbers-ascending",
Packit Service 9ccfef
      "named numbers not in ascending order", NULL},
Packit Service 9ccfef
    { 2, ERR_EXCHANGED_RANGE_LIMITS, "range-exchanged",
Packit Service 9ccfef
      "range limits must be `lower-bound .. upper-bound'", NULL},
Packit Service 9ccfef
    { 1, ERR_INDEX_BASETYPE, "index-illegal-basetype", 
Packit Service 9ccfef
      "illegal base type `%s' in index element `%s' of row %s", NULL},
Packit Service 9ccfef
    { 5, ERR_INDEX_TOO_LARGE, "index-exceeds-too-large", 
Packit Service 9ccfef
      "index of row `%s' can exceed OID size limit by %d subidentifier(s)", NULL},
Packit Service 9ccfef
    { 2, ERR_INDEX_NO_RANGE, "index-element-no-range",
Packit Service 9ccfef
      "index element `%s' of row `%s' must have a range restriction", NULL},
Packit Service 9ccfef
    { 2, ERR_INDEX_NO_RANGE_MOD, "index-element-no-range",
Packit Service 9ccfef
      "index element `%s::%s' of row `%s' must have a range restriction", NULL},
Packit Service 9ccfef
    { 3, ERR_INDEX_STRING_NO_SIZE, "index-element-no-size",
Packit Service 9ccfef
      "index element `%s' of row `%s' must have a size restriction",
Packit Service 9ccfef
      "Object identifiers are restricted in size to have at most 128\n"
Packit Service 9ccfef
      "sub-identifiers. This implies that index elements used to form\n"
Packit Service 9ccfef
      "instance identifiers must have a size contraint which ensures\n"
Packit Service 9ccfef
      "that the 128 sub-identifier constraint is kept intact for any\n"
Packit Service 9ccfef
      "possible combination of the index elements' values (RFC 2578,\n"
Packit Service 9ccfef
      "Section 3.5)."},
Packit Service 9ccfef
    { 3, ERR_INDEX_STRING_NO_SIZE_MOD, "index-element-no-size",
Packit Service 9ccfef
      "index element `%s::%s' of row `%s' must have a size restriction",
Packit Service 9ccfef
      "Object identifiers are restricted in size to have at most 128\n"
Packit Service 9ccfef
      "sub-identifiers. This implies that index elements used to form\n"
Packit Service 9ccfef
      "instance identifiers must have a size contraint which ensures\n"
Packit Service 9ccfef
      "that the 128 sub-identifier constraint is kept intact for any\n"
Packit Service 9ccfef
      "possible combination of the index elements' values (RFC 2578,\n"
Packit Service 9ccfef
      "Section 3.5)."},
Packit Service 9ccfef
    { 3, ERR_INDEX_OID_NO_SIZE, "index-element-no-size",
Packit Service 9ccfef
      "index element `%s' of row `%s' should but cannot have a size restriction",
Packit Service 9ccfef
      "Object identifiers are restricted in size to have at most 128\n"
Packit Service 9ccfef
      "sub-identifiers. This implies that all index elements used to form\n"
Packit Service 9ccfef
      "instance identifiers should have a size contraint which ensures\n"
Packit Service 9ccfef
      "that the 128 sub-identifier constraint is kept intact for any\n"
Packit Service 9ccfef
      "possible combination of the index elements' values (RFC 2578,\n"
Packit Service 9ccfef
      "Section 3.5). However the type OBJECT IDENTIFIER cannot formally\n"
Packit Service 9ccfef
      "be restricted in size (Section 9) although it is legal to use\n"
Packit Service 9ccfef
      "objects of type OBJECT IDENTIFIER as index elements."},
Packit Service 9ccfef
    { 6, ERR_INDEX_OID_NO_SIZE_MOD, "index-element-no-size",
Packit Service 9ccfef
      "index element `%s::%s' of row `%s' should but cannot have a size restriction",
Packit Service 9ccfef
      "Object identifiers are restricted in size to have at most 128\n"
Packit Service 9ccfef
      "sub-identifiers. This implies that all index elements used to form\n"
Packit Service 9ccfef
      "instance identifiers should have a size contraint which ensures\n"
Packit Service 9ccfef
      "that the 128 sub-identifier constraint is kept intact for any\n"
Packit Service 9ccfef
      "possible combination of the index elements' values (RFC 2578,\n"
Packit Service 9ccfef
      "Section 3.5). However the type OBJECT IDENTIFIER cannot formally\n"
Packit Service 9ccfef
      "be restricted in size (Section 9) although it is legal to use\n"
Packit Service 9ccfef
      "objects of type OBJECT IDENTIFIER as index elements."},
Packit Service 9ccfef
    { 1, ERR_INDEX_RANGE_NEGATIVE, "index-element-range-negative",
Packit Service 9ccfef
      "range restriction of index element `%s' of row `%s' must be non-negative", NULL},
Packit Service 9ccfef
    { 1, ERR_INDEX_ENUM_NEGATIVE, "index-element-enum-negative",
Packit Service 9ccfef
      "enumerations of index element `%s' of row `%s' must be non-negative", NULL},
Packit Service 9ccfef
    { 5, ERR_INDEX_NOT_COLUMN, "index-element-not-column",
Packit Service 9ccfef
      "index element `%s' of row `%s' must be a column", NULL},
Packit Service 9ccfef
    { 2, ERR_AUGMENT_NESTED, "augment-nested",
Packit Service 9ccfef
      "row `%s' augments `%s' which is not a base table row", NULL},
Packit Service 9ccfef
    { 2, ERR_AUGMENT_NO_ROW, "augment-no-row",
Packit Service 9ccfef
      "row `%s' augments or extends `%s' which is not a row", NULL},
Packit Service 9ccfef
    { 4, ERR_NODE_NOT_IN_GROUP, "group-membership",
Packit Service 9ccfef
      "node `%s' must be contained in at least one conformance group", NULL},
Packit Service 9ccfef
    { 4, ERR_NOTIFICATION_NOT_IN_GROUP, "group-membership",
Packit Service 9ccfef
      "notification `%s' must be contained in at least one conformance group", NULL},
Packit Service 9ccfef
    { 3, ERR_INVALID_GROUP_MEMBER, "group-member-invalid",
Packit Service 9ccfef
      "node `%s' is an invalid member of group `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_MIXED_GROUP_MEMBERS, "group-member-mixed",
Packit Service 9ccfef
      "group `%s' contains scalars/columns and notifications", NULL},
Packit Service 9ccfef
    { 2, ERR_BAD_LOWER_IDENTIFIER_CASE, "bad-identifier-case",
Packit Service 9ccfef
      "`%s' should start with a lower case letter", NULL},
Packit Service 9ccfef
    { 2, ERR_UNDERSCORE_IN_IDENTIFIER, "underscore-in-identifier",
Packit Service 9ccfef
      "identifier `%s' must not contain an underscore", NULL},
Packit Service 9ccfef
    { 5, ERR_OID_REUSE, "oid-reuse",
Packit Service 9ccfef
      "identifier `%s' reuses object identifier assigned to identifier `%s'", NULL},
Packit Service 9ccfef
    { 1, ERR_OID_REGISTERED, "oid-registered",
Packit Service 9ccfef
      "identifier `%s' registers object identifier already registered by `%s'", NULL},
Packit Service 9ccfef
    { 1, ERR_OID_RECURSIVE, "oid-recursive",
Packit Service 9ccfef
      "object identifier `%s' defined recursively or too long", NULL},
Packit Service 9ccfef
    { 5, ERR_COMMENT_TERMINATES, "comment-terminates",
Packit Service 9ccfef
      "note, -- terminates a comment", NULL},
Packit Service 9ccfef
    { 5, ERR_OBSOLETE_IMPORT, "obsolete-import",
Packit Service 9ccfef
      "identifier `%s' should be imported from `%s' instead of `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_GROUP_OBJECT_STATUS, "group-object-status",
Packit Service 9ccfef
      "%s group `%s' includes %s object `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_COMPLIANCE_GROUP_STATUS, "compliance-group-status",
Packit Service 9ccfef
      "%s compliance statement `%s' includes %s group `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_COMPLIANCE_OBJECT_STATUS, "compliance-object-status",
Packit Service 9ccfef
      "%s compliance statement `%s' includes %s object `%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_GROUP_UNREF, "group-unref",
Packit Service 9ccfef
      "%s group `%s' is not referenced in this module", NULL},
Packit Service 9ccfef
    { 5, ERR_TYPE_UNREF, "type-unref",
Packit Service 9ccfef
      "%s type `%s' is not referenced in this module", NULL},
Packit Service 9ccfef
    { 5, ERR_SEQUENCE_ORDER, "sequence-order", 
Packit Service 9ccfef
      "SEQUENCE element #%d `%s' does not match order of columnar objects under `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_SEQUENCE_NO_COLUMN, "sequence-no-column", 
Packit Service 9ccfef
      "SEQUENCE element #%d `%s' is not a child node under `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_SEQUENCE_MISSING_COLUMN, "sequence-missing-column", 
Packit Service 9ccfef
      "SEQUENCE of `%s' is missing columnar object `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_ILLEGAL_ROWSTATUS_DEFAULT, "rowstatus-default", 
Packit Service 9ccfef
      "illegal `RowStatus' default value `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_ILLEGAL_ROWSTATUS_ACCESS, "rowstatus-access", 
Packit Service 9ccfef
      "illegal `RowStatus' access value", NULL},
Packit Service 9ccfef
    { 4, ERR_ILLEGAL_STORAGETYPE_DEFAULT, "storagetype-default", 
Packit Service 9ccfef
      "illegal `StorageType' default value `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_DEFVAL_OUT_OF_BASETYPE, "defval-basetype", 
Packit Service 9ccfef
      "default value exceeds range of underlying basetype", NULL},
Packit Service 9ccfef
    { 2, ERR_DEFVAL_OUT_OF_RANGE, "defval-range", 
Packit Service 9ccfef
      "default value does not match range restriction of underlying type", NULL},
Packit Service 9ccfef
    { 2, ERR_DEFVAL_OUT_OF_ENUM, "defval-enum", 
Packit Service 9ccfef
      "default value does not match underlying enumeration type", NULL},
Packit Service 9ccfef
    { 5, ERR_TADDRESS_WITHOUT_TDOMAIN, "taddress-tdomain", 
Packit Service 9ccfef
      "`TAddress' object should have an accompanied `TDomain' object", NULL},
Packit Service 9ccfef
    { 5, ERR_INETADDRESS_WITHOUT_TYPE, "inetaddress-inetaddresstype", 
Packit Service 9ccfef
      "`InetAddress' object should have an accompanied preceding `InetAdressType' object", NULL},
Packit Service 9ccfef
    { 5, ERR_INETADDRESSTYPE_SUBTYPED, "inetaddresstype-subtyped", 
Packit Service 9ccfef
      "`InetAddressType' should not be subtyped", NULL},
Packit Service 9ccfef
    { 5, ERR_INETADDRESS_SPECIFIC, "inetaddress-specific", 
Packit Service 9ccfef
      "`InetAddress' should be used instead of `%s'", NULL},
Packit Service 9ccfef
    { 5, ERR_TRANSPORTADDRESS_WITHOUT_TYPE, "transportaddress-transportaddresstype", 
Packit Service 9ccfef
      "`TransportAddress' object should have an accompanied preceding `TransportAdressType' or `TransportDomain' object", NULL},
Packit Service 9ccfef
    { 5, ERR_TRANSPORTADDRESSTYPE_SUBTYPED, "transportaddresstype-subtyped", 
Packit Service 9ccfef
      "`TransportAddressType' should not be subtyped", NULL},
Packit Service 9ccfef
    { 5, ERR_TRANSPORTADDRESS_SPECIFIC, "transportaddress-specific", 
Packit Service 9ccfef
      "`TransportAddress' should be used instead of `%s'", NULL},
Packit Service 9ccfef
    { 3, ERR_NOTIFICATION_OBJECT_TYPE, "notification-object-type", 
Packit Service 9ccfef
      "object `%s' of notification `%s' must be a scalar or column", NULL},
Packit Service 9ccfef
    { 3, ERR_NOTIFICATION_OBJECT_ACCESS, "notification-object-access", 
Packit Service 9ccfef
      "object `%s' of notification `%s' must not be `not-accessible'", NULL},
Packit Service 9ccfef
    { 5, ERR_NOTIFICATION_OBJECT_MIX, "notification-object-mix", 
Packit Service 9ccfef
      "notification `%s' contains objects from multiple tables/groups", NULL},
Packit Service 9ccfef
    { 5, ERR_EMPTY_DESCRIPTION, "empty-description",
Packit Service 9ccfef
      "zero-length description string", NULL},
Packit Service 9ccfef
    { 5, ERR_EMPTY_REFERENCE, "empty-reference",
Packit Service 9ccfef
      "zero-length reference string", NULL},
Packit Service 9ccfef
    { 5, ERR_EMPTY_ORGANIZATION, "empty-organization",
Packit Service 9ccfef
      "zero-length organization string", NULL},
Packit Service 9ccfef
    { 5, ERR_EMPTY_CONTACT, "empty-contact",
Packit Service 9ccfef
      "zero-length contact string", NULL},
Packit Service 9ccfef
    { 5, ERR_EMPTY_FORMAT, "empty-format",
Packit Service 9ccfef
      "zero-length format string", NULL},
Packit Service 9ccfef
    { 5, ERR_EMPTY_UNITS, "empty-units",
Packit Service 9ccfef
      "zero-length units string", NULL},
Packit Service 9ccfef
    { 5, ERR_INDEX_DEFVAL, "index-element-has-default",
Packit Service 9ccfef
      "index element `%s' of row `%s' has a default value", NULL},
Packit Service 9ccfef
    { 2, ERR_SEQUENCE_TYPE_MISMATCH, "sequence-type-mismatch",
Packit Service 9ccfef
      "type of `%s' in sequence and object type definition do not match", NULL},
Packit Service 9ccfef
    { 5, ERR_INDEX_ACCESSIBLE, "index-element-accessible",
Packit Service 9ccfef
      "index element `%s' of row `%s' should be not-accessible in SMIv2 MIB", NULL},
Packit Service 9ccfef
    { 5, ERR_INDEX_NON_ACCESSIBLE, "index-element-not-accessible",
Packit Service 9ccfef
      "exactly one index element of row `%s' must be accessible", NULL},
Packit Service 9ccfef
    { 3, ERR_REFINEMENT_NOT_LISTED, "refinement-not-listed",
Packit Service 9ccfef
      "refined object `%s' not listed in a mandatory or optional group", NULL},
Packit Service 9ccfef
    { 5, ERR_NOTIFICATION_NOT_REVERSIBLE, "notification-not-reversible",
Packit Service 9ccfef
      "notification `%s' is not reverse mappable", NULL},
Packit Service 9ccfef
    { 5, ERR_NOTIFICATION_ID_TOO_LARGE, "notification-id-too-large",
Packit Service 9ccfef
      "last sub-identifier of notification `%s' too large", NULL},
Packit Service 9ccfef
    { 2, ERR_NODE_PARENT_TYPE, "parent-node",
Packit Service 9ccfef
      "node's parent node must be simple node", NULL},
Packit Service 9ccfef
    { 2, ERR_SCALAR_PARENT_TYPE, "parent-scalar",
Packit Service 9ccfef
      "scalar's parent node must be simple node", NULL},
Packit Service 9ccfef
    { 2, ERR_TABLE_PARENT_TYPE, "parent-table",
Packit Service 9ccfef
      "table's parent node must be simple node", NULL},
Packit Service 9ccfef
    { 2, ERR_TABLE_ROW_TYPE_MISMATCH, "table-type",
Packit Service 9ccfef
      "table's SEQUENCE OF type does not match row type", NULL},
Packit Service 9ccfef
    { 2, ERR_ROW_PARENT_TYPE, "parent-row",
Packit Service 9ccfef
      "row's parent node must be a table node", NULL},
Packit Service 9ccfef
    { 2, ERR_COLUMN_PARENT_TYPE, "parent-column",
Packit Service 9ccfef
      "columnar object's parent node must be a row", NULL},
Packit Service 9ccfef
    { 2, ERR_NOTIFICATION_PARENT_TYPE, "parent-notification",
Packit Service 9ccfef
      "notifications's parent node must be a simple node", NULL},
Packit Service 9ccfef
    { 2, ERR_GROUP_PARENT_TYPE, "parent-group",
Packit Service 9ccfef
      "group's parent node must be a simple node", NULL},
Packit Service 9ccfef
    { 2, ERR_COMPLIANCE_PARENT_TYPE, "parent-compliance",
Packit Service 9ccfef
      "compliance's parent node must be a simple node", NULL},
Packit Service 9ccfef
    { 2, ERR_CAPABILITIES_PARENT_TYPE, "parent-capabilities",
Packit Service 9ccfef
      "capabilities' parent node must be a simple node", NULL},
Packit Service 9ccfef
    { 1, ERR_SPPI_SIGNED64_NUMBER_RANGE, "out-of-range-signed64", 
Packit Service 9ccfef
      "number `%s' is out of range for SPPI 64bit signed numbers", NULL},
Packit Service 9ccfef
    { 1, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, "out-of-range-unsigned64", 
Packit Service 9ccfef
      "number `%s' is out of range for SPPI 64bit unsigned numbers", NULL},
Packit Service 9ccfef
    { 1, ERR_SMI_CONSTRUCT_IN_PIB, "keyword-illegal-in-pib", 
Packit Service 9ccfef
      "the SMI construct/keyword `%s' may not be used in a PIB", NULL},
Packit Service 9ccfef
    { 5, ERR_SMI_TYPE_IN_PIB, "smi-type-in-pib", 
Packit Service 9ccfef
      "`%s' is a base type in SMI", NULL},
Packit Service 9ccfef
    { 1, ERR_SPPI_CONSTRUCT_IN_MIB, "keyword-illegal-in-mib", 
Packit Service 9ccfef
      "the SPPI construct/keyword `%s' may not be used in a MIB", NULL},
Packit Service 9ccfef
    { 5, ERR_SPPI_TYPE_IN_MIB, "sppi-type-in-mib", 
Packit Service 9ccfef
      "`%s' is a base type in SPPI", NULL},
Packit Service 9ccfef
    { 2, ERR_POLICY_ACCESS_IN_PIB, "policy-access",
Packit Service 9ccfef
      "the PIB uses POLICY-ACCESS where PIB-ACCESS is required", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_SPPI_ACCESS, "access-invalid-sppi", 
Packit Service 9ccfef
      "invalid access `%s' in SPPI PIB", NULL},
Packit Service 9ccfef
    { 2, ERR_INVALID_SPPI_STATUS, "status-invalid-sppi", 
Packit Service 9ccfef
      "invalid status `%s' in SPPI PIB", NULL},
Packit Service 9ccfef
    { 1, ERR_SUBJECT_CATEGORIES_MISSING, "subject-categories-missing",
Packit Service 9ccfef
      "a MODULE-IDENTITY clause lacks SUBJECT-CATEGORIES", NULL},
Packit Service 9ccfef
    { 2, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS, "not-accessible-in-pib-access",
Packit Service 9ccfef
      "PIB-ACCESS must not be set to `not-accessible'", NULL},
Packit Service 9ccfef
    { 2, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS, "report-only-in-pib-min-access",
Packit Service 9ccfef
      "PIB-MIN-ACCESS must not be set to `report-only'", NULL},
Packit Service 9ccfef
    { 1, ERR_INDEX_AND_AUGMENTS_USED, "index-and-augments",
Packit Service 9ccfef
      "either INDEX or AUGMENTS may be used, but not both", NULL},
Packit Service 9ccfef
    { 1, ERR_INDEX_WITHOUT_PIB_INDEX, "index-without-pib-index",
Packit Service 9ccfef
      "INDEX may not be used without PIB-INDEX", NULL},
Packit Service 9ccfef
    { 3, ERR_ERROR_NUMBER_RANGE, "install-error-range",
Packit Service 9ccfef
      "the named-number for an INSTALL-ERROR is out of range: allowed 1..65535, current %d", NULL},
Packit Service 9ccfef
    { 2, ERR_SPPI_BASETYPE_NOT_IMPORTED, "sppi-basetype-not-imported",
Packit Service 9ccfef
      "SPPI basetype `%s' must be imported from COPS-PR-SPPI", NULL},
Packit Service 9ccfef
    { 2, ERR_ROW_LACKS_PIB_INDEX, "row-lacks-pib-index",
Packit Service 9ccfef
      "row definition lacks a PIB-INDEX/AUGMENTS/EXTENDS clause", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, "pib-index-with-non-row-type",
Packit Service 9ccfef
      "non row type contains a PIB-INDEX/AUGMENTS/EXTENDS clause", NULL},
Packit Service 9ccfef
    { 2, ERR_OPAQUE_IN_SYNTAX, "opaque-in-syntax",
Packit Service 9ccfef
      "`Opaque' must not be used in SYNTAX clauses in PIB modules", NULL},
Packit Service 9ccfef
    { 2, ERR_IPADDRESS_IN_SYNTAX, "ipaddress-in-syntax",
Packit Service 9ccfef
      "`IpAddress' must not be used in SYNTAX clauses in PIB modules", NULL},
Packit Service 9ccfef
    { 2, ERR_TABLE_LACKS_PIB_ACCESS, "table-lacks-pib-access",
Packit Service 9ccfef
      "the table definition must contain a PIB-ACCESS clause", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_ACCESS_FOR_NON_TABLE, "pib-access-for-non-table",
Packit Service 9ccfef
      "type is not a table but contains a PIB-ACCESS clause", NULL},
Packit Service 9ccfef
    { 2, ERR_INSTALL_ERRORS_FOR_NON_TABLE, "install-errors-for-non-table",
Packit Service 9ccfef
      "type is not a table but contains a INSTALL-ERRORS clause", NULL},
Packit Service 9ccfef
    { 2, ERR_UNIQUENESS_FOR_NON_ROW, "uniqueness-for-non-row",
Packit Service 9ccfef
      "type is not a row but contains a UNIQUENESS clause", NULL},
Packit Service 9ccfef
    { 2, ERR_NOT_A_COLUMN, "not-a-column",
Packit Service 9ccfef
      "`%s', which is used in a UNIQUENESS clause, is not a column in this table", NULL},
Packit Service 9ccfef
    { 2, ERR_EXTENDS_WRONG_ROW_TYPE, "extend-row-type",
Packit Service 9ccfef
      "row `%s' extends `%s' which is neither a base table row nor a sparsely-augmented table row", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_INDEX_NOT_INSTANCEID, "pib-index-not-instanceid",
Packit Service 9ccfef
      "the PIB-INDEX `%s' must be of type `InstanceId'", NULL},
Packit Service 9ccfef
    { 2, ERR_LACKING_PIB_REFERENCES, "type-lacking-pib-references",
Packit Service 9ccfef
      "objects with SYNTAX `ReferenceId' must contain a PIB-REFERENCES clause", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_REFERENCES_WRONG_TYPE, "pib-references-with-wrong-type",
Packit Service 9ccfef
      "object contains a PIB-REFERENCES clause but is not of type `ReferenceId'", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_REFERENCES_NOT_ROW, "pib-references-not-row",
Packit Service 9ccfef
      "the PIB-REFERENCES does not point to a row", NULL},
Packit Service 9ccfef
    { 2, ERR_LACKING_PIB_TAG, "type-lacking-pib-tag",
Packit Service 9ccfef
      "objects with SYNTAX `TagReferenceId' must contain a PIB-TAG clause", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_TAG_WRONG_TYPE, "pib-tag-with-wrong-type",
Packit Service 9ccfef
      "object contains a PIB-TAG clause but is not of type `TagReferenceId'", NULL},
Packit Service 9ccfef
    { 2, ERR_SUBJECT_CATEGORIES_MISSING_SUBID, "subject-categories-missing-subid",
Packit Service 9ccfef
      "the SUBJECT-CATEGORIES are missing a sub-identifier", NULL},
Packit Service 9ccfef
    { 2, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID, "subject-categories-all-with-subid",
Packit Service 9ccfef
      "the SUBJECT-CATEGORIES `all' must not have a sub-identifier", NULL},
Packit Service 9ccfef
    { 3, ERR_SUBJECT_CATEGORIES_ALL, "subject-categories-all",
Packit Service 9ccfef
      "SUBJECT-CATEGORIES contains several categories although `all' is used aswell", NULL},
Packit Service 9ccfef
    { 2, ERR_PIB_TAG_TYPE, "pib-tag-type",
Packit Service 9ccfef
      "a PIB-TAG must point to an object with a SYNTAX of `TagId'", NULL},
Packit Service 9ccfef
    { 3, ERR_ATTRIBUTE_NOT_IN_GROUP, "attribute-not-in-group",
Packit Service 9ccfef
      "attribute `%s' must be contained in at least one conformance group", NULL},
Packit Service 9ccfef
    { 0, ERR_OBJECTPTR_ELEMENT_IN_USE, "objectptr-element-in-use",
Packit Service 9ccfef
      "objectPtr->%s is already in use (%s)", NULL},
Packit Service 9ccfef
    { 1, ERR_OID_ADMIN_ZERO, "last-subid-zero",
Packit Service 9ccfef
      "last subidentifier assigned to `%s' may not be zero", NULL},
Packit Service 9ccfef
    { 5, ERR_TYPE_STATUS_DEPRECATED, "type-status-deprecated",
Packit Service 9ccfef
      "type `%s' used by `%s' is deprecated", NULL},
Packit Service 9ccfef
    { 5, ERR_TYPE_STATUS_OBSOLETE, "type-status-obsolete",
Packit Service 9ccfef
      "type `%s' used by `%s' is obsolete",
Packit Service 9ccfef
      "This warning is generated in cases where something with status\n"
Packit Service 9ccfef
      "`current' uses a type whose status has been changed to `obsolete'.\n"
Packit Service 9ccfef
      "Note that the status of imported types can change without the\n"
Packit Service 9ccfef
      "control of the modules using these types." },
Packit Service 9ccfef
    { 3, ERR_COMPLIANCE_MEMBER_NOT_LOCAL, "compliance-member-not-local",
Packit Service 9ccfef
      "OBJECTS or NOTIFICATIONS member `%s' is not defined in this module",
Packit Service 9ccfef
      "All elements of an OBJECTS statement within an OBJECT-GROUP clause\n"
Packit Service 9ccfef
      "and all elements of a NOTIFICATIONS statement within a\n"
Packit Service 9ccfef
      "NOTIFICATION-GROUP clause must be defined in the same module\n"
Packit Service 9ccfef
      "where this OBJECT-GROUP or NOTIFICATION-GROUP appears (RFC 2580,\n"
Packit Service 9ccfef
      "Sections 3.1 and 4.1)."},
Packit Service 9ccfef
    { 5, ERR_MIB_MODULENAME_SUFFIX, "module-name-suffix", 
Packit Service 9ccfef
      "module name `%s' should match `*-MIB'", NULL},
Packit Service 9ccfef
    { 5, ERR_PIB_MODULENAME_SUFFIX, "module-name-suffix", 
Packit Service 9ccfef
      "module name `%s' should match `*-PIB'", NULL},
Packit Service 9ccfef
    { 5, ERR_TYPE_WITHOUT_FORMAT, "type-without-format", 
Packit Service 9ccfef
      "type `%s' has no format specification", NULL},
Packit Service 9ccfef
    { 2, ERR_OBJECT_IN_NOTIFICATION_GROUP, "group-notifications-object",
Packit Service 9ccfef
      "notification group `%s' includes object `%s'", NULL},
Packit Service 9ccfef
    { 2, ERR_NOTIFICATION_IN_OBJECT_GROUP, "group-objects-notification",
Packit Service 9ccfef
      "object group `%s' includes notification `%s'", NULL},
Packit Service 9ccfef
    { 4, ERR_MODULE_IDENTITY_REGISTRATION, "module-identity-registration",
Packit Service 9ccfef
      "uncontrolled MODULE-IDENTITY registration",
Packit Service 9ccfef
      "The identities of IETF MIB modules should be registered below\n"
Packit Service 9ccfef
      "mib-2, transmission, or snmpModules so that the registration\n"
Packit Service 9ccfef
      "space can be controlled by IANA."},
Packit Service 9ccfef
    { 0, 0, NULL, NULL, NULL }
Packit Service 9ccfef
};
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiSetErrorSeverity --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Sets the severity of errors with tags matching pattern.
Packit Service 9ccfef
 *      0 <= severity <= 15 : sets severity to this value.
Packit Service 9ccfef
 *      severity == 128     : makes the parser to ignore the error.
Packit Service 9ccfef
 *      severity == -1      : makes the parser to allow the error.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      Changes the severity in the module internal error table.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
void
Packit Service 9ccfef
smiSetErrorSeverity(char *pattern, int severity)
Packit Service 9ccfef
{
Packit Service 9ccfef
    int i;
Packit Service 9ccfef
    
Packit Service 9ccfef
    for (i = 0; errors[i].fmt; i++) {
Packit Service 9ccfef
	if (strstr(errors[i].tag, pattern) == errors[i].tag) {
Packit Service 9ccfef
	    if (severity == 128) {
Packit Service 9ccfef
		errors[i].level |= 128;
Packit Service 9ccfef
	    } else if (severity == -1) {
Packit Service 9ccfef
		errors[i].level &= 127;
Packit Service 9ccfef
	    } else {
Packit Service 9ccfef
		errors[i].level = severity;
Packit Service 9ccfef
	    }
Packit Service 9ccfef
	}
Packit Service 9ccfef
    }
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiSetErrorHandler --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Set the function that is called to handle error messages.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      Changes the error handler used for subsequent error messages.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
void
Packit Service 9ccfef
smiSetErrorHandler(SmiErrorHandler smiErrorHandler)
Packit Service 9ccfef
{
Packit Service 9ccfef
    smiHandle->errorHandler = smiErrorHandler;
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiGetErrorSeverity --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Return the severity of the error identified by id.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      The error severity.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
int
Packit Service 9ccfef
smiGetErrorSeverity(int id)
Packit Service 9ccfef
{
Packit Service 9ccfef
    if (id < 0 || id >= (sizeof(errors) / sizeof(Error)) - 1) {
Packit Service 9ccfef
	return -1;
Packit Service 9ccfef
    }
Packit Service 9ccfef
    return errors[id].level;
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiGetErrorTag --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Return the tag of the error identified by id.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      The error tag or NULL.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
char*
Packit Service 9ccfef
smiGetErrorTag(int id)
Packit Service 9ccfef
{
Packit Service 9ccfef
    if (id < 0 || id >= sizeof(errors) / sizeof(Error)) {
Packit Service 9ccfef
	return NULL;
Packit Service 9ccfef
    }
Packit Service 9ccfef
    return errors[id].tag;
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiGetErrorMsg --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Return the message of the error identified by id.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      The error message or NULL.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
char*
Packit Service 9ccfef
smiGetErrorMsg(int id)
Packit Service 9ccfef
{
Packit Service 9ccfef
    if (id < 0 || id >= sizeof(errors) / sizeof(Error)) {
Packit Service 9ccfef
	return NULL;
Packit Service 9ccfef
    }
Packit Service 9ccfef
    return errors[id].fmt;
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiGetErrorDescription --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Return the description of the error identified by id.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      The error description or NULL.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
char*
Packit Service 9ccfef
smiGetErrorDescription(int id)
Packit Service 9ccfef
{
Packit Service 9ccfef
    if (id < 0 || id >= sizeof(errors) / sizeof(Error)) {
Packit Service 9ccfef
	return NULL;
Packit Service 9ccfef
    }
Packit Service 9ccfef
    return errors[id].description;
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiErrorHandler --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      This is the default error printing function. This is the
Packit Service 9ccfef
 *	only place in the libsmi where any output is generated.
Packit Service 9ccfef
 *	This function may be replaced by an application specific
Packit Service 9ccfef
 *	error message handler.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      Prints error messages to the stderr output channel.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
void
Packit Service 9ccfef
smiErrorHandler(char *path, int line, int severity, char *msg, char *tag)
Packit Service 9ccfef
{
Packit Service 9ccfef
    if (path) {
Packit Service 9ccfef
	fprintf(stderr, "%s:%d: ", path, line);
Packit Service 9ccfef
    }
Packit Service 9ccfef
    switch (severity) {
Packit Service 9ccfef
    case 4:
Packit Service 9ccfef
    case 5:
Packit Service 9ccfef
	fprintf(stderr, "warning: ");
Packit Service 9ccfef
	break;
Packit Service 9ccfef
    case 6:	
Packit Service 9ccfef
	fprintf(stderr, "info: ");
Packit Service 9ccfef
	break;
Packit Service 9ccfef
    }
Packit Service 9ccfef
    fprintf(stderr, "%s\n", msg);
Packit Service 9ccfef
Packit Service 9ccfef
    /*
Packit Service 9ccfef
     * A severe error, no way to continue :-(
Packit Service 9ccfef
     */
Packit Service 9ccfef
    if (severity <= 0) {
Packit Service 9ccfef
	exit(1);
Packit Service 9ccfef
    }
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * printError --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Internal error printer which is called by the varargs
Packit Service 9ccfef
 *	entry points (see below). If formats the error message
Packit Service 9ccfef
 *	and calls the error handling function that is currently
Packit Service 9ccfef
 *	registered.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      Terminates the program if the error is severe and there
Packit Service 9ccfef
 *	is no way to continue.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
static void
Packit Service 9ccfef
printError(Parser *parser, int id, int line, va_list ap)
Packit Service 9ccfef
{
Packit Service 9ccfef
    char *buffer;
Packit Service 9ccfef
    int i;
Packit Service 9ccfef
    
Packit Service 9ccfef
    if (! smiHandle->errorHandler) {
Packit Service 9ccfef
	return;
Packit Service 9ccfef
    }
Packit Service 9ccfef
Packit Service 9ccfef
    /*
Packit Service 9ccfef
     * Search for the tag instead of just using the id as an index so
Packit Service 9ccfef
     * that we do not run into trouble if the id is bogus.
Packit Service 9ccfef
     */
Packit Service 9ccfef
Packit Service 9ccfef
    for (i = 0; errors[i].fmt; i++) {
Packit Service 9ccfef
	if (errors[i].id == id) break;
Packit Service 9ccfef
    }
Packit Service 9ccfef
    if (! errors[i].fmt) {
Packit Service 9ccfef
	i = 0;		/* assumes that 0 is the internal error */
Packit Service 9ccfef
    }
Packit Service 9ccfef
Packit Service 9ccfef
    if (parser) {
Packit Service 9ccfef
Packit Service 9ccfef
	if (parser->modulePtr) {
Packit Service 9ccfef
	    if ((parser->modulePtr->export.conformance > errors[i].level) ||
Packit Service 9ccfef
		(parser->modulePtr->export.conformance == 0)) {
Packit Service 9ccfef
		parser->modulePtr->export.conformance = errors[i].level;
Packit Service 9ccfef
	    }
Packit Service 9ccfef
	}
Packit Service 9ccfef
	
Packit Service 9ccfef
	if ((errors[i].level <= smiHandle->errorLevel) &&
Packit Service 9ccfef
	    (parser->flags & SMI_FLAG_ERRORS) &&
Packit Service 9ccfef
	    ((smiDepth == 1) || (parser->flags & SMI_FLAG_RECURSIVE))) {
Packit Service 9ccfef
	    smiVasprintf(&buffer, errors[i].fmt, ap);
Packit Service 9ccfef
	    (smiHandle->errorHandler) (parser->path, line,
Packit Service 9ccfef
				       errors[i].level, buffer, errors[i].tag);
Packit Service 9ccfef
	}
Packit Service 9ccfef
    } else {
Packit Service 9ccfef
	if (errors[i].level <= smiHandle->errorLevel) {
Packit Service 9ccfef
	    smiVasprintf(&buffer, errors[i].fmt, ap);
Packit Service 9ccfef
	    (smiHandle->errorHandler) (NULL, 0, errors[i].level,
Packit Service 9ccfef
				       buffer, errors[i].tag);
Packit Service 9ccfef
	}
Packit Service 9ccfef
    }
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiPrintErrorAtLine --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Like smiPrintError() but shows a specfic line no.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
void
Packit Service 9ccfef
smiPrintErrorAtLine(Parser *parser, int id, int line, ...)
Packit Service 9ccfef
{
Packit Service 9ccfef
    va_list ap;
Packit Service 9ccfef
Packit Service 9ccfef
    va_start(ap, line);
Packit Service 9ccfef
    printError(parser, id, line, ap);
Packit Service 9ccfef
    va_end(ap);
Packit Service 9ccfef
}
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * smiPrintError --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Prints an error message. The line number is taken from
Packit Service 9ccfef
 *	the current parser position.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Results:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Side effects:
Packit Service 9ccfef
 *      None.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *----------------------------------------------------------------------
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
void
Packit Service 9ccfef
smiPrintError(Parser *parser, int id, ...)
Packit Service 9ccfef
{
Packit Service 9ccfef
    va_list ap;
Packit Service 9ccfef
Packit Service 9ccfef
    va_start(ap, id);
Packit Service 9ccfef
    printError(parser, id, parser ? parser->line : 0, ap);
Packit Service 9ccfef
    va_end(ap);
Packit Service 9ccfef
}