-- MibName=rcLbDetect
-- *****************************************************************
-- RAISECOM-LBDETECT-MIB.MIB:  Raisecom PPPoEAgent MIB file
-- APR 2009, Huangxiyuan
--
-- Copyright (c) 2009 by Raisecom, Inc.
-- All rights reserved.
--
-- *****************************************************************
-- Modify History  
-- 02, 2011-10-31, yulei, Change rcPortLbDetectVlan's access from
--                        "not-accessible" to "read-only".
-- 01, 2011-05-09, hxy, Change rcPortLbDetectStatus's value list
--                      to compatible with the old version. 
--                      Add "UNITS" to rcLbDetectErrorDeviceLastOccur
--                      and modify it's description.
-- *****************************************************************
RAISECOM-LBDETECT-MIB  DEFINITIONS ::= BEGIN

IMPORTS
        ifIndex        FROM IF-MIB  
        iscomSwitch    FROM RAISECOM-BASE-MIB
       	Vlanset		   FROM SWITCH-TC
       	MacAddress     FROM SNMPv2-TC;


        
	    rcLbDetect MODULE-IDENTITY
        LAST-UPDATED    "200904220000Z"
        ORGANIZATION    "Raisecom, Inc."
        CONTACT-INFO
                "       Raise Systems

                Postal: Beijing, China

                   Tel: 86-010-82884499

                E-mail: support@raisecom.com"
        DESCRIPTION
                "description of rcLbDetect object."  
                REVISION   "201009010000Z"
                DESCRIPTION
                "Add vlan mode of loopback detection."
                ::= { iscomSwitch 50}          

-- 
-- scalar in the MIB
-- 

rcLbDetectPktConfig         OBJECT IDENTIFIER ::={ rcLbDetect 1 }
rcLbDetectTrap              OBJECT IDENTIFIER ::={ rcLbDetect 5 }
  
rcLbDetectDestAddr  OBJECT-TYPE 
        SYNTAX   MacAddress
        ACCESS	 read-write
        STATUS   deprecated
        DESCRIPTION
                 "Destinate mac address of loopbackdetect packet"
        ::= { rcLbDetectPktConfig 1}    
         
rcLbDetectVlan  OBJECT-TYPE 
        SYNTAX   INTEGER(1..4094)
        ACCESS	 read-write
        STATUS   deprecated
        DESCRIPTION
                 "vlan id of loopbackdetect packet"
        ::= { rcLbDetectPktConfig 2}      

rcLbDetectInterval OBJECT-TYPE 
        SYNTAX   INTEGER(1..65535)
        ACCESS	 read-write
        STATUS   current
        DESCRIPTION
                 "Period of loopback detection"
        ::= { rcLbDetectPktConfig 3}

rcLbDetectRestoreTime  OBJECT-TYPE
        SYNTAX   INTEGER(0..65535)
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Restore time for blocking port"
        ::= { rcLbDetectPktConfig 4 } 
rcLbDetectMode OBJECT-TYPE
        SYNTAX    INTEGER{port(1), vlan(2)}  
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Mode choice of loopback detection."   
        DEFVAL { vlan }
        ::= { rcLbDetectPktConfig 5 }  
        
rcLbDetectLogInterval OBJECT-TYPE
        SYNTAX    INTEGER(0..1440)  
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Log send interval."   
        DEFVAL { 0 }
        ::= { rcLbDetectPktConfig 6 }       
                         
-- 
-- table in the mib
-- 

-- rcLbDetectPortTable

rcLbDetectPortTable  OBJECT-TYPE 
        SYNTAX   SEQUENCE OF rcLbDetectPortEntry
        ACCESS	 not-accessible
        STATUS   current
        DESCRIPTION
                 "Port infomation of loopbackdetection"
        ::= { rcLbDetect 2 }
        
rcLbDetectPortEntry  OBJECT-TYPE
        SYNTAX   rcLbDetectPortEntry
        ACCESS   not-accessible
        STATUS   current
        DESCRIPTION
                 "An entry in rcLbDetectPortTable"
        INDEX { ifIndex }
        ::= { rcLbDetectPortTable 1 } 
      
