-- Module:  GENERAL-MIB
-- Editor:  Tom Hastings
-- File:    gen.doc, .psr, ps., .txt
-- Date:    October 24, 1995
-- Version: 0.1

-- The General MIB for use with other MIBs
-- that use the host resources MIB (RFC 1514)

GENERAL-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, experimental
                FROM SNMPv2-SMI                    -- RFC 1442
        RowStatus, DisplayString
                FROM SNMPv2-TC                     -- RFC 1443
        MODULE-COMPLIANCE, OBJECT-GROUP
                FROM SNMPv2-CONF                   -- RFC 1444
        hrDeviceIndex, InternationalDisplayString
                FROM HOST-RESOURCES-MIB            -- RFC 1514
        CodedCharSet
                FROM PRINTER-TC                   -- file: prttc.txt
        CodedLanguage, CodedTerritory,
        CodeIndexedStringIndex, Ordinal16
                FROM GENERAL-TC;             -- file: gentc.txt

  -- Upon publication as RFC, delete this comment and the line following
  -- this comment and change the reference of { printmib 101 }
  -- (below) to { mib-2 X }.
  -- This will result in changing:
  -- 1 3 6 1 3 54 generalMIB(101)    to:
  -- 1 3 6 1 2  1 generalMIB(X)
  -- This will make it easier to translate prototypes to
  -- the standard namespace because the lengths of the OID's won't 
  -- change.
  printmib OBJECT IDENTIFIER ::= { experimental 54 }

generalMIB MODULE-IDENTITY
        LAST-UPDATED "9510250000Z"
        ORGANIZATION "IETF/DMTF PrinterWorking Group"
        CONTACT-INFO
        "       Thomas N. Hastings
                Xerox Corporation, MS ES-AE 242
                701 S. Aviation Blvd.
                El Segundo, CA 90245
                Phone:        1+ (310)333-6413
                FAX:          1+ (310)333-6342
                E-Mail:       hastings@cp10.es.xerox.com"
        DESCRIPTION
                "File: gen.doc, .psr, .ps, .txt
                 Version: 0.1

                 This MIB module specifies objects of a general nature 
                 for use with MIBs that use the host resources MIB 
                 (see RFC 1514).

                 See the companion general textual-conventions module:
                 GENERAL-TC for the textual conventions and for an 
                 explanation of this use of this MIB."
        ::= { printmib 101 }

--
-- General Current Localization Group
--
-- This is a group to control the localization of static string objects
-- that use the InternationalDisplayString types in existing and new 
-- MIBs.
--
-- Implementation of every object in this group is optional.
-- However, MIBs that contain objects of type InternationalDisplayString
-- shall implement this group.
--
-- Contains the scalar localization objects that are needed per device.
--

genCurrentLocalization OBJECT IDENTIFIER ::= { generalMIB 3 }

genCurrentLocalizationTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF GenCurrentLocalizationEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A table of general localization information per device.  It is
        put in a table so it can be per device using the hrDeviceIndex."
    ::= { genCurrentLocalization 1 }

genCurrentLocalizationEntry OBJECT-TYPE
    SYNTAX      GenCurrentLocalizationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Contains the scalar objects that we want to be per device."
    INDEX  { hrDeviceIndex }
    ::= { genCurrentLocalizationTable 1 }

GenCurrentLocalizationEntry ::= SEQUENCE {
    genCurrentLocalizationIndex    Ordinal16
}

genCurrentLocalizationIndex OBJECT-TYPE
    SYNTAX     Ordinal16
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The value of the genLocalizationIndex corresponding to the
        current language, country, and character set which shall be
        used for all objects of type InternationalDisplayString in
        all legacy and future MIBs.

        Note the Printer MIB has a similar mechanism which controls only 
        objects (of type OCTET STRING) which are in the Printer MIB."

    ::= { genCurrentLocalizationEntry 1 }


