-- *****************************************************************
-- CISCO-SNAPSHOT-MIB.my:  Cisco Snapshot MIB file
--
-- August 1994, Jeffrey Johnson Sandra Durham Joel Bion
--
-- Copyright (c) 1994-1996 by cisco Systems, Inc.
-- All rights reserved.
-- 
-- *****************************************************************
--


CISCO-SNAPSHOT-MIB DEFINITIONS ::= BEGIN

IMPORTS
	MODULE-IDENTITY,
	OBJECT-TYPE,
	Integer32
		FROM SNMPv2-SMI
	RowStatus,
	TruthValue
		FROM SNMPv2-TC
	InterfaceIndex
		FROM IF-MIB
	ciscoMgmt
		FROM CISCO-SMI
	MODULE-COMPLIANCE,
	OBJECT-GROUP
		FROM SNMPv2-CONF
	CiscoNetworkProtocol,
	CiscoNetworkAddress
		FROM CISCO-TC;

ciscoSnapshotMIB MODULE-IDENTITY
	LAST-UPDATED	"9508150000Z"
	ORGANIZATION	"Cisco Systems, Inc."
	CONTACT-INFO
		"       Cisco Systems
			Customer Service

		Postal: 170 W Tasman Drive
			San Jose, CA  95134
			USA

		   Tel: +1 800 553-NETS

		E-mail: cs-snmp@cisco.com"
	DESCRIPTION
		"Snapshot routing MIB"
	REVISION        "9508150000Z"
	DESCRIPTION
		"Specify a correct (non-negative) range for an index
		object.  Also, correct typo which caused syntax conflict."
	REVISION	"9503210000Z"
	DESCRIPTION
		"Miscellaneous updates to the MIB and capabilities."
	REVISION	"9501110000Z"
	DESCRIPTION
		"Initial version of this MIB module."
	::= { ciscoMgmt 19 }

-- Snapshot routing provides easy solutions to two common problems:
-- 
--   1) The need to configure static routes for Dial on Demand Routing (DDR)
--      interfaces.
-- 
--   2) The overhead of periodic updates for routing protocols to remote 
--	branch offices over dedicated serial lines.
-- 
-- When snapshot routing is configured on an interface, it first allows
-- normal routing updates to be sent across the interface for a short
-- period of time. After this user configured period of activity, the
-- routing updates are suspended, and the routes learned on the snapshot
-- interface are 'frozen' in place, putting the interface into a 'frozen
-- period', again user configurable. During this 'frozen' time, changes
-- in network topology are typically not transmitted across the snapshot
-- interface, although some network protocols provide the capability to
-- transmit changes.
-- 
-- The factors to consider in choosing to enable snapshot routing to an
-- interface are:
-- 
--   1) The importance of obtaining quick notification of changes in the
--      network topology at a remote site.
--   2) Whether or not you are using Dial on Demand routing from a remote
--      site to reach a central site or using a dedicated serial link.
-- 
-- If you are using a dedicated serial link, and wish to have
-- up-to-the-minute topology information at a remote site, then snapshot
-- routing is probably not appropriate for you. If, however, the network
-- topology changes less frequently, or if full connectivity to all
-- locations is not important to you, then snapshot routing (with
-- possibly, a few static routes to 'key' remote locations that should
-- always be available) will probably meet your needs well.
-- 
-- If you are using dial on demand routing (DDR), then Snapshot routing
-- is almost certainly an advantage. Before Snapshot routing, all
-- 'desired' destinations needed to be configured with static routes.
-- With Snapshot routing, it is possible to learn the set of remote
-- routes dynamically, and then keep them available while the link is
-- down, avoiding the configuration of any static routes. Again, if there
-- are 'crucial' locations that must always be in the table, it may be
-- best to configure them statically, to ensure constant availability, in
-- case the desired location was temporarily down when the Snapshot route
-- sharing activity was taking place.
-- 
-- Snapshot routing is configured on a 'client/server' basis. One router
-- on the interface is chosen as the 'client' router, and it determines
-- active route-exchange and 'sleeping' times.

ciscoSnapshotMIBObjects OBJECT IDENTIFIER ::= { ciscoSnapshotMIB 1 }

