[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Examples of ASN.1 for SMIng.txt



Hi

Please comment on the attached examples.

The examples are written in ASN.1 and based on the "ASN.1 SMIng" module
proposed in "draft-triglia-sming-asn1-sming-01.txt". They reproduce similar
material published in Case's work ("draft-case-sming-smiv3-00.txt") and in
Bierman's work ("draft-bierman-sming-ds-01.txt").

The main purpose of these examples is to show the look and feel of
"state-of-the-art" ASN.1 and its proposed application to the description of
management information structures.

For an explanation of the syntax used in the examples, please refer to the
"ASN.1 for SMIng" I-D ("draft-triglia-sming-asn1-sming-01.txt"). Since this
is still work in progress, you may find unclear or incomplete definitions in
the text. Please feel free to ask questions or send comments.

Alessandro Triglia



---------------------------------------------------- 
Example 1 
---------------------------------------------------- 
 
FIZBIN-MIB { iso(1) identified-organization(3) dod(6) internet(1)  
        private(4) enterprises(1) asn1(11502) 
        applications(1) sming(1) example-module-1(1001) } 
 
    DEFINITIONS AUTOMATIC TAGS BEGIN ::= 
 
    IMPORTS Integer32, SMICharacterString, 
        MODULE-INFO, ENTITY-CLASS, EVENT,  
        ENTITY-INSTANCE, NOTIFICATION, 
        NODE, NODE-GROUP, COMPLIANCE-STATEMENT 
        FROM ASN1-SMIng; 
 
    module-info MODULE-INFO ::= { 
        ORGANIZATION "ACME MIB Writers Ltd" 
 
        CONTACT "Last Name First Name 
              My Street 
              My City 
              My State" 
 
        REVISIONS { 
            { DATE "200111301240Z"  
              DESCRIPTION "Latest Revision - Aaa bb c ddddd" } | 
 
            { DATE "200007030917Z" 
              DESCRIPTION "First Version" } } 
 
        STATUS current 
        DESCRIPTION "This is an example MIB module" } 
 
 
    fizbinChipSets NODE ::= { 
        OID { someRoot 1 } 
        STATUS current 
        DESCRIPTION "Fizbin Chip Sets" } 
 
    fizbinChipSetsOid OBJECT IDENTIFIER ::=  
         { fizbinChipSets.&oid 1 } 
 
    fizbin69 NODE ::= { 
        OID { fizbinChipSetsOid 1 }  
        STATUS current 
        DESCRIPTION "The authoritative identity  
              of the Fizbin 69 chipset." } 
               
    END 
 
 
 
---------------------------------------------------- 
Example 2 
---------------------------------------------------- 
 
    evalSlotClass ENTITY-CLASS ::= { 
        SYNTAX Integer32 (0..2147483647) 
        STATUS current 
        DESCRIPTION "The entity class of an index number 
              for an entry in the evaluation table" } 
 
 
    evalTableClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE OF evalEntry-class.&Syntax 
 
        INDEXING-ATTRIBUTES {{1}} 
        NAMING-SCHEME tabular 
 
        STATUS current 
        DESCRIPTION "The (conceptual) evaluation table." } 
 
 
    evalEntryClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            evalIndex     Integer32, 
            evalString    DisplayString, 
            evalValue     Integer32 DEFAULT 0, 
            evalStatus    RowStatus DEFAULT active } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS not-accessible 
              STATUS current 
              DESCRIPTION "The auxiliary variable used 
                   for identifying instances of the columnar 
                   objects in the evaluation table." } | 
                    
            { ATTRIBUTE {2} 
              MAX-ACCESS readCreate  
              STATUS current 
              DESCRIPTION "The string to evaluate." } | 
 
            { ATTRIBUTE {3} 
              MAX-ACCESS readOnly 
              STATUS current 
              DESCRIPTION "The value when evalString  
                   was last evaluated, or zero if no 
                 such value is available." } | 
 
            { ATTRIBUTE {4} 
              MAX-ACCESS readCreate 
              STATUS current 
              DESCRIPTION "The status column used for  
                   creating, modifying, and 
                   deleting instances of the columnar objects  
                   in the evaluation table." } } 
 
        STATUS current 
        DESCRIPTION "An entry (conceptual row)  
              in the evaluation table." } 
     
 
    evalSlot ENTITY-INSTANCE ::= { 
        OID { eval-base 1 0 } 
        ENTITY-CLASS evalSlotClass 
        MAX-ACCESS readOnly 
        STATUS current 
        DESCRIPTION "An entity instance that is the index  
              number of the first unused entry in the  
              evaluation table" } 
 
 
    evalTable ENTITY-INSTANCE ::= { 
        OID { eval-base 45 } 
        ENTITY-CLASS evalTableClass 
        MAX-OPERATION createDelete 
        STATUS current 
        DESCRIPTION "An instance of the evaluation table" } 
     
 
---------------------------------------------------- 
Example 3 
---------------------------------------------------- 
 
    entConfigChange EVENT ::= { 
        STATUS current 
        DESCRIPTION "A change in the value  
              of entLastChangeTime" } 
 
 
    entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 } 
     
    entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 } 
     
    entConfigChangeNotif NOTIFICATION ::= { 
        OID { entityMIBTrapPrefix 1 } 
         
        EVENT entConfigChange 
        ENTITY-CLASS evalEntryClass 
        TRANSMITTED-ATTRIBUTES {{1}, {3}} 
     
        STATUS current 
        DESCRIPTION "Notification of an entConfigChange event" } 
     
---------------------------------------------------- 
Example 4 
---------------------------------------------------- 
     
    inetAddressClass ENTITY-CLASS ::= { 
        SYNTAX CHOICE { 
            ipUnknown OCTET STRING (SIZE(0..65535)), 
            ipv4Addr InetAddressIPv4, 
            ipv6Addr InetAddressIPv6, 
            ipDnsAddr InetAddressDNS } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS readOnly 
              STATUS current 
                DESCRIPTION "Represents an Internet address  
                  using an externally defined format." } | 
                    
            { ATTRIBUTE {2} 
              MAX-ACCESS readOnly 
              STATUS current 
              DESCRIPTION "Represents an IPv4 address" } | 
 
            { ATTRIBUTE {3} 
              MAX-ACCESS readOnly 
              STATUS current 
               DESCRIPTION "Represents an IPv6 address" } | 
 
            { ATTRIBUTE {4} 
              MAX-ACCESS readOnly 
              STATUS current 
              DESCRIPTION "Represents a DNS domain name" } } 
 
        STATUS current 
         DESCRIPTION "Internet address in 4 different 
              representations." } 
 
 
    hostInetAddressClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            addrType InetAddressType, 
              addr inetAddressUnion.&Syntax } 
     
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS readOnly, 
              STATUS current 
                DESCRIPTION "The type of Internet address" } | 
               
              { ATTRIBUTE {2} 
                MAX-ACCESS notAccessible 
                STATUS current 
                DESCRIPTION "The Internet address" } 
              } 
         
        STATUS current 
         DESCRIPTION "Internet address for an end-station  
              host, adhering to the SMIv2 'associated  
              objects' design approach." } 
               
     
    myAddress ENTITY-INSTANCE ::= { 
        OID { someBase 1 } 
        ENTITY-CLASS hostInetAddressClass 
        STATUS current 
        DESCRIPTION "Internet address of this host." } 
 
 
    newAddress ENTITY-INSTANCE ::= { 
        OID { someBase 2 } 
        ENTITY-CLASS inetAddressClass 
        STATUS current 
        DESCRIPTION "Internet address of this host." } 
         
 
 
