-- ======================================================================================
-- Copyright (C)  2009   by  HUAWEI TECHNOLOGIES. All rights reserved.
--
-- Description:    CDP-COMPLIANCE-MIB
-- Reference:     
-- Version:          1.0
-- History:           
-- ======================================================================================
HUAWEI-CDP-COMPLIANCE-MIB DEFINITIONS ::= BEGIN
IMPORTS
 	TEXTUAL-CONVENTION, TimeStamp, TruthValue
		FROM SNMPv2-TC

    MODULE-IDENTITY, OBJECT-TYPE, Integer32,
    OBJECT-IDENTITY
        FROM SNMPv2-SMI
 
 	TimeFilter, ZeroBasedCounter32
		FROM RMON2-MIB

    InterfaceIndex
        FROM IF-MIB
            
    EnabledStatus
        FROM P-BRIDGE-MIB

    hwDatacomm
        FROM HUAWEI-MIB;
 
    hwCdpComplianceMIB MODULE-IDENTITY
        LAST-UPDATED "200905050000Z"  
        ORGANIZATION 
            "Huawei Technologies co.,Ltd."
        CONTACT-INFO 
            "VRP Team Huawei Technologies co.,Ltd.
            Huawei Bld.,NO.3 Xinxi Rd., 
            Shang-Di Information Industry Base,
            Hai-Dian District Beijing P.R. China
            http://www.huawei.com
        Zip:100085
            "
        DESCRIPTION
            "This file is an file for CDP compliance. It provides such functions of 
           globally enabling or disabling the CDP compliance function, enabling the global
           alarm, querying and clearing statistics on ports."
            ::= { hwDatacomm 198 }  
	
    -- ============================================================================
    -- Node definitions
    -- ============================================================================ 
 
    hwCdpComplianceObjects  OBJECT IDENTIFIER ::= { hwCdpComplianceMIB 1} 

    hwCdpComplianceNotifications OBJECT IDENTIFIER ::= { hwCdpComplianceMIB 2 }  
    
    hwCdpComplianceConformance  OBJECT IDENTIFIER ::= { hwCdpComplianceMIB 3 }
 

  -- ============================================================================
  --
  -- ======================= Objects definitions=================================
  --
  -- ============================================================================  

	hwCdpComplianceConfiguration OBJECT IDENTIFIER ::= { hwCdpComplianceObjects 1 }
	hwCdpComplianceStatistics OBJECT IDENTIFIER ::= { hwCdpComplianceObjects 2 }
	hwCdpComplianceRemoteSystemsData OBJECT IDENTIFIER ::= { hwCdpComplianceObjects 3 }	
	
	--
	-- ***********************************************************
	--
	-- C D P C O MP L I A N C E C O N F I G
	--
	-- ***********************************************************
	--
	hwCdpComplianceEnable OBJECT-TYPE
	SYNTAX EnabledStatus
	MAX-ACCESS read-write
	STATUS current
	DESCRIPTION
		"The administratively desired status of the global CDP compliance function.
		If the associated hwCdpComplianceEnable object has a
		value of 'disable(2)', then the system will discard CDP packets.
		If the associated hwCdpComplianceEnable object has a
		value of 'enable(1)', then the system will counter and keep the latest CDP packets."
	DEFVAL { disable }
	::= { hwCdpComplianceConfiguration 1 }   
		
	hwCdpComplianceNotificationInterval OBJECT-TYPE
	SYNTAX Integer32(1..10)
	UNITS "seconds"
	MAX-ACCESS read-write
	STATUS current
	DESCRIPTION
		"The hwCdpComplianceNotificationInterval indicates the interval (in units of
		seconds) of sending CDP notifications.
		The default value for hwCdpComplianceNotificationInterval object is five seconds.
		The value of this object must be restored from non-volatile
		storage after a re-initialization of the management system."
	DEFVAL { 5 }
	::= { hwCdpComplianceConfiguration 2 } 
	
	--
	-- hwCdpCompliancePortConfigTable: CDP compliance configuration on a per port basis
	--
	hwCdpCompliancePortConfigTable OBJECT-TYPE
	SYNTAX SEQUENCE OF HwCdpCompliancePortConfigEntry
	MAX-ACCESS not-accessible
	STATUS current
	DESCRIPTION
		"The table that controls CDP compliance function setting on individual
		ports."
	::= { hwCdpComplianceConfiguration 3 }  
	
	hwCdpCompliancePortConfigEntry OBJECT-TYPE
	SYNTAX HwCdpCompliancePortConfigEntry
	MAX-ACCESS not-accessible
	STATUS current
	DESCRIPTION
		"CDP compliance configuration information for a particular port.
		This configuration parameter controls transmission and
		the reception of CDP frames on those ports whose rows are
		created in this table."
	INDEX { hwCdpCompliancePortConfigIfIndex }
	::= { hwCdpCompliancePortConfigTable 1 } 
	
	HwCdpCompliancePortConfigEntry ::= SEQUENCE {
    hwCdpCompliancePortConfigIfIndex InterfaceIndex,
	hwCdpCompliancePortConfigAdminStatus INTEGER,       
	hwCdpCompliancePortConfigHoldTime Integer32,       	
	hwCdpCompliancePortConfigNotificationEnable TruthValue,
	hwCdpCompliancePortStatsReset EnabledStatus }   
	
    hwCdpCompliancePortConfigIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The interface index of the configured bridge port, reference RFC2233."
    ::={ hwCdpCompliancePortConfigEntry 1 }
	
	hwCdpCompliancePortConfigAdminStatus OBJECT-TYPE
	SYNTAX INTEGER {
	disabled(1),
	rxOnly(2)
	}
	MAX-ACCESS read-write
	STATUS current
	DESCRIPTION
		"The administratively desired status of the CDP compliance of the port.
		If the associated hwCdpCompliancePortConfigAdminStatus object has a
		value of 'disabled(1)', then port will discard CDP packets received on this port.
		If the associated hwCdpCompliancePortConfigAdminStatus object has a
		value of 'rxOnly(2)', then the port will receive and store the CDP packet,
		but it will not transmit CDP frames on this port."
	DEFVAL { disabled }
	::= { hwCdpCompliancePortConfigEntry 2 }   
	
	hwCdpCompliancePortConfigHoldTime OBJECT-TYPE
	SYNTAX Integer32(10..254)
	UNITS "seconds"
	MAX-ACCESS read-write
	STATUS current
	DESCRIPTION
		"The seconds of holding the recieved CDP packets.
		The received CDP packets wiil be aged if no new CDP packets received after 
		so many seconds. This value should equal to or greater than the TTL value 
		in the received CDP packets."
	DEFVAL { 180 }
	::= { hwCdpCompliancePortConfigEntry 3 } 

	hwCdpCompliancePortConfigNotificationEnable OBJECT-TYPE
	SYNTAX TruthValue
	MAX-ACCESS read-write
	STATUS current
	DESCRIPTION
		"The hwCdpCompliancePortConfigNotificationEnable controls, on a per
		port basis, whether or not notifications from the agent
		are enabled. The value true(1) means that notifications are
		enabled; the value false(2) means that they are not."
	DEFVAL { false }
	::= { hwCdpCompliancePortConfigEntry 4 }
	
   hwCdpCompliancePortStatsReset OBJECT-TYPE
    	SYNTAX EnabledStatus
    	MAX-ACCESS read-write
    	STATUS current
   		DESCRIPTION 
   			"Clears the statistics of packets received on the current port."     
   		::= {hwCdpCompliancePortConfigEntry 5}
	
	
	--
	-- ***********************************************************
	--
	-- hwCdpComplianceStatistics
	--
	-- ***********************************************************
	--
	-- CDP Stats Group   
	
	hwCdpComplianceStatsRemTablesLastChangeTime OBJECT-TYPE
	SYNTAX TimeStamp
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
		"The value of sysUpTime object (defined in IETF RFC 3418)
		at the time an entry is created, modified, or deleted in the
		in tables associated with the hwCdpComplianceRemoteSystemData 
		objects associated with remote systems.
		An NMS can use this object to reduce polling of the
		hwCdpComplianceRemoteSystemData objects."
	::= { hwCdpComplianceStatistics 1 } 
		
	hwCdpComplianceStatsRemTablesAgeouts OBJECT-TYPE
	SYNTAX ZeroBasedCounter32
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
		"The number of times the complete set of information
		advertised by a particular MSAP has been deleted from tables
		contained in hwCdpComplianceRemoteSystemsData 
		because the information timeliness interval has expired.
		This counter should be incremented only once when the complete
		set of information is completely invalidated (aged out)
		from all related tables. Partial aging, similar to deletion
		case, is not allowed, and thus, should not change the value
		of this counter."
	::= { hwCdpComplianceStatistics 2 } 
	

	--
	-- RX statistics
	--
	hwCdpComplianceStatsRxPortTable OBJECT-TYPE
	SYNTAX SEQUENCE OF HwCdpComplianceStatsRxPortEntry
	MAX-ACCESS not-accessible
	STATUS current
	DESCRIPTION
		"A table containing CDP reception statistics for individual
		ports. Entries are not required to exist in this table while
		the hwCdpCompliancePortConfigEntry object is equal to 'disabled(1)'."
	::= { hwCdpComplianceStatistics 3 }    
	
	hwCdpComplianceStatsRxPortEntry OBJECT-TYPE
	SYNTAX HwCdpComplianceStatsRxPortEntry
	MAX-ACCESS not-accessible
	STATUS current
	DESCRIPTION
		"CDP frame reception statistics for a particular port.
		All counter values in a particular entry shall be
		maintained on a continuing basis and shall not be deleted
		until ageed out.
		All statistical counters associated with a particular
		port on the port become frozen whenever the
		adminStatus is disabled for the same port."
	INDEX { hwCdpComplianceStatsRxPortIfIndex }
	::= { hwCdpComplianceStatsRxPortTable 1 } 
	
	HwCdpComplianceStatsRxPortEntry ::= SEQUENCE { 
	hwCdpComplianceStatsRxPortIfIndex InterfaceIndex,
	hwCdpComplianceStatsRxPortFramesTotal Counter32,
	hwCdpComplianceStatsRxPortAgeoutsTotal Counter32
	}          

    hwCdpComplianceStatsRxPortIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The interface index of the bridge port receiving CDP packets, reference RFC2233."
    ::={ hwCdpComplianceStatsRxPortEntry 1 }
		
	hwCdpComplianceStatsRxPortFramesTotal OBJECT-TYPE
	SYNTAX Counter32
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
		"The number of valid CDP frames received on the indicated port,
		 while this CDP compliance function is enabled."
	::= { hwCdpComplianceStatsRxPortEntry 2 }   
		
	hwCdpComplianceStatsRxPortAgeoutsTotal OBJECT-TYPE
	SYNTAX Counter32
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
		"The counter that represents the number of age-outs that
		occurred on a given port. An age-out is the number of
		times the complete set of information advertised by a
		particular MSAP has been deleted from tables contained in
		hwCdpComplianceRemoteSystemsData because
		the information timeliness interval has expired.
		This counter is similar to hwCdpComplianceStatsRemTablesAgeouts, 
		exceptthat the counter is on a per port basis. This enables NMS to
		poll tables associated with the hwCdpComplianceRemoteSystemsData objects
		associated with remote systems on the indicated port only.
		This counter should be set to zero during agent initialization
		and its value should not be saved in non-volatile storage.
		When a port's admin status changes from 'disabled' to
		'rxOnly', the counter associated with
		the same port should reset to 0. The agent should also flush
		all remote system information associated with the same port.
		This counter should be incremented only once when the
		complete set of information is invalidated (aged out) from
		all related tables on a particular port. "
	::= { hwCdpComplianceStatsRxPortEntry 3 }   
	
	
	-- ***********************************************************
	--
	-- R E M O T E S Y S T E M S D A T A
	--
	-- ***********************************************************
	hwCdpComplianceRemoteTable OBJECT-TYPE
	SYNTAX SEQUENCE OF HwCdpComplianceRemoteEntry
	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 hwCdpComplianceRemoteEntry is present for each local port,
		or it may choose to maintain multiple hwCdpComplianceRemoteEntry for
		the same local port.
		The following procedure may be used to retrieve remote
		systems information updates from an CDP compliance agent:
		1. NMS polls all tables associated with remote systems
		and keeps a local copy of the information retrieved.
		2. CDP compliance agent updates remote systems MIB objects, and
		sends out notifications to a list of notification destinations.
		3. NMS receives the notifications and compares the new
		values of objects listed in step 1.
		Periodically, NMS should poll the object
		hwCdpStatsRemTablesLastChangeTime to find out if anything
		has changed since the last poll. if something has
		changed, NMS will poll the objects listed in step 1 to
		figure out what kind of changes occurred in the tables.
		if value of hwCdpComplianceStatsRemTablesInserts has changed,
		then NMS will walk all tables by employing TimeFilter
		with the last-polled time value. This request will
		return new objects or objects whose values are updated
		since the last poll.
		if value of hwCdpComplianceStatsRemTablesAgeouts has changed,
		then NMS will walk the hwCdpComplianceStatsRxPortAgeoutsTotal and
		compare the new values with previously recorded ones.
		For ports whose hwCdpComplianceStatsRxPortAgeoutsTotal value is
		greater than the recorded value, NMS will have to
		retrieve objects associated with those ports from
		table(s) without employing a TimeFilter (which is
		performed by specifying 0 for the TimeFilter.)
		hwCdpComplianceStatsRemTablesDeletes and hwCdpComplianceStatsRemTablesDrops
		objects are provided for informational purposes."
	::= { hwCdpComplianceRemoteSystemsData 1 }  
	
	hwCdpComplianceRemoteEntry OBJECT-TYPE
	SYNTAX HwCdpComplianceRemoteEntry
	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 {  
	hwCdpComplianceRemLocalPortIfIndex
		}
	::= { hwCdpComplianceRemoteTable 1 }    
	
	HwCdpComplianceRemoteEntry ::= SEQUENCE { 
	hwCdpComplianceRemLocalPortIfIndex InterfaceIndex,  
    hwCdpComplianceRemTimeMark TimeFilter,  
	hwCdpComplianceRemoteInfo OCTET STRING
	}             
      
    hwCdpComplianceRemLocalPortIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The interface index of the local bridge port receving CDP packets, reference RFC2233."
    ::={ hwCdpComplianceRemoteEntry 1 }

    hwCdpComplianceRemTimeMark OBJECT-TYPE
	SYNTAX TimeFilter
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
		"A time filter for this entry. See the time filter textual
		convention in IETF RFC 2021 and
		http://www.ietf.org/IESG/Implementations/RFC2021-Implementation.txt
		to see how time filter works."
	REFERENCE
		"IETF RFC 2021 section 6"
	::= { hwCdpComplianceRemoteEntry 2 }   
     
    hwCdpComplianceRemoteInfo  OBJECT-TYPE 
    SYNTAX  OCTET STRING (SIZE(0..1600))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION 
        " The latest CDP packet recieved oon the port."
    ::= { hwCdpComplianceRemoteEntry 3 }
	
	
	--
	-- ***********************************************************
	--
	-- C D P C O M P L I A N C E M I B N O T I F I C A T I O N S
	--
	-- ***********************************************************
	--
	hwCdpComplianceNotificationPrefix OBJECT IDENTIFIER ::= { hwCdpComplianceNotifications 1 }
	hwCdpComplianceRemTablesChange NOTIFICATION-TYPE
	OBJECTS {
	hwCdpComplianceStatsRemTablesLastChangeTime,
	hwCdpComplianceStatsRemTablesAgeouts
	}
	STATUS current
	DESCRIPTION
		"A hwCdpComplianceRemTablesChange notification is sent when the value
		of hwCdpComplianceStatsRemTableLastChangeTime changes. It can be
		utilized by an NMS to trigger LLDP remote systems table
		maintenance polls.
		Note that transmission of hwCdpComplianceRemTablesChange
		notifications are throttled by the agent, as specified by the
		'hwCdpComplianceNotificationInterval' object."
	::= { hwCdpComplianceNotificationPrefix 1 }   
	
	--
	-- ***********************************************************
	--
	-- H U A W E I C  D P C O M P L I A N C E M I B C O N F O R M A N C E
	--
	-- ***********************************************************
	--
     
    hwCdpComplianceCompliances OBJECT IDENTIFIER ::= { hwCdpComplianceConformance 1 }
	hwCdpComplianceGroups OBJECT IDENTIFIER ::= { hwCdpComplianceConformance 2 }
	-- compliance statements
	hwCdpComplianceCompliance MODULE-COMPLIANCE
	STATUS current
	DESCRIPTION
		"The compliance statement for SNMP entities which implement
		the HUAWEI-CDP-COMPLIANCE-MIB."
	MODULE -- this module
	MANDATORY-GROUPS { 
	hwCdpComplianceConfigGroup,
	hwCdpComplianceStatsGroup,
	hwCdpComplianceRemSysGroup
	-- hwCdpComplianceNotificationsGroup
	}
	::= { hwCdpComplianceCompliances 1 }    
	   
	-- MIB groupings
	hwCdpComplianceConfigGroup OBJECT-GROUP
	OBJECTS {  
	hwCdpComplianceEnable,
	hwCdpComplianceNotificationInterval,
	hwCdpCompliancePortConfigAdminStatus,
	hwCdpCompliancePortConfigHoldTime,
	hwCdpCompliancePortConfigNotificationEnable
	}
	STATUS current
	DESCRIPTION
		"The collection of objects which are used to configure the
		CDP compliance implementation behavior.
		This group is mandatory for agents which implement the Huawei CDP compliance."
	::= { hwCdpComplianceGroups 1 }     
	
	hwCdpComplianceStatsGroup OBJECT-GROUP
	OBJECTS {  
	hwCdpComplianceStatsRxPortFramesTotal,
	hwCdpCompliancePortStatsReset,
	hwCdpComplianceStatsRemTablesLastChangeTime,
	hwCdpComplianceStatsRemTablesAgeouts,
	hwCdpComplianceStatsRxPortAgeoutsTotal
	}
	STATUS current
	DESCRIPTION
		"The collection of objects which are used to represent LLDP
		 statistics.
		This group is mandatory for agents which implement the LLDP
		and have the capability of receiving and transmitting LLDP frames."
	::= { hwCdpComplianceGroups 2 } 
     
    
    hwCdpComplianceRemSysGroup OBJECT-GROUP
	OBJECTS {  
	hwCdpComplianceRemoteInfo,
	hwCdpComplianceRemTimeMark
	}
	STATUS current
	DESCRIPTION
		"The CDP packet received on the port."
	::= { hwCdpComplianceGroups 3 } 


   hwCdpComplianceTrapGroup NOTIFICATION-GROUP
	NOTIFICATIONS {  
	hwCdpComplianceRemTablesChange	
	}
	STATUS current
	DESCRIPTION
		"The collection of notifications used to indicate HUAWEI-CDP-COMPLIANCE-MIB
		data consistency and general status information.
		This group is mandatory for agents which implement the huawei CDP compliance
		and have the capability of receiving CDP frames."
	::= { hwCdpComplianceGroups 4 }  

END