ciscoSnapshotForceActive OBJECT-TYPE
	SYNTAX	    Integer32 
	MAX-ACCESS  read-write
	STATUS	    current
	DESCRIPTION
		"Forces the snapshot state to active for all entries
		of the ciscoSnapshotActivityTable whose 
		ciscoSnapshotIfIndex value is specified as parameter.
		The interface associated with ciscoSnapshotIfIndex 
		must be a client interface.

		Retrieval of this object will return the value of the 
		ciscoSnapshotIfIndex that was last forced into the 
		active state, or 0 if no interfaces have been forced into 
		the active state since the router was reset"
	::= { ciscoSnapshotMIBObjects 1 }

ciscoSnapshotInterfaceTable OBJECT-TYPE
	SYNTAX	    SEQUENCE OF CiscoSnapshotInterfaceEntry
        MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
		"A list of Snapshot Routing configuration entries."
	::= { ciscoSnapshotMIBObjects 2 }

ciscoSnapshotInterfaceEntry OBJECT-TYPE
	SYNTAX	    CiscoSnapshotInterfaceEntry
        MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
		"A Snapshot Routing configuration entry.

		A management station wishing to create an entry should
		create the associated instance of the row status object.
		It should also modify, either in the same or in successive
		PDUs, the values for the other objects if the defaults are
		not appropriate.

		Once the appropriate instance of all the configuration
		objects have been created, either by an explicit SNMP
		set request or by default, the row status should be set
		to active to initiate the request.  Note that this entire
		procedure may be initiated via a single set request which
		specifies a row status of createAndGo.

		In order to prevent inactive (notReady, or notInService)
		entries from clogging the table, entries will be aged out,
		but an entry will never be deleted within 5 minutes of
		creation."
	INDEX { ciscoSnapshotIfIndex }
	::= { ciscoSnapshotInterfaceTable 1 }

CiscoSnapshotInterfaceEntry ::=
	SEQUENCE {
		ciscoSnapshotIfIndex		InterfaceIndex,
		ciscoSnapshotClient		TruthValue,
		ciscoSnapshotDialer		TruthValue,
		ciscoSnapshotActiveInterval	Integer32,
		ciscoSnapshotQuietInterval	Integer32,
		ciscoSnapshotRetryInterval	Integer32,
		ciscoSnapshotIfUpAction		INTEGER,
		ciscoSnapshotRowStatus  	RowStatus
	}


ciscoSnapshotIfIndex OBJECT-TYPE
	SYNTAX	    InterfaceIndex
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
		"The interface to which this entry pertains." 
	::= { ciscoSnapshotInterfaceEntry 1 }

ciscoSnapshotClient OBJECT-TYPE
	SYNTAX	    TruthValue
	MAX-ACCESS  read-create
	STATUS	    current
	DESCRIPTION
		"When true, this router is the client snapshot router on
		the interface.  When false, this router is the server
		snapshot router on the interface."
	DEFVAL	    { true }
	::= { ciscoSnapshotInterfaceEntry 2 }

ciscoSnapshotDialer OBJECT-TYPE
	SYNTAX	    TruthValue
	MAX-ACCESS  read-create
	STATUS	    current
	DESCRIPTION
		"Indicates whether or not snapshot routing on this
		interface uses Dial-on-Demand routing."
	DEFVAL	    { false }
	::= { ciscoSnapshotInterfaceEntry 3 }

ciscoSnapshotActiveInterval OBJECT-TYPE
	SYNTAX	    Integer32 (5..1000)
	UNITS	    "minutes"
	MAX-ACCESS  read-create
	STATUS	    current
	DESCRIPTION
		"The amount of time during which routes may be exchanged
		between the client and server routers."
	DEFVAL	    { 5 }
	::= { ciscoSnapshotInterfaceEntry 4 }

ciscoSnapshotQuietInterval OBJECT-TYPE
	SYNTAX	    Integer32 (8..100000)
	UNITS	    "minutes"
	MAX-ACCESS  read-create
	STATUS	    current
	DESCRIPTION
		"The amount of time during which routes are retained and
		frozen between active periods.

		An instance of this object may only be present if the value
		of the associated ciscoSnapshotClient object is true."
	DEFVAL	   {  8 }
	::= { ciscoSnapshotInterfaceEntry 5 }

ciscoSnapshotRetryInterval OBJECT-TYPE
	SYNTAX	    Integer32
	UNITS	    "minutes"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The amount of time to wait and retry a route exchange if an
		active period elapses with no routes being exchanged.  For
		example, if an interface is down (or a DDR phone number is
		busy, or a DDR interface is unavailable) during the active
		interval, instead of waiting for the amount of time specified
		by ciscoSnapshotQuietTime to elapse before an attempt is made
		to exchange routing updates again, the attempt is made after
		the amount of time specified by this object has elapsed.
		This value is calculated automatically based on the 
		ciscoSnapshotActiveInterval.

		An instance of this object may only be present if the value
		of the associated ciscoSnapshotClient object is true."

	::= { ciscoSnapshotInterfaceEntry 6 }

