-- *****************************************************************
-- QTECH-PTOPO MIB: Extracted from RFC 2922 
--
-- Apr 2003, kufeng
-- 
-- Copyright (c) 2003 by Qtech Networks Co.,Ltd.
-- All rights reserved.
-- *****************************************************************



QTECH-PTOPO-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, 
    OBJECT-TYPE, 
    Integer32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    DisplayString, 
    TimeStamp, 
    MacAddress
        FROM SNMPv2-TC
    EnabledStatus 
        FROM P-BRIDGE-MIB
    qtechMgmt
        FROM QTECH-SMI; 

qtechPotopoMIB MODULE-IDENTITY
    LAST-UPDATED "200304280000Z"
    ORGANIZATION "Qtech Networks Co.,Ltd."
    CONTACT-INFO
            " 
            Tel: 4008-111-000

            E-mail: service@qtech.com.cn"
    DESCRIPTION
            "The MIB module for physical topology information."
    REVISION        "200304280000Z"
    DESCRIPTION
            "Initial Version of the Physical Topology MIB."
    ::= { qtechMgmt 33 }

ptopoMIBObjects   OBJECT IDENTIFIER ::= { qtechPotopoMIB 1 }

-- MIB groups
ptopoConnData     OBJECT IDENTIFIER ::= { ptopoMIBObjects 1 }
ptopoDevData      OBJECT IDENTIFIER ::= { ptopoMIBObjects 2 }
ptopoConfig       OBJECT IDENTIFIER ::= { ptopoMIBObjects 3 }

--  ***********************************************************
--
--           P T O P O    C O N N E C T I O N     G R O U P
--
--  ***********************************************************

-- Connection Table


ptopoConnTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PtopoConnEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains one or more rows per physical network
            connection known to this agent.  The agent may wish to
            ensure that only one ptopoConnEntry is present for each
            local port, or it may choose to maintain multiple
            ptopoConnEntries for the same local port.

            Entries based on lower numbered identifier types are
            preferred over higher numbered identifier types, i.e., lower
            values of the ptopoConnRemoteChassisType and
            ptopoConnRemotePortType objects."
    ::= { ptopoConnData 1 }

ptopoConnEntry       OBJECT-TYPE
    SYNTAX      PtopoConnEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Information about a particular physical network connection.
            Entries may be created and deleted in this table by the 
            agent, if a physical topology discovery
            process is active."
    INDEX   {
           ptopoConnIndex
    }
    ::= { ptopoConnTable 1 }

PtopoConnEntry ::= SEQUENCE {
      ptopoConnIndex               Integer32,
      ptopoConnLocalDevice         MacAddress,
      ptopoConnLocalPort           DisplayString,
      ptopoConnRemoteDevice        MacAddress,
      ptopoConnRemotePort          DisplayString,
      ptopoConnIsUpStream          INTEGER
}

ptopoConnIndex    OBJECT-TYPE
    SYNTAX      Integer32  (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This object represents an arbitrary local integer value
            used by this agent to identify a particular connection
            instance, unique only for the indicated local connection
            endpoint."
    ::= { ptopoConnEntry 1 }

ptopoConnLocalDevice  OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The identical CPU mac address value used to identify the 
            device associated with the local connection endpoint."
    ::= { ptopoConnEntry 2 }

ptopoConnLocalPort     OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Index value used to identify the port
            component associated with the local connection endpoint.
            if the Interface is aggreated in any Aggregation port, 
            use only it's own IfIndex, not the Aggregation port."
    ::= { ptopoConnEntry 3 }

ptopoConnRemoteDevice  OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The string value used to identify the chassis component
            associated with the remote connection endpoint."
    ::= { ptopoConnEntry 4 }

ptopoConnRemotePort  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The string value used to identify the port component
            associated with the remote connection endpoint."
    ::= { ptopoConnEntry 5 }

ptopoConnIsUpStream OBJECT-TYPE
    SYNTAX INTEGER
     	{
     	    upstream(1),
     	    nonupstream(2)
     	}
     MAX-ACCESS read-only
     STATUS current
     DESCRIPTION
         "Indicate whether the remote device and its port is the local
         device's upstream. if true the value of this object is upstream(1),
         otherwise nonupstream(2)."
     ::= { ptopoConnEntry 6 }

--  ***********************************************************
--
--           P T O P O    D E V I C E    D A T A     G R O U P
--
--  ***********************************************************

-- Device Table


ptopoDevTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PtopoDevEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains one or more rows per network device
            known to this agent, such as switches."
    ::= { ptopoDevData 1 }

ptopoDevEntry       OBJECT-TYPE
    SYNTAX      PtopoDevEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Information about a particular network device .
            Entries may be created and deleted in this table by the 
            agent, if a physical topology discovery
            process is active."
    INDEX   {
           ptopoDevID
    }
    ::= { ptopoDevTable 1 }

PtopoDevEntry ::= SEQUENCE {
      ptopoDevID    MacAddress,
      ptopoDevHostname    DisplayString,
      ptopoDevClusStatus  EnabledStatus,
      ptopoDevClusMode    INTEGER,
      ptopoDevClusName    DisplayString,
      ptopoDevCSMac       MacAddress,
      ptopoDevHopsToCs    Integer32,
      ptopoDevLastVerifyTime      TimeStamp
}

ptopoDevID OBJECT-TYPE
    SYNTAX MacAddress
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
    	"Device ID of the device."
    ::= { ptopoDevEntry 1 }

ptopoDevHostname OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..22))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"host name of the Device."
    ::= { ptopoDevEntry 2 }

