SNMP-VIEW-BASED-ACM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, snmpModules
        FROM SNMPv2-SMI
    RowStatus, StorageType, TestAndIncr
        FROM SNMPv2-TC
    SnmpAdminString, SnmpSecurityLevel, SnmpSecurityModel
        FROM SNMP-FRAMEWORK-MIB;

snmpVacmMIB MODULE-IDENTITY
    LAST-UPDATED "200210160000Z"
    ORGANIZATION "IETF SNMPv3 Working Group"
    DESCRIPTION
        "The View-based Access Control Model configuration MIB from RFC 3415.
         This embedded agent schema contains the VACM objects implemented by
         the Rust command responder."
    ::= { snmpModules 16 }

vacmMIBObjects OBJECT IDENTIFIER ::= { snmpVacmMIB 1 }

vacmSecurityToGroupTable OBJECT-TYPE
    SYNTAX SEQUENCE OF VacmSecurityToGroupEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Maps a securityModel and securityName to a groupName."
    ::= { vacmMIBObjects 2 }

vacmSecurityToGroupEntry OBJECT-TYPE
    SYNTAX VacmSecurityToGroupEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "A security-to-group mapping."
    INDEX { vacmSecurityModel, vacmSecurityName }
    ::= { vacmSecurityToGroupTable 1 }

VacmSecurityToGroupEntry ::= SEQUENCE {
    vacmSecurityModel SnmpSecurityModel,
    vacmSecurityName SnmpAdminString,
    vacmGroupName SnmpAdminString,
    vacmSecurityToGroupStorageType StorageType,
    vacmSecurityToGroupStatus RowStatus
}

vacmSecurityModel OBJECT-TYPE
    SYNTAX SnmpSecurityModel (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The Security Model providing the securityName."
    ::= { vacmSecurityToGroupEntry 1 }

vacmSecurityName OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(1..32))
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The model-independent securityName."
    ::= { vacmSecurityToGroupEntry 2 }

vacmGroupName OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(1..32))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The group to which this securityName belongs."
    ::= { vacmSecurityToGroupEntry 3 }

vacmSecurityToGroupStorageType OBJECT-TYPE
    SYNTAX StorageType
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The storage type for this conceptual row."
    DEFVAL { nonVolatile }
    ::= { vacmSecurityToGroupEntry 4 }

vacmSecurityToGroupStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The row status. A row cannot become active until vacmGroupName is set."
    ::= { vacmSecurityToGroupEntry 5 }

vacmAccessTable OBJECT-TYPE
    SYNTAX SEQUENCE OF VacmAccessEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The table of access rights for groups."
    ::= { vacmMIBObjects 4 }

vacmAccessEntry OBJECT-TYPE
    SYNTAX VacmAccessEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "An access right configured in the local configuration datastore."
    INDEX {
        vacmGroupName,
        vacmAccessContextPrefix,
        vacmAccessSecurityModel,
        vacmAccessSecurityLevel
    }
    ::= { vacmAccessTable 1 }

VacmAccessEntry ::= SEQUENCE {
    vacmAccessContextPrefix SnmpAdminString,
    vacmAccessSecurityModel SnmpSecurityModel,
    vacmAccessSecurityLevel SnmpSecurityLevel,
    vacmAccessContextMatch INTEGER,
    vacmAccessReadViewName SnmpAdminString,
    vacmAccessWriteViewName SnmpAdminString,
    vacmAccessNotifyViewName SnmpAdminString,
    vacmAccessStorageType StorageType,
    vacmAccessStatus RowStatus
}

vacmAccessContextPrefix OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(0..32))
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The contextName prefix used by this row."
    ::= { vacmAccessEntry 1 }

vacmAccessSecurityModel OBJECT-TYPE
    SYNTAX SnmpSecurityModel
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The required Security Model, or any(0)."
    ::= { vacmAccessEntry 2 }

vacmAccessSecurityLevel OBJECT-TYPE
    SYNTAX SnmpSecurityLevel
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The minimum required security level."
    ::= { vacmAccessEntry 3 }

vacmAccessContextMatch OBJECT-TYPE
    SYNTAX INTEGER { exact(1), prefix(2) }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Whether contextPrefix is matched exactly or as a prefix."
    DEFVAL { exact }
    ::= { vacmAccessEntry 4 }

vacmAccessReadViewName OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(0..32))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The MIB view used for read access."
    DEFVAL { ''H }
    ::= { vacmAccessEntry 5 }

vacmAccessWriteViewName OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(0..32))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The MIB view used for write access."
    DEFVAL { ''H }
    ::= { vacmAccessEntry 6 }

vacmAccessNotifyViewName OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(0..32))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The MIB view used for notification access."
    DEFVAL { ''H }
    ::= { vacmAccessEntry 7 }

vacmAccessStorageType OBJECT-TYPE
    SYNTAX StorageType
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The storage type for this conceptual row."
    DEFVAL { nonVolatile }
    ::= { vacmAccessEntry 8 }

vacmAccessStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The status of this conceptual row."
    ::= { vacmAccessEntry 9 }

vacmMIBViews OBJECT IDENTIFIER ::= { vacmMIBObjects 5 }

vacmViewSpinLock OBJECT-TYPE
    SYNTAX TestAndIncr
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "An advisory lock used to coordinate creation and modification of views."
    ::= { vacmMIBViews 1 }

vacmViewTreeFamilyTable OBJECT-TYPE
    SYNTAX SEQUENCE OF VacmViewTreeFamilyEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Families of subtrees included in or excluded from MIB views."
    ::= { vacmMIBViews 2 }

vacmViewTreeFamilyEntry OBJECT-TYPE
    SYNTAX VacmViewTreeFamilyEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "A family of view subtrees."
    INDEX { vacmViewTreeFamilyViewName, vacmViewTreeFamilySubtree }
    ::= { vacmViewTreeFamilyTable 1 }

VacmViewTreeFamilyEntry ::= SEQUENCE {
    vacmViewTreeFamilyViewName SnmpAdminString,
    vacmViewTreeFamilySubtree OBJECT IDENTIFIER,
    vacmViewTreeFamilyMask OCTET STRING,
    vacmViewTreeFamilyType INTEGER,
    vacmViewTreeFamilyStorageType StorageType,
    vacmViewTreeFamilyStatus RowStatus
}

vacmViewTreeFamilyViewName OBJECT-TYPE
    SYNTAX SnmpAdminString (SIZE(1..32))
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The name of this MIB view."
    ::= { vacmViewTreeFamilyEntry 1 }

vacmViewTreeFamilySubtree OBJECT-TYPE
    SYNTAX OBJECT IDENTIFIER
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The subtree that identifies this family."
    ::= { vacmViewTreeFamilyEntry 2 }

vacmViewTreeFamilyMask OBJECT-TYPE
    SYNTAX OCTET STRING (SIZE(0..16))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The wildcard mask for this subtree family."
    DEFVAL { ''H }
    ::= { vacmViewTreeFamilyEntry 3 }

vacmViewTreeFamilyType OBJECT-TYPE
    SYNTAX INTEGER { included(1), excluded(2) }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Whether this family is included in or excluded from the view."
    DEFVAL { included }
    ::= { vacmViewTreeFamilyEntry 4 }

vacmViewTreeFamilyStorageType OBJECT-TYPE
    SYNTAX StorageType
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The storage type for this conceptual row."
    DEFVAL { nonVolatile }
    ::= { vacmViewTreeFamilyEntry 5 }

vacmViewTreeFamilyStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The status of this conceptual row."
    ::= { vacmViewTreeFamilyEntry 6 }

END
