-- *****************************************************************
-- MY-PING-MIB.mib:  My Ping MIB file
--
-- $Copyright$
-- 
-- *****************************************************************
--

MY-PING-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Integer32,
        Counter32
                FROM SNMPv2-SMI
        TruthValue,
        DisplayString,
        RowStatus
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP
                FROM SNMPv2-CONF
        IfIndex
                FROM MY-TC                
        myMgmt
                FROM MY-SMI;

myPingMIB MODULE-IDENTITY
        LAST-UPDATED "200203200000Z"
        ORGANIZATION "$Company$"
        CONTACT-INFO
                " 
                Tel: $Telephone$ 

                E-mail: $E-mail$"
        DESCRIPTION
                "This module defines my ping mibs."
        REVISION      "200203200000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { myMgmt 3}

myPingMIBObjects OBJECT IDENTIFIER ::= { myPingMIB 1 }

myPingTable OBJECT-TYPE
        SYNTAX SEQUENCE OF MyPingEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
               "A table of ping request entries."
        ::= { myPingMIBObjects 1 }
    
myPingEntry OBJECT-TYPE
        SYNTAX MyPingEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "Entry contains ping parameters and results.
                
                A management station wishing to create an entry should
                first generate a pseudo-random serial number to be used
                as the index to a ping entry.  The station should
                then create the associated entry.
                
                We must set all specifies valid values for the 
                non-defaulted configuration objects, certainly, it should
                also modify  the default values for the other configuration 
                objects if the defaults are not appropriate.
                                       
                Once the appropriate instance of all the configuration
                objects have been created or set,the row status should be set
                to active to initiate the request.  

                Once the ping sequence has been activated, it cannot be
                stopped -- it will run until the configured number of
                packets have been sent.

                Once the sequence completes, the management station should
                retrieve the values of the status objects of interest, and
                should then delete the entry.  In order to prevent old
                entries from clogging the table, entries will be aged out,
                but an entry will never be deleted within 5 minutes of
                completing." 
        INDEX { myPingIndex }
        ::= { myPingTable 1 }
        
MyPingEntry ::= 
        SEQUENCE {
                myPingIndex Integer32,
                myPingAddress IpAddress,
                myPingDataLength Unsigned32,
                myPingTimes Unsigned32,
                myPingTimeOuts Unsigned32,
                myPingReturns Unsigned32,
                myPingMaxTime Unsigned32,
                myPingAvTime Unsigned32,
                myPingMinTime Integer32,
                myPingCompleted TruthValue,
                myPingEntryStauts RowStatus,
                myPingSourceIp    IpAddress,
                myPingSourceInterfaceIndex IfIndex,
                myPingTypeOfService    Unsigned32 
                
        }

myPingIndex OBJECT-TYPE
        SYNTAX Integer32(1..2147483647)
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
               "Object which specifies a unique entry in the
                myPingTable.  A management station wishing
                to initiate a ping operation should use a
                pseudo-random value for this object when creating
                or modifying an instance of a myPingEntry.
                The RowStatus semantics of the myPingEntryStatus
                object will prevent access conflicts."
        ::= { myPingEntry 1 }
    
myPingAddress OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "Pinged host ip address."
        ::= { myPingEntry 2 }
    
myPingDataLength OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "Pinged ICMP echo datagram's data length."
        DEFVAL { 100 }
        ::= { myPingEntry 3 }
    
myPingTimes OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "Pimes the ICMP echo datagrams will be sent."
        DEFVAL { 5 }
        ::= { myPingEntry 4 }
    
myPingTimeOuts OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION 
            "Ping but no echo from required address, the time last
            for time out, in milliseconds."
        DEFVAL { 2000 }
        ::= { myPingEntry 5 }
    
myPingReturns OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "How many echo request has been return by a echo reply."
        ::= { myPingEntry 6 }
            
myPingMaxTime OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Max return time of the echo reply."
        ::= { myPingEntry 7 }
    
myPingAvTime OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Average returned time of the echo reply of that reply
            but not time out."
        ::= { myPingEntry 8 }
    
myPingMinTime OBJECT-TYPE
        SYNTAX Unsigned32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Min returned time of the echo reply."
        ::= { myPingEntry 9 }
    
myPingCompleted OBJECT-TYPE
        SYNTAX TruthValue
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "While the ping process has completed the value of this field
             will be true(1), else false(2)."
        ::= { myPingEntry 10 }
    
myPingEntryStauts OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "entry status for this list."
        ::= { myPingEntry 11 }

myPingSourceIp OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "the address of source interface."
        ::= { myPingEntry 12 }

myPingSourceInterfaceIndex OBJECT-TYPE
    SYNTAX     IfIndex
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The ifIndex value of this source interface."
    ::= { myPingEntry 13 }

myPingTypeOfService OBJECT-TYPE
        SYNTAX Unsigned32(0..255)
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "the value of type of service."
        ::= { myPingEntry 14 }
     
-- conformance information

myPingMIBConformance OBJECT IDENTIFIER ::= { myPingMIB 2 }
myPingMIBCompliances OBJECT IDENTIFIER ::= { myPingMIBConformance 1 }
myPingMIBGroups      OBJECT IDENTIFIER ::= { myPingMIBConformance 2 }


-- compliance statements

myPingMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the My Ping MIB"
        MODULE  -- this module
                MANDATORY-GROUPS { myPingMIBGroup }
        ::= { myPingMIBCompliances 1 }
        
        
-- units of conformance