--
-- General Localization Group
--
-- This is a group to control the localization of static string objects
-- that use the InternationalDisplayString types in legacy and new MIBs.
--
-- Implementation of every object in this group is optional.
-- However, MIBs that contain objects of type InternationDisplayString
-- shall implement this group.
--
-- Contains the localizations supported by this device.
--

genLocalization OBJECT IDENTIFIER ::= { generalMIB 4 }

genLocalizationTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF GenLocalizationEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The available localizations in this device."
    ::= { genLocalization 1 }

genLocalizationEntry OBJECT-TYPE
    SYNTAX      GenLocalizationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry exists in this table for each Localizaion, e.g. for
        each combination of Language, Territory and Coded Character
        Set supported in some objects of InternationalDisplayString
        type and for each device."
    INDEX  { hrDeviceIndex, genLocalizationIndex }
    ::= { genLocalizationTable 1 }

GenLocalizationEntry ::= SEQUENCE {
    genLocalizationIndex            Ordinal16,
    genLocalizationRowStatus        RowStatus,
    genLocalizationASCIIName        DisplayString,
    genLocalizationName             InternationalDisplayString,
    genLocalizationLanguage         CodedLanguage,
    genLocalizationTerritory        CodedTerritory,
    genLocalizationCharSet          CodedCharSet
}

genLocalizationIndex OBJECT-TYPE
    SYNTAX     Ordinal16
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "A unique value used by the device to identify this
        localization entry.  Although these values may change due to a
        major reconfiguration of the device (e.g., the addition of new
        Cover sub-units to a printer), values are expected to remain
        stable across successive device power cycles."
    ::= { genLocalizationEntry 1 }

genLocalizationRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "This object manages the row status of this conceptual row in
        the 'genLocalizationTable'."
    ::= { genLocalizationEntry 2 }

genLocalizationASCIIName OBJECT-TYPE
    SYNTAX     DisplayString (SIZE (0..255))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The unlocalized human readable name in NVT ASCII of the
        localization with the language, followed by the territory,
        followed by the character set.

        Example: English US ASCII"
    ::= { genLocalizationEntry 3 }

genLocalizationName OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE (0..255))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The localized human readable name of the localization with
        the language, followed by the territory, followed by the
        character set. 
        
        Example: Japanese Japan Kanji (Represented with Kanji chars.)"
    ::= { genLocalizationEntry 4 }

genLocalizationLanguage OBJECT-TYPE
    SYNTAX     CodedLanguage
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A two character language code from ISO 639.
        A blank string (two space characters) shall indicate that the
        territory is not defined.
        Examples EN, GB, CA, FR, DE."
    ::= { genLocalizationEntry 5 }

genLocalizationTerritory OBJECT-TYPE
    SYNTAX     CodedTerritory
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A two character country code from ISO 3166.
        A blank string (two space characters) shall indicate that the
        territory is not defined.
        Examples: US, FR, DE, ..."
    ::= { genLocalizationEntry 6 }

genLocalizationCharSet OBJECT-TYPE
    SYNTAX     CodedCharSet
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The coded character set used for this localization.
        The value is the enum for the coded character set registered
        with IANA.  See the CodedCharSet textual-convention in the
        Printer MIB (RFC 1759)."
    ::= { genLocalizationEntry 7 }



--
-- General Code Indexed String Group
--
-- This is a group to control the coded character set representation
-- of codeset indexed string objects that use the CodeIndexedStringIndex 
-- types in new MIBs.
--
-- Implementation of every object in this group is optional.
-- However, MIBs that contain objects of type CodeIndexedStringIndex 
-- shall implement this group.
--
-- Contains all the current codeset indexed strings for this device.
--

genCodeIndexedString  OBJECT IDENTIFIER ::= { generalMIB 5 }

genCodeIndexedStringTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF GenCodeIndexedStringEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The current codeset indexed strings for this device."
    ::= { genCodeIndexedString 1 }