ciscoSnapshotIfUpAction OBJECT-TYPE
	SYNTAX	    INTEGER {
			goActive (1),
			noAction (2)
		    }
	MAX-ACCESS  read-create
	STATUS	    current
	DESCRIPTION
		"This object controls the action that takes place when the
		interface associated with this entry transitions to the `up'
		state while snapshot routing on the interface is in quiet
		mode.

		A value of goActive will cause the immediate transition to
		the active state.

		A value of noAction will cause no such transition.  Instead,
		the transition to the active state will occur normally when
		the current quiet period has expired.

		Going active immediately incurs extra routing protocol
		overhead, but allows a fresh set of routing updates be
		exchanged each time the line is brought up.  This is useful
		in a Dial-on-Demand routing environment.

		An instance of this object may only be present if the value
		of the associated ciscoSnapshotClient object is true."
	DEFVAL { goActive }
	::= { ciscoSnapshotInterfaceEntry 7 }

ciscoSnapshotRowStatus OBJECT-TYPE
	SYNTAX	    RowStatus
	MAX-ACCESS  read-create
	STATUS	    current
	DESCRIPTION
		"The status of this table entry.  Once the entry status is
		set to active, the snapshot routing process will be 
		enabled for this interface."
	::= { ciscoSnapshotInterfaceEntry 8 }


ciscoSnapshotActivityTable OBJECT-TYPE
	SYNTAX	    SEQUENCE OF CiscoSnapshotActivityEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
		"A list of snapshot routing activity entries."
	::= { ciscoSnapshotMIBObjects 3 }

ciscoSnapshotActivityEntry OBJECT-TYPE
	SYNTAX	    CiscoSnapshotActivityEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
		"A snapshot routing activity entry.

		Entries in this table are added for active row entries
		in the ciscoSnapshotInterfaceTable.  If a row entry in
		the ciscoSnapshotInterfaceTable is set to notInService,
		or deleted, associated entries in this table will be 
		deleted.
	
		Note that if the associated row in the 
		ciscoSnapshotInterfaceTable is for a server router, entries
		in this table will only be present when the server is
		actively involved in snapshot routing updates."
	INDEX { ciscoSnapshotIfIndex, ciscoSnapshotActivityIndex }
	::= { ciscoSnapshotActivityTable 1 }

CiscoSnapshotActivityEntry ::=
	SEQUENCE {
		ciscoSnapshotActivityIndex	Integer32 (0..2147483647),
		ciscoSnapshotActivityState	INTEGER,
		ciscoSnapshotActivityTimer	Integer32,
		ciscoSnapshotExchangeTimer	Integer32,
		ciscoSnapshotDialerMap		Integer32,
		ciscoSnapshotSourceProtocol	CiscoNetworkProtocol,
		ciscoSnapshotSourceAddress	CiscoNetworkAddress,
		ciscoSnapshotProtocolsExchanged	OCTET STRING
	}

ciscoSnapshotActivityIndex OBJECT-TYPE
	SYNTAX	    Integer32 (0..2147483647)
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
		"An index value that uniquely identifies a Snapshot
		Activity Entry on a given interface."
	::= { ciscoSnapshotActivityEntry 1 }

ciscoSnapshotActivityState OBJECT-TYPE
	SYNTAX	    INTEGER {
			active (1),
			quiet (2),
			serverPostActive (3),
			transitionToQuiet (4),
			transitionToActive (5),
			limbo (6)
		    }  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The current state of snapshot routing for this entry.
		active means that routing information may be exchanged.
		quiet, only present on a client snapshot interface,
		means that routes are frozen, and that no routing
		information may be exchanged until the active state is
		reentered.  serverPostActive, only present on a server
		snapshot interface, means that the active period has
		expired, but routing information will still be accepted
		from (but not sent to) the associated client router.
		transitionToQuiet, and transitionToActive, only present
		on a client, are temporary states entered after the active
		state, wherein any down to up transition of the interface
		will cause a move to the quiet or active state, respectively.
		limbo is a temporary state for activity blocks that
		are in the process of being created or destroyed."
	::= { ciscoSnapshotActivityEntry 2 }

ciscoSnapshotActivityTimer OBJECT-TYPE
	SYNTAX	    Integer32
	UNITS	    "minutes"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The amount of time remaining in the current state."
	::= { ciscoSnapshotActivityEntry 3 }

ciscoSnapshotExchangeTimer OBJECT-TYPE
	SYNTAX	    Integer32
	UNITS	    "minutes"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The amount of time during the last active state, in
		which protocol exchanges occurred. The minimum time required
		to allow updates to be exchanged for a 'successfull update
		cycle' is the greater of 3 minutes, or 1/2 the active time.
		If the ciscoSnapshotExchangeTimer is less than this, the
		quiet state will use the retry interval to determine when next
		to go active.

		An instance of this object will only be present when
		the associated value of ciscoSnapshotClient is true for this
		interface."

	::= { ciscoSnapshotActivityEntry 4 }

ciscoSnapshotDialerMap OBJECT-TYPE
	SYNTAX	    Integer32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"Index of the dialer map entry associated with this
		snapshot activity record.  A value of 0 indicates
		that no dialer map is associated with this entry.

		An instance of this object will only be present when
		the associated value of ciscoSnapshotDialer is true."
	::= { ciscoSnapshotActivityEntry 5 }

ciscoSnapshotSourceProtocol OBJECT-TYPE
	SYNTAX	    CiscoNetworkProtocol
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The protocol of the host that initiated the snapshot
		routing activity associated with this record.

		An instance of this object will only be present when
		the associated value of ciscoSnapshotClient is false."
	::= { ciscoSnapshotActivityEntry 6 }

ciscoSnapshotSourceAddress OBJECT-TYPE
	SYNTAX	    CiscoNetworkAddress
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The address of the host that initiated the snapshot
		routing activity associated with this record.

		An instance of this object will only be present when
		the associated value of ciscoSnapshotClient is false."
	::= { ciscoSnapshotActivityEntry 7 }

ciscoSnapshotProtocolsExchanged OBJECT-TYPE
	SYNTAX	    OCTET STRING (SIZE (0.. 4))
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"An array of bits that indicates whether or not routing
		information has been exchanged for all protocols.  The
		most significant bit of the first octet represents the
		protocol associated with CiscoNetworkProtocol value of 0;
		the least significant bit of the first octet represents
		the protocol associated with CiscoNetworkProtocol value
		of 7; the most significant bit of the second octet
		represents the protocol associated with the
		CiscoNetworkProtocol value of 8; and so forth.
		Routing information for a given protocol has been exchanged
		if the associated bit is set.

		An instance of this object will only be present when
		the associated value of ciscoSnapshotClient is true."
	::= { ciscoSnapshotActivityEntry 8 }


-- conformance information

ciscoSnapshotMIBConformance	OBJECT IDENTIFIER ::= { ciscoSnapshotMIB 2 }
ciscoSnapshotMIBCompliances	OBJECT IDENTIFIER ::= { ciscoSnapshotMIBConformance 1 }
ciscoSnapshotMIBGroups	OBJECT IDENTIFIER ::= { ciscoSnapshotMIBConformance 2 }


-- compliance statements

ciscoSnapshotMIBCompliance MODULE-COMPLIANCE
	STATUS	current
	DESCRIPTION
		"The compliance statement for entities which implement
		the Cisco Snapshot MIB"
	MODULE	-- this module
		MANDATORY-GROUPS { ciscoSnapshotMIBGroup }
	::= { ciscoSnapshotMIBCompliances 1 }

-- units of conformance

ciscoSnapshotMIBGroup OBJECT-GROUP
	OBJECTS {
		ciscoSnapshotForceActive,

		ciscoSnapshotClient,
		ciscoSnapshotDialer,
		ciscoSnapshotActiveInterval,
		ciscoSnapshotQuietInterval,
		ciscoSnapshotRetryInterval,
		ciscoSnapshotIfUpAction,
		ciscoSnapshotRowStatus,

		ciscoSnapshotActivityState,
		ciscoSnapshotActivityTimer,
		ciscoSnapshotExchangeTimer,
		ciscoSnapshotDialerMap,
		ciscoSnapshotSourceProtocol,
		ciscoSnapshotSourceAddress,
		ciscoSnapshotProtocolsExchanged
	}
	STATUS	current
	DESCRIPTION
		"A collection of objects providing snapshot routing 
		 ability to a Cisco agent."
	::= { ciscoSnapshotMIBGroups 1 }

END