myPingMIBGroup OBJECT-GROUP
        OBJECTS {
                myPingIndex ,
                myPingAddress ,
                myPingDataLength ,
                myPingTimes ,
                myPingTimeOuts ,
                myPingReturns ,
                myPingMaxTime ,
                myPingAvTime ,
                myPingMinTime ,
                myPingCompleted ,
                myPingEntryStauts,
                myPingSourceIp    ,
                myPingSourceInterfaceIndex ,
                myPingTypeOfService      
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing ping (echo) ability to a
                My agent."
        ::= { myPingMIBGroups 1 }        
        

-- hcb add

traceRouteMIBObjects OBJECT IDENTIFIER ::= { myPingMIB 3 }

-- traceRouteTable

traceRouteTable OBJECT-TYPE
        SYNTAX        SEQUENCE OF TraceRouteEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
                "A table of trace route request entries.
                 The traceRouteTable will contain a set of
                 trace route requests that need to be executed
                 at the agent."
        ::= { traceRouteMIBObjects 1 }

-- traceRouteEntry

traceRouteEntry OBJECT-TYPE
        SYNTAX        TraceRouteEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
                "A trace route request entry."
        INDEX { traceRouteIndex }
        ::= { traceRouteTable 1 }

TraceRouteEntry ::=
        SEQUENCE {
            traceRouteIndex              Unsigned32,
            traceRouteTargetAddr         IpAddress,
            traceRouteHopCount           Unsigned32,
            traceRoutePingCount          Unsigned32,
            traceRoutePingTimeout        Unsigned32,
            traceRouteRowStatus          RowStatus
        }

traceRouteIndex OBJECT-TYPE
        SYNTAX        Unsigned32 (1..2147483647)
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
                "The index of a trace route entry. "
        ::= { traceRouteEntry 1 }

traceRouteTargetAddr OBJECT-TYPE
        SYNTAX        IpAddress
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
                "The address of the device to which the route is to be traced."
        ::= { traceRouteEntry 2 }

traceRouteHopCount OBJECT-TYPE
 	SYNTAX        Unsigned32(1..100)
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
                "Wait timeout milliseconds for each reply."
        DEFVAL { 30 }
        ::= { traceRouteEntry 3 }

traceRoutePingCount OBJECT-TYPE
 	SYNTAX        Unsigned32(1..6)
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
                "Repeat count for each echo."
        DEFVAL { 3 }
        ::= { traceRouteEntry 4 }

traceRoutePingTimeout OBJECT-TYPE
        SYNTAX 	      Unsigned32(1..60000)
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
                "Wait timeout milliseconds for each reply."
        DEFVAL { 2000 }
        ::= { traceRouteEntry 5 }


traceRouteRowStatus OBJECT-TYPE
        SYNTAX        RowStatus
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "entry status for this list."
        ::= { traceRouteEntry 6 }

-- traceRouteHopsTable

traceRouteHopsTable OBJECT-TYPE
        SYNTAX        SEQUENCE OF TraceRouteHopsEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
                "A table of trace route hop results.
                 This table contains the hop-by-hop result
                 of a trace route test performed for an
                 entry in the traceRouteTable."
        ::= { traceRouteMIBObjects 2 }

traceRouteHopsEntry OBJECT-TYPE
        SYNTAX        TraceRouteHopsEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
                "A trace route hop entry."
        INDEX { traceRouteIndex, traceRouteHopIndex }
        ::= { traceRouteHopsTable 1 }

TraceRouteHopsEntry ::= SEQUENCE {
        traceRouteHopIndex               Unsigned32,
        traceRouteHopPingIndex           Unsigned32,
        traceRouteHopPingCompleted       TruthValue,
        traceRouteHopPingResult          TruthValue,
	     traceRouteHopPingReturnTime      Unsigned32,
        traceRouteHopAddr                IpAddress
}

traceRouteHopIndex OBJECT-TYPE
        SYNTAX        Unsigned32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
                "This object specifies the hop index for a
                 traceroute hop. Values for this object with
                 respect to the same traceRouteIndex MUST start
                 at 1 and increase monotonically.
                 All hops (traceRouteHopsTable entries) in a
                 trace route path MUST be updated at the same time
                 when a trace route test completes."
        ::= { traceRouteHopsEntry 1 }

traceRouteHopPingIndex OBJECT-TYPE
        SYNTAX        Unsigned32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
                "This object specifies the hop index for a
                 Icmp echo. Values for this object with
                 respect to the same traceRouteIndex and
                 the same traceRouteHopIndex MUST start
                 at 1 and increase monotonically. "
        ::= { traceRouteHopsEntry 2 }

traceRouteHopPingCompleted OBJECT-TYPE
        SYNTAX        TruthValue
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "While the ping process has completed the value of this field
             will be true(1), else false(2)."
        ::= { traceRouteHopsEntry 3 }

traceRouteHopPingResult OBJECT-TYPE
        SYNTAX        TruthValue
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "While the ping process has completed and
             the Icmp echo reply or Icmp ttl expiration has received,
             the value of this field will be true(1), else false(2)."
        ::= { traceRouteHopsEntry 4 }

traceRouteHopPingReturnTime OBJECT-TYPE
        SYNTAX        Unsigned32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "Returned time of the echo reply of that reply
            but not time out."
        ::= { traceRouteHopsEntry 5 }

traceRouteHopAddr OBJECT-TYPE
        SYNTAX        IpAddress
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
                "This object reports the WWN of the device
                 associated with this hop."
        ::= { traceRouteHopsEntry 6 }

END