genCodeIndexedStringEntry OBJECT-TYPE
    SYNTAX     GenCodeIndexedStringEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry exists in this table containing a code-indexed string
        in a particular coded character set.  There are separate sets of
        code-indexed strings for each device.

        If an agent supports multiple coded character representations
        of a codeset indexed string, including code conversion between,
        there will be a separate entry for each such coded
        representation.

        The genCodeIndexedStringCharSet selects which coded
        character representation is to be returned.  The value of
        genCodeIndexedStringCharSet is the coded character set enum
        registered with IANA. See the CodedCharSet textual-convention
        in the Printer MIB (RFC 1759)."
    INDEX {
        hrDeviceIndex,
        genCodeIndexedStringIndex,
        genCodeIndexedStringCharSet
    }
    ::= { genCodeIndexedStringTable 1 }

GenCodeIndexedStringEntry ::= SEQUENCE {
        genCodeIndexedStringIndex         CodeIndexedStringIndex,
        genCodeIndexedStringCharSet       CodedCharSet,  -- an index
        genCodeIndexedStringRowStat       RowStatus,
        genCodeIndexedStringData          OCTET STRING
}

genCodeIndexedStringIndex OBJECT-TYPE
    SYNTAX     CodeIndexedStringIndex (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A unique value used by the device, along with the following
        genCodeIndexedStringCharSet, to identify this Coded String 
        entry.

        A value of 0 is not valid for this object."
    ::= { genCodeIndexedStringEntry 1 }

genCodeIndexedStringCharSet OBJECT-TYPE
    SYNTAX     CodedCharSet
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The coded character set used for this code-indexed string.
        The value is the enum for the coded character set registered
        with IANA.  See the CodedCharSet textual-convention in the
        Printer MIB (RFC 1759)."
    ::= { genCodeIndexedStringEntry 2 }

genCodeIndexedStringRowStat OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "This object manages the row status of this conceptual row
        in the 'genCodeIndexedStringTable'."
    ::= { genCodeIndexedStringEntry 3 }

genCodeIndexedStringData OBJECT-TYPE
    SYNTAX     OCTET STRING (SIZE(0..255))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This is the actual code-indexed string data, represented in the
        coded character set identified by genCodeIndexedStringCharSet."
    ::= { genCodeIndexedStringEntry 4 }


-- The General Coded Char Set Group
--
-- This is a group to control the coded character set representation
-- of code-indexed string objects that use the CodeIndexedStringIndex
-- types in new MIBs.
--
-- Implementation of every object in this group is optional.
-- However, MIBs that contain objects of type CodeIndexedStringIndex 
-- shall implement this group.
--
-- Contains the coded character set identifications of the coded 
-- character sets supported by this device for representing code-indexed
-- strings.

genCodedCharSet  OBJECT IDENTIFIER ::= { generalMIB 6 }

genCodedCharSetTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF GenCodedCharSetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The supported coded character sets for this device."
    ::= { genCodedCharSet 1 }

genCodedCharSetEntry OBJECT-TYPE
    SYNTAX     GenCodedCharSetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry exists in this table for each coded character set 
        supported in some objects of CodeIndexedStringIndex type for 
        each device."
    INDEX  { hrDeviceIndex, genCodedCharSetCharSet }
    ::= { genCodedCharSetTable 1 }

GenCodedCharSetEntry ::= SEQUENCE {
    genCodedCharSetCharSet        CodedCharSet,
    genCodedCharSetRowStatus      RowStatus,
    genCodedCharSetASCIIName      DisplayString
}

genCodedCharSetCharSet OBJECT-TYPE
    SYNTAX     CodedCharSet
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The supported coded character set enum identifier, used an 
        index for this table.  The value is the enum for the coded 
        character set registered with IANA.  See the CodedCharSet 
        textual-convention in the Printer MIB (RFC 1759)."
    ::= { genCodedCharSetEntry 1 }

genCodedCharSetRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "This object manages the row status of this conceptual row in
        the 'genCodedCharSetTable'."
    ::= { genCodedCharSetEntry 2 }

genCodedCharSetASCIIName OBJECT-TYPE
    SYNTAX     DisplayString (SIZE (0..255))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The unlocalized human readable name in ASCII of the
        coded character set.

        Example: 'ASCII'"
    ::= { genCodedCharSetEntry 3 }


--
-- General MIB Conformance Information
--
-- With only Optional Conformance Groups
--

genMIBConformance
                   OBJECT IDENTIFIER ::= { generalMIB 2 }
genMIBGroups
                   OBJECT IDENTIFIER ::= { genMIBConformance 2 }

--
-- Compliance Statements for the General Localization Group
--

genMIBLocalizationComp MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
        "The compliance statement for the agent that implements the 
        General MIB Current Localization Group.

        This group is optional."
    MODULE -- this module
    MANDATORY-GROUPS {
        genCurrentLocalizationGroup,
        genLocalizationGroup
    }

    OBJECT      genCurrentLocalizationIndex 
    MIN-ACCESS  read-only
    DESCRIPTION
        "It is conformant to implement this object as read-only"

    OBJECT      genLocalizationIndex 
    MIN-ACCESS  read-only
    DESCRIPTION
        "It is conformant to implement this object as read-only"

    OBJECT      genLocalizationRowStatus 
    SYNTAX      INTEGER { active(1) }  -- subset of RowStatus
    MIN-ACCESS  read-only
    DESCRIPTION
        "It is conformant to implement this object as read-only, and
        only one of the enumerated values for the 'RowStatus' textual
        convention need be supported, specifically:  active(1)."

    ::= { genMIBConformance 3 }


genMIBCodeIndexedStringComp MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION
        "The compliance statement for the agent that implements the 
        General MIB Coded String Group.

        This group is optional."
    MODULE -- this module
    MANDATORY-GROUPS {
        genCodeIndexedStringGroup,
        genCodedCharSetGroup
    }

    OBJECT      genCodeIndexedStringRowStat
    SYNTAX      INTEGER { active(1) }  -- subset of RowStatus
    MIN-ACCESS  read-only
    DESCRIPTION
        "It is conformant to implement this object as read-only, and
        only one of the enumerated values for the 'RowStatus' textual
        convention need be supported, specifically:  active(1)."

    OBJECT      genCodedCharSetRowStatus 
    SYNTAX      INTEGER { active(1) }  -- subset of RowStatus
    MIN-ACCESS  read-only
    DESCRIPTION
        "It is conformant to implement this object as read-only, and
        only one of the enumerated values for the 'RowStatus' textual
        convention need be supported, specifically:  active(1)."

    ::= { genMIBConformance 5 }


--
--  Conformance Groups
--

genCurrentLocalizationGroup OBJECT-GROUP
    OBJECTS { 
        genCurrentLocalizationIndex
    }
    STATUS  current
    DESCRIPTION
        "The General MIB Current Localization Group."
    ::= { genMIBGroups 3 }

genLocalizationGroup OBJECT-GROUP
    OBJECTS {
        genLocalizationIndex,
        genLocalizationRowStatus,
        genLocalizationASCIIName,
        genLocalizationName,
        genLocalizationLanguage,
        genLocalizationTerritory,
        genLocalizationCharSet
    }
    STATUS  current
    DESCRIPTION
        "The General MIB Localization Group."
    ::= { genMIBGroups 4 }

genCodeIndexedStringGroup OBJECT-GROUP
    OBJECTS { 
        genCodeIndexedStringIndex,
        genCodeIndexedStringCharSet,
        genCodeIndexedStringRowStat,
        genCodeIndexedStringData
    }
    STATUS  current
    DESCRIPTION
        "The General MIB Coded String Group."
    ::= { genMIBGroups 5 }

genCodedCharSetGroup OBJECT-GROUP
    OBJECTS {
        genCodedCharSetCharSet,
        genCodedCharSetRowStatus,
        genCodedCharSetASCIIName
    }
    STATUS  current
    DESCRIPTION
        "The General MIB String Support Group."
    ::= { genMIBGroups 6 }

END