rcLbDetectPortEntry ::= SEQUENCE {
		rcPortLbDetectEnable	       INTEGER,
		rcPortLbDetectLoopAction       INTEGER,
		rcPortLbDetectManualRestore	   INTEGER,
		rcPortLbDetectStatus           INTEGER,
		rcPortLbDetectBlockCount	   INTEGER,
		rcPortLbDetectLastOccur	       INTEGER,
		rcPortLbDetectLastDuration	   INTEGER,  
		rcPortLbDetectLastSrcMac	   MacAddress,
		rcPortLbDetectLastSrcPort	   INTEGER,
		rcPortLbDetectLastVlan  	   INTEGER,
		rcPortLbDetectSendPkts	       INTEGER,
		rcPortLbDetectRecvPkts	       INTEGER,
		rcPortLbDetectStatsClear	   INTEGER
}

rcPortLbDetectEnable  OBJECT-TYPE
        SYNTAX   INTEGER{enable(1), disable(2)}
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Enable or disable loopbackdetection for special port"   
        DEFVAL { disable }
        ::= { rcLbDetectPortEntry 1 }

rcPortLbDetectLoopAction  OBJECT-TYPE
        SYNTAX   INTEGER{discarding(1), trap-only(2)}
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Action when received a packet form other bridge"  
        DEFVAL { trap-only}
        ::= { rcLbDetectPortEntry 2 }

rcPortLbDetectManualRestore  OBJECT-TYPE
        SYNTAX   INTEGER{restore(1)}
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Set the port non-block manualy"
        ::= { rcLbDetectPortEntry 3 }

rcPortLbDetectStatus  OBJECT-TYPE
        SYNTAX   INTEGER{loopyes(1), loopno(2)}
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "The status of this port"
        ::= { rcLbDetectPortEntry 4 }

rcPortLbDetectBlockCount  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "How many times this port was blocked"
        ::= { rcLbDetectPortEntry 5 }

rcPortLbDetectLastOccur  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   deprecated
        DESCRIPTION
                 "The moment of last loop happen"
        ::= { rcLbDetectPortEntry 6 }

rcPortLbDetectLastDuration  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   deprecated
        DESCRIPTION
                 "The duration of last loop"
        ::= { rcLbDetectPortEntry 7 }

rcPortLbDetectLastSrcMac  OBJECT-TYPE
        SYNTAX   MacAddress
        ACCESS   read-only
        STATUS   deprecated
        DESCRIPTION
                 "The source mac address of last loop"
        ::= { rcLbDetectPortEntry 8 }

rcPortLbDetectLastSrcPort  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   deprecated
        DESCRIPTION
                 "The source port of last loop"
        ::= { rcLbDetectPortEntry 9 } 

rcPortLbDetectLastVlan  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   deprecated
        DESCRIPTION
                 "The vlan of last loop"
        ::= { rcLbDetectPortEntry 10 }

rcPortLbDetectSendPkts  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "How many loopbackdetect packets this port send"
        ::= { rcLbDetectPortEntry 11 }

rcPortLbDetectRecvPkts  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "How many loopbackdetect packets this port received"
        ::= { rcLbDetectPortEntry 12 }

rcPortLbDetectStatsClear  OBJECT-TYPE
        SYNTAX   INTEGER{clear(1)}
        ACCESS   read-write
        STATUS   current
        DESCRIPTION
                 "Clear statistic of loopbackdetection packets"
        ::= { rcLbDetectPortEntry 13 }    

         
-- rcLbDetectErrorTable

rcLbDetectErrorDeviceTable  OBJECT-TYPE 
        SYNTAX   SEQUENCE OF rcLbDetectErrorDeviceEntry
        ACCESS	 not-accessible
        STATUS   current
        DESCRIPTION
                 "Error infomation of loopbackdetection"
        ::= { rcLbDetect 3 }
        
rcLbDetectErrorDeviceEntry  OBJECT-TYPE
        SYNTAX   rcLbDetectErrorDeviceEntry
        ACCESS   not-accessible
        STATUS   current
        DESCRIPTION
                 "An entry in rcLbDetectErrorDeviceTable"
        INDEX { ifIndex, rcLbDetectErrorDeviceIndex }
        ::= { rcLbDetectErrorDeviceTable 1 } 
      