ptopoDevClusStatus OBJECT-TYPE
    SYNTAX EnabledStatus
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"cluster status of the Device."
    ::= { ptopoDevEntry 3 }

ptopoDevClusMode OBJECT-TYPE
    SYNTAX INTEGER {
                     commandDevice(1),
                     memberDevice(2),
                     none(3)
                    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"cluster mode of the device."
    ::= { ptopoDevEntry 4 }

ptopoDevClusName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..16))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"cluster name of the device. if the device is not in any
    	cluster will return null string.(string length = 0)"
    ::= { ptopoDevEntry 5 }
    
ptopoDevCSMac OBJECT-TYPE
    SYNTAX MacAddress
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"cluster command switch mac address of the device. if
    	the device if not in any cluster, will return value all 0."
    ::= { ptopoDevEntry 6 }
    
ptopoDevHopsToCs OBJECT-TYPE
    SYNTAX Integer32 (1..7)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"hops the device distance to the command switch."
    ::= { ptopoDevEntry 7 }
    
ptopoDevLastVerifyTime OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
    	"indicate the last time when the device can receive topology gather packetes, 
    	and response correctly. "
    ::= { ptopoDevEntry 8 }

--  ***********************************************************
--
--           P T O P O    C O N F I G     G R O U P
--
--  ***********************************************************

ptopoConfigInterval OBJECT-TYPE
    SYNTAX Integer32 (1..300)
    UNITS "seconds"
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
    	"This object specifies the desired time interval for whih
    	an agent will qtech to get ptopoConnEntries."
    DEFVAL { 12 }
    ::= { ptopoConfig 1 }

ptopoConfigMaxHoldTime OBJECT-TYPE
    SYNTAX      Integer32 (1..300)
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This object specifies the desired time interval for which
            an agent will maintain ptopoConnEntries.

            After the specified number of seconds since the last time an
            entry was verified, in the absence of new verification
            (e.g., receipt of a topology protocol message), the agent
            shall remove the entry.  Note that entries may not always be
            removed immediately, but may possibly be removed at periodic
            garbage collection intervals.

            Note that dynamic ptopoConnEntries may also be removed by
            the agent due to the expired timeliness of learned topology
            information (e.g., timeliness interval for a remote port
            expires).  The actual age-out interval for a given entry is
            defined by the following formula:

              age-out-time =
                min(ptopoConfigMaxHoldTime, <entry-specific hold-time>)

            where <entry-specific hold-time> is determined by the
            discovery algorithm, and may be different for each entry."
    DEFVAL { 120 }
    ::= { ptopoConfig 2 }
    
ptopoConfigHopCount OBJECT-TYPE
    SYNTAX Integer32 (1..7)
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
    	"hop count of the topology collection."
    DEFVAL { 3 }
    ::= { ptopoConfig 3 }
    
    
-- compliance statements
         
qtechptopoMIBConformance OBJECT IDENTIFIER ::= { qtechPotopoMIB 2 }
qtechptopoMIBCompliances OBJECT IDENTIFIER ::= { qtechptopoMIBConformance 1 }
qtechptopoMIBGroups      OBJECT IDENTIFIER ::= { qtechptopoMIBConformance 2 }

qtechptopoMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the Qtech ptopo MIB"
        MODULE  -- this module
                MANDATORY-GROUPS { qtechptopoMIBGroup
                 }
                       
        ::= { qtechptopoMIBCompliances 1 }
                
-- units of conformance

qtechptopoMIBGroup OBJECT-GROUP
        OBJECTS {
        ptopoConnRemoteDevice,
        ptopoConnRemotePort,
        ptopoConnIsUpStream,
        ptopoDevHostname,
        ptopoDevClusStatus,
        ptopoDevClusMode,
        ptopoDevClusName,
        ptopoDevCSMac,
        ptopoDevHopsToCs,
        ptopoDevLastVerifyTime,
        ptopoConfigInterval,
        ptopoConfigMaxHoldTime,
        ptopoConfigHopCount
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing ptopo management and
                opertion to a Qtech agent."
        ::= { qtechptopoMIBGroups 1 } 

END