---------------------------------------------------- 
Example 5 
---------------------------------------------------- 
 
    genericCounterClass ENTITY-CLASS ::= { 
        SYNTAX CHOICE { 
            c32 Counter32, 
            c64 Counter64, 
            c32pair counter32pairClass.&Syntax } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS readOnly 
              STATUS current 
              DESCRIPTION "The Counter32 representation  
                   of the counter. } | 
 
            { ATTRIBUTE {2} 
              MAX-ACCESS readOnly 
              STATUS current 
              DESCRIPTION "The Counter64 representation  
                   of the counter. } | 
 
            { ATTRIBUTE {3} 
              MAX-ACCESS notAccessible 
              STATUS deprecated 
              DESCRIPTION "Pair of Counter32 objects to  
                   represent a 64-bit counter. } } 
 
        STATUS current 
         DESCRIPTION "Generic counter for all versions  
              of SNMP" } 
 
 
    counter32pairClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            c32low Counter32, 
            c32high Counter32 } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS readOnly 
              STATUS deprecated 
              DESCRIPTION "The lower 32 bits of  
                   a 64-bit counter." } | 
 
            { ATTRIBUTE {2} 
              MAX-ACCESS readOnly 
              STATUS deprecated 
              DESCRIPTION "The higher 32 bits of  
                   a 64-bit counter." } } 
                    
        STATUS deprecated 
         DESCRIPTION "Entity class representing  
             a 64-bit counter 
              through a pair of Counter32 objects." } 
 
 
    myCounter ENTITY-INSTANCE ::= { 
        OID { someBase 4 } 
        ENTITY-CLASS genericCounterClass 
        STATUS current 
        DESCRIPTION "An example generic counter variable." } 
 
 
    inetHostStatsTableClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE OF inetHostStatsEntryClass.&Syntax 
         
        INDEXING-ATTRIBUTES { {1} {2} {3} } 
        NAMING-SCHEME tabular 
 
        STATUS current 
        DESCRIPTION "Example of a IP host stats table." } 
         
 
    inetHostStatsEntryClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            ifIx     InterfaceIndex, 
            iaType   InetAddressType, 
            ia      InetAddress, 
             
            inPkts   Counter32, 
            outPkts  Counter32, 
            inOctets Counter32, 
            outOctets Counter32 } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS notAccessible 
              DESCRIPTION "The interface source  
                   for these statistics." } | 
                    
            { ATTRIBUTE {2} 
              MAX-ACCESS notAccessible 
              DESCRIPTION "The IP address type for the  
                   array entry. The InetAddressType values 
                   'unknown(1)' and 'dns(16)' are  
                   not allowed." } | 
                    
            { ATTRIBUTE {3} 
              MAX-ACCESS notAccessible 
              DESCRIPTION "The IP address for the  
                   array entry." } | 
             
            { ATTRIBUTE {4}                 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of packets received  
                   by the specified host on the specified 
                   interface." } |             
                    
            { ATTRIBUTE {5}                 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of packets transmitted  
                   by the specified host on the specified 
                   interface." } | 
                    
            { ATTRIBUTE {6}                 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of octets received  
                   by the specified host on the specified 
                   interface." } |             
                    
            { ATTRIBUTE {7} 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of octets transmitted  
                   by the specified host on the specified 
                   interface." } } 
 
        STATUS current 
        DESCRIPTION "Entity class of an entry of a IP host  
              stats table" } 
 
     
    hostStatsTimeDataClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            createTime TimeStamp, 
            updateInterval Unsigned32 } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1}  
              MAX-ACCESS readOnly 
              DESCRIPTION "The value of sysUpTime at the  
                   time this set of counters was created." } |  
                    
            { ATTRIBUTE {2} 
              MAX-ACCESS readOnly 
              DESCRIPTION "The average amount of time  
                   that elapses between internal polling  
                   intervals for this counter set. 
                   A value of zero indicates that the counter  
                   set values are not polled internally" } } 
 
        STATUS current 
         DESCRIPTION "Host stats times" } 
 
 
    inetHostStatsExtTableClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE OF inetHostStatsExtEntryClass.&Syntax 
     
        NAMING-SCHEME tabular 
 
        STATUS current 
        DESCRIPTION "Entity class of host stats extension table" } 
 
 
    inetHostSatsExtEntryClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            inHCPkts      Counter64, 
            outHCPkts     Counter64, 
            inHCOctets    Counter64, 
            outHCOctets   Counter64, 
            timeData     hostStatsTimeDataClass.&Syntax } 
 
        ASSIGNED-ATTRIBUTE-IDS {{8}, {9}, {10}, {11}, {12}}    
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {8} 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of packets received  
                   by the specified host on the specified 
                   interface." } |             
                    
            { ATTRIBUTE {9}                 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of packets transmitted  
                   by the specified host on the specified 
                   interface." } | 
                    
            { ATTRIBUTE {10}                
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of octets received  
                   by the specified host on the specified 
                   interface." } |             
                    
            { ATTRIBUTE {11} 
              MAX-ACCESS readOnly 
              DESCRIPTION "The number of octets transmitted  
                   by the specified host on the specified 
                   interface." } | 
 
            { ATTRIBUTE {12} 
              MAX-ACCESS notAccessible 
              DESCRIPTION "Additional time-related  
                   information." } } 
 
        STATUS current 
        DESCRIPTION "Entity class of host stats  
              extension table entry" } 
 
         
    inetHostStats ENTITY-INSTANCE ::= { 
        OID { someBase 31 } 
        ENTITY-CLASS inetHostStatsTableClass 
        STATUS current 
        DESCRIPTION "IP host statistics for this device" } 
 
 
    inetHostStatsExt ENTITY-INSTANCE ::= { 
        OID { someBase 31 } 
        ENTITY-CLASS inetHostStatsExtTableClass 
        BASE-ENTITY-INSTANCE inetHostStats  
         RELATIONSHIP augments 
        STATUS current 
        DESCRIPTION "Extension table - IP host statistics  
              for this device" } 
 
     
 
---------------------------------------------------- 
Example 6 
---------------------------------------------------- 
 
ASN1-DSMON-MIB { iso(1) identified-organization(3)  
         dod(6) internet(1)  
        private(4) enterprises(1) asn1(11502) 
        applications(1) sming(1) example-module-2(1002) } 
 
    DEFINITIONS AUTOMATIC TAGS BEGIN ::= 
 
    IMPORTS Integer32, SMICharacterString, 
        MODULE-INFO, ENTITY-CLASS, EVENT,  
        ENTITY-INSTANCE, NOTIFICATION, 
        NODE, NODE-GROUP, COMPLIANCE-STATEMENT 
        FROM ASN1-SMIng; 
 
    module-info MODULE-INFO ::= { 
        ORGANIZATION "XXXXX Working Group" 
 
        CONTACT "Last Name First Name 
              My Street 
              My City 
              My State" 
 
        REVISIONS { 
            { DATE "200111301240Z"  
              DESCRIPTION "Latest Revision - Aaa bb c ddddd" } | 
 
            { DATE "200007030917Z" 
              DESCRIPTION "First Version" } } 
 
        STATUS current 
        DESCRIPTION "This is an example MIB module" } 
 
    rmon NODE ::= { 
        OID { 1 23 456 789 } 
        STATUS current 
        DESCRIPTION "rmon node" } 
 
    dsmonMIB NODE ::= { 
        OID { rmon.&oid 26 } 
        STATUS current 
        DESCRIPTION "ASN.1 DSMON MIB Module OID base " } 
     
    dsmonObjects NODE ::= { 
        OID { dsmonMIB.&oid 1 } 
        DESCRIPTION "DSMON Objects" } 
 
    dsmonNotifications NODE ::= { 
        OID { dsmonMIB.&oid 2 } 
        DESCRIPTION "DSMON Notifications" } 
 
    dsmonConformance NODE ::= { 
        OID { dsmonMIB.&oid 3 } 
        DESCRIPTION "DSMON Conformance" } 
 
    dsmonAggObjects NODE ::= { 
        OID { dsmonObjects.&oid 1 } 
        DESCRIPTION "DSMON Aggregate Objects" } 
     
    dsmonStatsObjects NODE ::= { 
        OID { dsmonObjects.&oid 2 } 
        DESCRIPTION "DSMON Stats Objects" } 
     
    dsmonPdistObjects NODE ::= { 
        OID { dsmonObjects.&oid 3 } 
        DESCRIPTION "DSMON Pdist Objects" } 
     
    dsmonHostObjects NODE ::= { 
        OID { dsmonObjects.&oid 4 } 
        DESCRIPTION "DSMON Host Objects" } 
     
    dsmonCapsObjects NODE ::= { 
        OID { dsmonObjects.&oid 5 } 
        DESCRIPTION "DSMON Caps Objects" } 
     
    dsmonMatrixObjects NODE ::= { 
        OID { dsmonObjects.&oid 6 } 
        DESCRIPTION "DSMON Matrix Objects" } 
     
 
    dsmonAggGroupIndexClass ENTITY-CLASS ::= { 
        SYNTAX Integer32 (0..2147483647) 
        STATUS current 
        DESCRIPTION "This describes a data type which  
              identifies a DSMON aggregation group, which is an  
              arbitrary grouping of DSCP values, for monitoring 
              purposes only. The range for this data type begins 
              with zero (instead of one), to allow for a 
              direct mapping between DSCP and aggregation  
              group values." } 
               
               
    dsmonAggProfileIndexClass ENTITY-CLASS ::= { 
        SYNTAX Integer32 (0..2147483647) 
        STATUS current 
        DESCRIPTION "This describes a data type which  
              identifies a DSMON aggregation profile,  
              which is a set of aggregation group 
              assignments for each of the 64 DSCP values,  
              for a particular statistical collection." } 
               
               
    dsmonAggProfileClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            agggmt aggGroupMappingTableClass.&Syntax } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS notAccessible 
                DESCRIPTION "The table" } } 
                 
        STATUS current 
        DESCRIPTION "Controls the setup of a single aggregation  
              profile, for which every DSCP value MUST  
              be configured into exactly one aggregation  
              group. This object MUST NOT be modified if  
              the dsmonAggControlLocked object is equal  
              to 'true'. If the agent supports non-volatile 
              configuration of this object, then upon system 
              initialization, this object SHOULD be 
              initialized with the saved values." } 
               
               
    aggGroupMappingTableClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE OF aggGroupMappingEntryClass.&Syntax 
 
        INDEXING-ATTRIBUTES { {1} } 
        NAMING-SCHEME tabular 
 
        STATUS current 
        DESCRIPTION "Entity class of a set of 64  
              DSCP to Aggregation Group Index mappings." } } 
         
         
    aggGroupMappingEntryClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            dscp dscpClass.&Syntax, 
                   --dscpClass should be defined 
            dsmonAggGroupIndex dsmonAggGroupIndexClass.&Syntax 
                DEFAULT 0 } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1}  
              MAX-ACCESS notAccessible 
              STATUS current 
              DESCRIPTION "The specific DSCP value  
                    which is configured in an 
                    aggregation group by this entry." } | 
     
            { ATTRIBUTE {2} 
              MAX-ACCESS readWrite 
              STATUS current 
              DESCRIPTION "The aggregation group which  
                   contains this DSCP value.  Upon 
                  creation of a new sub-tree (set of 64  
                   entries with the same dsmonAggControlIndex  
                   value) in this object, the agent SHOULD 
                 initialize all related instances of this  
                   object to the value zero. This object MUST NOT  
                   be modified if the dsmonAggControlLocked  
                   object is equal to 'true'." } } 
     
        STATUS current 
        DESCRIPTION "Entity class of the entry" } 
 
 
    dsmonAggGroupTableClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE OF dsmonAggGroupEntryClass.&Syntax 
     
        INDEXING-ATTRIBUTES { {1} } 
        NAMING-SCHEME tabular 
 
        STATUS current 
        DESCRIPTION "Controls the setup of a single  
              aggregation profile, for which every DSCP  
              value MUST be configured into exactly one  
              aggregation group. This object MUST NOT be  
              modified if the dsmonAggControlLocked object  
              is equal to 'true'. If the agent supports  
              non-volatile configuration of this object,  
              then upon system initialization, this object  
              SHOULD be initialized with the saved values." } 
     
     
    dsmonAggGroupEntryClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            dsmonagix dsmonAggGroupIndexClass.&Syntax, 
            dsmonAggGroupDescr SnmpAdminString (SIZE(0..64)) } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS notAccessible 
               STATUS current 
              DESCRIPTION "The specific Aggregation Group  
                   which is represented group by each entry." } | 
 
            { ATTRIBUTE {2} 
              MAX-ACCESS readCreate 
              STATUS current 
              DESCRIPTION "An administratively assigned 
                   description of the aggregation group  
                   identified by this entry. Upon first  
                   creation of an instance of this object, 
                   the agent SHOULD set this object to the  
                   empty string. This object MUST NOT be  
                   modified if the associated dsmonAggGroupStatus 
                   object is equal to 'active', or the 
                   dsmonAggControlLocked object is equal to  
                   'true'." } } 
 
        STATUS current 
         DESCRIPTION "Controls the setup of a single aggregation 
              profile, for which every DSCP value MUST be  
              configured into exactly one aggregation group. 
              This object MUST NOT be modified if the 
              dsmonAggControlLocked object is equal to 'true'. 
              If the agent supports non-volatile configuration  
              of this object, then upon system initialization,  
              this object SHOULD be initialized with the saved 
              values." } 
                    
 
    dsmonAggControlClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            dsmonAggControlDescr SnmpAdminString (SIZE(0..64)), 
            aggProfile dsmonAggProfileClass.&Syntax, 
            aggGroup dsmonAggGroupTableClass.&Syntax, 
              dsmonAggControlOwner OwnerString, 
                  --OwnerString should be defined 
            dsmonAggControlStatus RowStatus } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS readCreate 
              DESCRIPTION "An administratively assigned 
                   description of the aggregation 
                   profile identified by this entry. 
                   Upon first creation of an instance of this 
                   object, the agent SHOULD set this object to  
                   the empty string.  If the agent supports  
                   non-volatile storage, then this object SHOULD  
                   be re-initialized with its stored value after 
                   a system reboot. This object MUST NOT be  
                   modified if the associated  
                   dsmonAggControlStatus object is equal to 
                   'active', or the dsmonAggControlLocked object  
                   is equal to 'true'." } | 
 
            { ATTRIBUTE {2} 
              DESCRIPTION "A set of DSCP to Aggregation  
                   Group mappings." } | 
 
            { ATTRIBUTE {3} 
              DESCRIPTION "An array of Aggregation Group 
                   descriptions." } | 
 
            { ATTRIBUTE {4} 
              MAX-ACCESS readCreate 
              DESCRIPTION "The entity that configured this  
                   object and is therefore using the resources 
                   assigned to it." } | 
 
            { ATTRIBUTE {5} 
              MAX-ACCESS readCreate  
               STATUS current 
              DESCRIPTION "The status of this entire  
                   aggregation control object. An entry MUST NOT 
                   exist in the active state unless all objects  
                   in the entry have an appropriate value." } } 
         
         STATUS current 
         DESCRIPTION "Provides an overall description and  
              control point for a single aggregation control 
              configuration. This object MUST NOT be modified  
              if the dsmonAggControlLocked object is equal  
              to 'true'." } 
                    
 
    dsmonMaxAggGroupsClass ENTITY-CLASS ::= { 
        SYNTAX Integer32 (2..64) 
        STATUS current 
        DESCRIPTION "Max number of aggregation groups" } 
 
 
    dsmonAggControlLockedClass ENTITY-CLASS ::= { 
        SYNTAX TruthValue 
        STATUS current 
        DESCRIPTION "Controls the setup of aggregation groups." } 
 
 
    dsmonAggControlChangesClass ENTITY-CLASS ::= { 
        SYNTAX Counter32 
        STATUS current 
        DESCRIPTION "Change counter" } 
 
 
    dsmonAggControlLastChangeTimeClass ENTITY-CLASS ::= { 
        SYNTAX TimeStamp 
        STATUS current 
        DESCRIPTION "Time of last change" } 
 
 
    dsmonAggProfilesTableClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE OF dsmonAggProfilesEntryClass.&Syntax 
         
        INDEXING-ATTRIBUTES { {1} } 
        NAMING-SCHEME hierarchical 
 
        STATUS current 
         DESCRIPTION "Entity class of a collection of DSMON 
              aggregation control profiles. This object MUST  
              NOT be modified if the dsmonAggControlLocked 
              object is equal to 'true'. If the agent supports  
              non-volatile configuration of this object, then  
              upon system initialization, this object SHOULD be 
              initialized with the saved values." } 
 
 
    dsmonAggProfilesEntryClass ENTITY-CLASS ::= { 
        SYNTAX SEQUENCE { 
            profileindex dsmonAggProfileIndexClass.&Syntax, 
            aggControl dsmonAggControl.&Syntax } 
 
        ATTRIBUTE-INFO { 
            { ATTRIBUTE {1} 
              MAX-ACCESS notAccessible 
              DESCRIPTION "The specific Aggregation  
                   Profile which is represented group  
                   by each entry." } | 
 
            { ATTRIBUTE {2} 
              MAX-ACCESS notAccessible 
              DESCRIPTION "The DSMON Aggregation Control  
                   entry for each profile." } } 
 
        STATUS current 
         DESCRIPTION "Entity class for a DSMON aggregation  
              control profile." } 
 
 
    dsmonMaxAggGroups ENTITY-INSTANCE ::= { 
        OID { dsmonAggObjects.&oid 1 } 
        ENTITY-CLASS dsmonMaxAggGroupsClass 
        MAX-ACCESS readOnly 
        STATUS current 
        DESCRIPTION "The maximum number of aggregation  
              groups that this agent can support." } 
 
     
    dsmonAggControlLocked ENTITY-INSTANCE ::= { 
        OID { dsmonAggObjects.&oid 2 } 
        ENTITY-CLASS dsmonAggControlLockedClass 
        MAX-ACCESS readWrite 
        STATUS current 
        DESCRIPTION "Controls the setup of aggregation  
              groups for this agent." } 
 
 
    dsmonAggControlChanges ENTITY-INSTANCE ::= { 
        OID { dsmonAggObjects.&oid 3 } 
        ENTITY-CLASS dsmonAggControlChangesClass 
        MAX-ACCESS readOnly 
        STATUS current 
         DESCRIPTION "This object counts the number of times 
              the value of the dsmonAggControlLocked object  
              has changed." } 
 
 
    dsmonAggControlLastChangeTime ENTITY-INSTANCE ::= { 
        OID { dsmonAggObjects.&oid 4 } 
        ENTITY-CLASS dsmonAggControlLastChangeTimeClass 
        MAX-ACCESS readOnly 
        STATUS current 
         DESCRIPTION "This object identifies the value of  
              sysUpTime at the moment the dsmonAggControlLocked 
              object was last modified." } 
                    
                    
    dsmonAggProfiles ENTITY-INSTANCE ::= { 
        OID { dsmonAggObjects.&oid 5 } 
        ENTITY-CLASS dsmonAggProfilesTableClass 
        STATUS current 
         DESCRIPTION "Entity class of a collection of DSMON 
              aggregation control profiles. This object MUST  
              NOT be modified if the dsmonAggControlLocked 
              object is equal to 'true'. If the agent supports  
              non-volatile configuration of this object, then  
              upon system initialization, this object SHOULD be 
              initialized with the saved values." } 
 
    dsmonAggControlCompliance COMPLIANCE-STATEMENT ::= { 
        OID { dsmonCompliances 1 } 
        MANDATORY-NODE-GROUPS { dsmonAggControlGroup.&oid } 
        STATUS current 
        DESCRIPTION "Example compliance for the aggregation  
              control portion of the DSMON-MIB module." } 
 
    dsmonAggControlGroup NODE-GROUP ::= { 
        OID { dsmonGroups 1 } 
        MEMBERS { dsmonMaxAggGroups.&oid,  
              dsmonAggControlLocked.&oid, 
              dsmonAggControlChanges.&oid, 
              dsmonAggControlLastChangeTime.&oid  --more?} 
        STATUS current 
        DESCRIPTION "A collection of objects used to configure  
              and manage aggregation groups for DSMON collection 
              purposes." } 
               
END   --of the module