rcLbDetectErrorDeviceEntry ::= SEQUENCE {
		rcLbDetectErrorDeviceIndex	      INTEGER,
		rcLbDetectErrorDeviceMac          MacAddress,
		rcLbDetectErrorDevicePeerPort     INTEGER,
		rcLbDetectErrorDeviceCounts	      INTEGER,
		rcLbDetectErrorDeviceLastOccur    INTEGER
		}

rcLbDetectErrorDeviceIndex  OBJECT-TYPE
        SYNTAX   INTEGER(1..5)
        ACCESS   not-accessible
        STATUS   current
        DESCRIPTION
                 "Error number"
        ::= { rcLbDetectErrorDeviceEntry 1 }

rcLbDetectErrorDeviceMac  OBJECT-TYPE
        SYNTAX   MacAddress
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "Mac address of received packet"
        ::= { rcLbDetectErrorDeviceEntry 2 }

rcLbDetectErrorDevicePeerPort  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "Peer port of received packet"
        ::= { rcLbDetectErrorDeviceEntry 3 }

rcLbDetectErrorDeviceCounts  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "How many times this port have receive a loopbackdetect packet from same mac and same port"
        ::= { rcLbDetectErrorDeviceEntry 4 }

rcLbDetectErrorDeviceLastOccur  OBJECT-TYPE
        SYNTAX   INTEGER
        UNITS    "seconds"
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "The time of last error happen since device boot."
        ::= { rcLbDetectErrorDeviceEntry 5 }         
        
-- blockvlanTable
rcPortLbDetectVlanTable  OBJECT-TYPE 
        SYNTAX   SEQUENCE OF rcPortLbDetectVlanEntry
        ACCESS	 not-accessible
        STATUS   current
        DESCRIPTION
                 "blockvlan infomation of loopbackdetection"
        ::= { rcLbDetect 4 } 
        
rcPortLbDetectVlanEntry  OBJECT-TYPE
        SYNTAX   rcPortLbDetectVlanEntry
        ACCESS   not-accessible
        STATUS   current
        DESCRIPTION
                 "An entry in rcPortLbDetectVlanTable"
        INDEX { ifIndex, rcPortLbDetectVlan }
        ::= { rcPortLbDetectVlanTable 1 }   
        
rcPortLbDetectVlanEntry ::= SEQUENCE {  
        rcPortLbDetectVlan            INTEGER,
		rcPortLbDetectVlanSrcMac	  MacAddress,
		rcPortLbDetectVlanSrcPort     INTEGER,
	    rcPortLbDetectVlanDuration    INTEGER
		} 
   
rcPortLbDetectVlan  OBJECT-TYPE
        SYNTAX   INTEGER(0..4094)
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "Block vlan"
        ::= { rcPortLbDetectVlanEntry 1 } 
        		
rcPortLbDetectVlanSrcMac  OBJECT-TYPE
        SYNTAX   MacAddress
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "If some vlan has loopback, this parameter records the source mac address of loopback."
        ::= { rcPortLbDetectVlanEntry 2 }  
        
rcPortLbDetectVlanSrcPort  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "If some vlan has loopback,this parameter records the source port of loopback."
        ::= { rcPortLbDetectVlanEntry 3 } 
          
rcPortLbDetectVlanDuration  OBJECT-TYPE
        SYNTAX   INTEGER
        ACCESS   read-only
        STATUS   current
        DESCRIPTION
                 "If some vlan are is blocked because of loopback, the parameter records duration of block vlan"
        ::= { rcPortLbDetectVlanEntry 4  }		
        
-- traps
rcLbDetectLoopTrap NOTIFICATION-TYPE
        OBJECTS{   
            rcPortLbDetectStatus,    
            rcPortLbDetectVlanSrcMac,
            rcPortLbDetectVlanSrcPort,
            rcPortLbDetectVlan
            }
        STATUS      current
        DESCRIPTION 
        "Port's state change"
        ::= { rcLbDetectTrap 1 }

rcLbDetectErrorDeviceTrap NOTIFICATION-TYPE
        OBJECTS{   
            rcLbDetectErrorDeviceMac,    
            rcLbDetectErrorDevicePeerPort,
            rcLbDetectErrorDeviceCounts
            }
        STATUS      current
        DESCRIPTION 
        "Receive a loopback detection packet"
        ::= { rcLbDetectTrap 2 } 

END