-- *****************************************************************
-- CISCO-BERT-MIB
--
-- Bit Error Rate Test (BERT) MIB for DS3, DS1/E1, DS0 interfaces
--
-- April 2000, Zaryab Munir
--
-- Copyright (c) 2000, 2003 by Cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-BERT-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Counter32,
    Counter64,
    Integer32
    			FROM SNMPv2-SMI
    TEXTUAL-CONVENTION,
    DateAndTime,
    RowStatus       
			FROM SNMPv2-TC

    MODULE-COMPLIANCE,
    OBJECT-GROUP        FROM SNMPv2-CONF
    ifIndex     	FROM IF-MIB
    ciscoMgmt           FROM CISCO-SMI;

ciscoBertMIB MODULE-IDENTITY
    LAST-UPDATED   "200205050000Z"
    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-wanatm@cisco.com"

    DESCRIPTION
       "The MIB module to configure and perform Bit Error Rate Testing
	(BERT) on DS3, DS1/E1 and DS0/DS0Bundle interfaces.
	Bit error rate testing and loopbacks are used by carriers
	and ISPs to aid in problem resolution as well as for
        testing the quality of T1/E1 or T3/E3 links.  Tests can
	be run on a full T1/E1 line or can be run on a fractional
	T1/E1 such as single DS0 or a group of DS0s.  By using BERT,
	poor quality links could be detected early.
	BERT enables the user to test the quality of links by directly
	comparing a pseudo-random or repetitive test pattern with
	an identical locally generated test pattern. 

	Terminology:

	BERT: Bit Error Rate Testing (BERT) involves generating a known
	data sequence into a transmission device and examining the
	received sequence at the same device or a remote device
	for errors.

	The use of BERT results in the computation of a bit error rate
	(BER), which is
			
			bits received in error
		BER = ------------------------
			number of bits transmitted

	To perform a bit error rate test using one tester, 
	communications equipment must be placed into a loop-back
	mode of operation and the BERT test can then be used to 
	determine if equipment is operating correctly.

	When running a BERT, system expects to receive the same pattern
	that is transmitting.  To help ensure this, two common options
	are available.
	
        - Use loopback somewhere in the link or network.  This can
          be accomplished by putting the line in loop up mode;
          send the pattern; find the BER.

	- configure remote testing equipment to transmit the Same BERT
	  pattern at the same time.
 
	Typical Sequence in Performing Bit Error Rate Test by the 
	device is given below:

	- Loop Up:
        The tester issues special code to force the far end (CPE) into 
	loopback.  Upon recognition of the loop activation request code
	the CPE enters a loop mode in which it returns the port data
	back to the tester.

        - Send Pattern:
        After a loop has been established, the tester can generate 
	test pattern toward the CPE and monitor the incoming data.
	   
	- Loop Down:
        The tester issues a special code (loop down command) to 
	release the far end from the loopback.

        Terminology Used:
	CPE - Customer's premise equipment.  At CPE, following equipment
	is required:
	DSU
	CSU
	Usually DSU and CSU functions are incorporated by vendors
	into a single CSU/DSU unit.
	OCU - Office Channel Unit
        CSU - Channel Service Unit
	A CSU contains the last signal regenerator on the line 
	before DTE and mechanism to put the line into loopback
	for testing from the central office.
        DSU - Data Service Unit. "

    REVISION       "200205050000Z"
    DESCRIPTION
       "Add new object cbDs0BitMap to cbConfTable."

    REVISION       "200109090000Z"
    DESCRIPTION
       "Add new enum smartJackInband(18) for object cbLoopbackCode"

    REVISION       "200012080000Z"
    DESCRIPTION
       "Initial version of this MIB module"
    ::= { ciscoMgmt 185 }
 
-- Textual Convention
BertPatterns ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION 
       "The patterns that can be configured to perform BER Test 
	on an interface.
	Bit error measurements are widely used to assess the 
	performance of a digital transmission equipment.  Precise 
	error measurement requires that the bit pattern transmitted 
	is known before hand.  During BER testing a known pattern is 
	transmitted on a interface.  The pattern received on the 
	receive side is checked for bit errors.  In order to measure 
	the performance of digital line under real condition 
	this patterns should also simulate real traffic as closely 
	as possible.  There are two categories of test patterns that 
	can be generated by a BERT equipment: repetitive and 
	pseudo-random.  The former test patterns are zeroes or ones 
	or alternating zeroes and ones; the latter patterns are 
	exponential numbers and conform to CCITT/ITU O.151, O.153.

	There are different patterns for different interface speeds.
	This object allows the user to configure this BERT patterns.

	The supported values are :

	  Repetitive Patterns

	allZeros(1): All Zeroes(Continuous spaces).  This is 
		repeating pattern of zeros(...000...). 
		The use of this pattern is to test and verify 
		that the ones density policing mechanism is 
		functioning properly.  This pattern must be 
		used in circuits optioned for B8ZS.

	allOnes(2): All Ones(Continuous Marks).  This is repeating
		pattern of ones(...1111...).  This provides 
		testing of maximum power level requirements.
		The all one pattern test causes the repeater 
		to consume the maximum amount of power. 
		If there is insufficient DC span power then the
		repeater may begin to fail.
		Typically this pattern is used for a simple
		continuity check.  It may also be used to detect
		the presence of unwanted loop in the network.

	altOneZero(3): Alternate one/zero pattern(..1010..).  This
		pattern produces a 50% ones density.  It is
		used to stress the repeater's DC power
		consumption.

	doubleAltOnesZeros(4): Double alternate one/zero(..1100..).

	oneIn4(5): This pattern is standard loop up remote code.
		Typically it is used when the loop up remote test 
		fails to place the remote system into loopback.

	oneIn8(6): This is an eight bit pattern which contains
		single one.
                This pattern is used primarily to test timing(clock)
		recovery and may be used framed or unframed for that
		purpose.
		This pattern is used to verify frame synchronization
		by providing the minimum acceptable pulse density.

	oneIn16(7): N repetitive pattern, 1 in 16.

	threeIn24(8): This is a 24 bit pattern which contains 3 ones. 
	  	The largest string of consecutive zeros is fifteen.
		This pattern is used primarily to test timing(clock)
		recovery and may be used framed or unframed for that
		purpose.  This pattern covers both the minimum ones
		density and the maximum number of consecutive zeros.

	inbandLoopup(9): D4/SF Loopback activate.
		Valid only for T1 line.

	inbandLoopdown(10): D4/SF Loopback deactivate.
		Valid only for T1 line.

	Pseudo-Random Patterns
	
	twoE3MinusOne(11): This is 2^3-1 (7 bits in length) pattern.

	twoE4MinusOne(12): This is 2^4-1 (15 bits in length) pattern.

	twoE5MinusOne(13): This is 2^5-1 (31 bits in length) pattern.

	twoE6MinusOne(14): This is 2^6-1 (63 bits in length) pattern.

	twoE7MinusOne(15): This is 2^7-1 (127 bits in length) pattern.

	twoE7MinusOneFT1Loopup(16): 2^7-1 Fractional
		T1 Loop Back Activate.

	twoE7MinusOneFT1Loopdown(17): 2^7-1 Fractional 
		T1 Loop Back Deactivate.

	twoE9MinusOne(18): This is 2^9-1(511 bits in length)
		pattern specified in ITU O.153.
		It has the maximum of 8(non-inverted)
		sequential zeros and 9 sequential ones.

	twoE10MinusOne(19): This is the 2^10-1(1023 bits in length).

	twoE11MinusOne(20): This is the 2^11-1(2047 bits in length)
		pattern specified in ITU O.152, O.153.
		It has a maximum of 10(non-inverted) 
		sequential zeros and 11 sequential ones.
		This pattern is primarily intended for
		error measurements at bit rates of 64kbit/s
		and N*64 kbit/s.

	twoE15MinusOne(21): This is the 2^15-1(32767 bit length)
		pattern as specified in ITU O.151.
		It has the maximum of 15(inverted) 
		sequential zeros.
		This sequence is primarily intended for
		error and jitter measurements at bit
		rates of 1544, 2048, 6312, 8448, 32064 and 
		44736 kbit/s.

	twoE17MinusOne(22): This the 2^17-1(131071 bits in length).

	twoE18MinusOne(23): This the 2^18-1(262144 bits in length).

	twoE20MinusOne(24): This the 2^20-1(1048575 bits in length)
		pattern specified in ITU O.153.It has
		the maximum of 19(non-inverted) sequential
		zeros.  This pattern is primarily intended 
		for error measurements at bit rates up to 
		73kbit/s.  This pattern stresses the 
		equalization and timing recovery circuitry 
		of line repeaters.

	twoE20MinusOneQRSS(25): This is the 2^20-1(1048575 bits)
		pattern specified in ITU O.151.
		This is the pattern with Zero
		suppression(Quasi Random Signal Source
		This provides the simulation of
		live data.
		This is primarily intended for
		error and jitter measurements
		at bit rates of 34368, 139264 kbit/s.

	twoE21MinusOne(26): This is the 2^21-1(2097151 bit length).
	
	twoE22MinusOne(27): This is the 2^22-1(4194303 bit length).

	twoE23MinusOne(28): This is the 2^23-1(8388607 bit length)
		pattern specified in ITU O.151.
		Highest stress pseudo-random pattern, with 
		a maximum of 23 (inverted) sequential zeros 
		and 23 sequential ones.
		This sequence is primarily intended for
		error and jitter measurements at bit rates
		of 34368 and 139264 kbit/s.

	twoE25MinusOne(29): This is the 2^21-1 (33554431 bit length).

	twoE28MinusOne(30): This is the 2^28-1 (268435455 bit length).

	twoE29MinusOne(31): Highest stress pseudo random pattern, 
		with a maximum of 29 (inverted) sequential 
		zeros Specified in ITU 0.150.

	twoE31MinusOne(32): It has maximum 31 sequential zeros.

	DDS is a special service for transmitting 
	data in a DS-1 frame.

	dds1pattern(33): This sends 100 bytes of all 1s and 
		then 100 bytes of all 0s to test the stress 
		clocking of the network.

	dds2pattern(34): This sends 100 bytes of a 0x7e pattern 
		and then 100 bytes of all 0s.  This pattern simulates 
		bit oriented protocol flags for DDS testing.

	dds3pattern(35): This pattern sends continuous 
		bytes of a 0x46 pattern.  It is used to simulate 
		a typical DDS signal.

	dds4pattern(36): This pattern sends continuous bytes
		of a 0x02 pattern.  It is used to stress DDS 
		clock recovery.

	dds5pattern(37): This pattern sends continuous bytes 
		of a 0x02 pattern.
		It is used to stress DDS clock recovery.	

	userPattern(38): This is any user defined pattern. "
    REFERENCE 
        "CCITT/ITU O.150, O.151, O.152, O.153, O.161 Standards."
    SYNTAX INTEGER {
		allZeros(1),
		allOnes(2),
		altOneZero(3),
		doubleAltOnesZeros(4),
		oneIn4(5),
		oneIn8(6),
		oneIn16(7),
		threeIn24(8),
		inbandLoopBackActivate(9),
		inbandLoopBackDeactivate(10),
	        twoE3MinusOne(11),
	        twoE4MinusOne(12),
	        twoE5MinusOne(13),
	        twoE6MinusOne(14),
	        twoE7MinusOne(15),
	        twoE7MinusOneFT1Loopup(16),
	        twoE7MinusOneFT1Loopdown(17),
	        twoE9MinusOne(18),
	        twoE10MinusOne(19),
	        twoE11MinusOne(20),
	        twoE15MinusOne(21),
	        twoE17MinusOne(22),
	        twoE18MinusOne(23),
	        twoE20MinusOne(24),
	        twoE20MinusOneQRSS(25),
	        twoE21MinusOne(26),
	        twoE22MinusOne(27),
	        twoE23MinusOne(28),
	        twoE25MinusOne(29),
	        twoE28MinusOne(30),
	        twoE29MinusOne(31),
	        twoE31MinusOne(32),
		dds1pattern (33),
		dds2pattern (34),
		dds3pattern (35),
		dds4pattern (36),
		dds5pattern (37),
		userPattern(38)
	}

ciscoBertMIBObjects  OBJECT IDENTIFIER ::= { ciscoBertMIB 1 }

ciscoBertConfig    OBJECT IDENTIFIER ::= { ciscoBertMIBObjects 1 }

cbConfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CbConfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
       "This table contains configuration, control and status parameters 
        for performing Bit Error Rate Test (BERT) on an interface. 
        When cbRowStatus is 'active', ifOperStatus will be set to 'testing'."
    ::= { ciscoBertConfig 1 }

cbConfEntry OBJECT-TYPE
    SYNTAX     CbConfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
       "An entry in the BERT configuration table. 
	An entry is created for each interface running BERT by NMS.
	The ifIndex refers to a unique value of an interface 
	in the ifTable on which BERT is being run.
	The BERT is started or stopped as by-product of creating 
	and deleting entries in the cbConfTable."
    INDEX  { ifIndex }
    ::= { cbConfTable 1 }
 
CbConfEntry ::=
    SEQUENCE {
        cbTestPattern	       BertPatterns,
	cbUserPattern	       OCTET STRING,
        cbBertTxPatternInv     INTEGER,
        cbBertRxPatternInv     INTEGER,
	cbLoopback   	       INTEGER,
	cbLoopbackCode         INTEGER,
        cbSingleBitErrorInsert INTEGER,
	cbErrorInsertionRate   INTEGER,
	cbDuration	       Integer32,
	cbOperStatus           INTEGER,
        cbFailedReason         INTEGER,
        cbStartDateAndTime     DateAndTime,
        cbDS0DPCodeIteration   Integer32,
	cbRowStatus	       RowStatus,
        cbDs0BitMap            BITS
    }

cbTestPattern OBJECT-TYPE
    SYNTAX     BertPatterns
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
       "The BERT pattern to be sent and expected to be received.
        An implementation may choose to support only selected patterns.
        In some implementations, this object can not be modified when 
        the BERT is running, i.e cbRowStatus is active(1)."
    ::= { cbConfEntry 1 }

cbUserPattern OBJECT-TYPE
    SYNTAX     OCTET STRING (SIZE(1..4))
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
       "The object used for configuring the user defined pattern
        for BERT.  This is the fixed repeating BERT pattern sent
        and expected to be received when the cbTestPattern object is
        set to 'userPattern'.  The maximum length of this pattern
        is 32 bits.  Depending on the hardware, the patterns are 
        transmitted with least significant first or most 
        significant bit, until pattern length is reached.

        This object can not be modified when the BERT is running,
        i.e cbRowStatus is active(1)."
    ::= { cbConfEntry 2 }

cbBertTxPatternInv OBJECT-TYPE
    SYNTAX INTEGER {
	    notInverted(1),
	    inverted(2)
    }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
       "This controls inversion of the transmit BERT pattern.
	Possible values are :

	notInverted(1): Pattern is transmitted normally.
 	inverted(2):  Each Mark is replaced by Space and 
		vice versa.

	For predefined BERT patterns, the value for this Object
        may not be modified.  An implementation may choose to 
	ignore the value of this object, for BERT patterns other 
	than 'userPattern'.  When the value is ignored, the
	object contains the value chosen by the underlying hardware.

	This object can not be modified when the BERT is running
	i.e cbRowStatus is active(1)."
    DEFVAL { notInverted }
    ::= { cbConfEntry 3 }


cbBertRxPatternInv OBJECT-TYPE
    SYNTAX     INTEGER {
            notInverted(1),
            inverted(2)
    }  
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
       "This controls inversion of the received BERT pattern.
        Possible values are :

	notInverted(1) : Pattern received is not inverted.
	inverted(2)    : each Mark is replaced by Space and 
		vice versa.

	When set to inverted(1), the received data is inverted
	before being processed by the pattern detector.
	For predefined BERT patterns, the value for this object
        may not be modified.  An implementation may choose to 
	ignore the value of this object, for BERT patterns other 
	than 'userPattern'.  When the value is ignored, the
	object contains the value chosen by the underlying 
	hardware.

	This object can not be modified when the BERT is running
	i.e cbRowStatus is active(1)."
    DEFVAL { notInverted }
    ::= { cbConfEntry 4 }

cbLoopback OBJECT-TYPE
    SYNTAX  INTEGER {
            farEndLineLoopback(1),
            remoteLineLoopback(2),
            localLoopback(3),
            farEndPayloadLoopback(4),
            remotePayloadLoopback(5),
	    noLoopback(6)
        }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "This object specifies the type of loopback established.
	Possible values are:

	farEndLineLoopback(1): This loopback occurs at the CPE upon
		receiving a special code from the
		device which initiates the loopback.
		Upon receiving the loop activation request
		code, the CPE enters a Line loop mode in which it
		returns the entire line back to the initiator.
		The CPE will continue to return the data
		back to the initiator until it receives
		loopback deactivation request code.	

	remoteLineLoopback(3): This loopback is established 
		at the Near-end.
		In this loopback the entire line is looped back to the
		Far-end with a) bit-sequence integrity maintained,
		b) no change in framing, and c) no removal of bi-
		polar violations.        

	localLoopback(3): This is also known as metallic loopback.
		This loopback is used for checking the
		internal circuitry of the T3/E3, T1/E1 device.
		Only for physical lines.

	farEndPayloadLoopback(4): This loopback occurs at the
		CPE upon receiving a special code from the
		device which initiates the loopback.
		Upon receiving the loop activation request
		code, CPE enters a Payload loop mode in which it
		returns the Payload of the received data back
		to the initiator.
		The CPE will continue to return the data
		back to the initiator until it receives
		loopback deactivation request code.

	remotePayloadLoopback(5): This loopback is established 
		at the Near-end.
		In this loopback the signal that is returned to the
		Far-end consists of the payload of the received signal
		(with bit sequence integrity retained) and newly
		generated framing information.

	noLoopback(6):   There is no loopback established
		on the device.  "
    ::= { cbConfEntry 5 }

cbLoopbackCode OBJECT-TYPE
    SYNTAX  INTEGER {
            nonLatchOCUwith1(1),
            nonLatchOCUwithout1(2),
            nonLatchCSU(3),
            nonLatchDSU(4),
            latchDS0Drop(5),
            latchDS0Line(6),
            latchOCU(7),
            latchCSU(8),
            latchDSU(9),
            latchHL96(10),
            v54PN127Polynomial(11),
            lineInband(12),
            lineLoopbackESF(13),
            localLoopback(14),
            noLoopbackCode(15),
            payloadLoopbackESF(16),
            lineLoopbackFEAC(17),
            smartJackInband(18)
    }
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION
       "This object specifies the type of the end device and
        the type of loopback code used.

        Latching Loopback: Latching Loopback is appropriate with
        64 kbit/s DS0-A rate.  Once invoked by a specific activation
        sequence, it typically remains in effect until released by
        another specific code sequence.

	non-latching loopback:  Non latching activation involves
        continuous transmission of loopback command codes, followed
        by test data interspersed with command codes.
        The possible values are:
	Note: The values 1 to 14 are for farEndLoopback.
	cbLoopback object is farEndLoopback(1) when these values are 
	selected.

	nonLatchOCUwithOneDevice(1): Non-latching OCU with one device.

	nonLatchOCUwithChainDevices(2): Non-latching OCU with chain
		of devices.

	nonLatchCSU(3)                 : Non-latching CSU.

	nonLatchDSU(4)                 : Non-latching DSU.

	latchDS0Drop(5)                : Latching DS0-DP Drop device.

	latchDS0Line(6)                : Latching DS0-DP line device.

	latchOCU(7)                    : Latching OCU.

	latchCSU(8)                    : Latching CSU.

	latchDSU(9)                    : Latching DSU.

	latchHL96(10)                  : Latching HL96 device.

	v54PN127Polynomial(11)         : For fractional T1.
		This loopback is based on
		CCITT-ITU V.54 and is being
		used to place either a single
		DS0 or a DS0 Bundle(N*DS0) in
		loopback mode.

	lineInband(12)                  : This is used for loopback the
		entire T1 line at the far end.
		This is a repeating 5-bit
		pattern(00001).

	lineLoopbackESF(13): This loopback result in a full
		1.544Mbit/s loopback of the
		incoming signal at the far end.
		The loopback is activated (latched) and
		deactivated by a bit sequence defined in
		ANSI T1.403 - 1995.
		This corresponds to Facility Data Link
		(FDL)loopbacks on a T1 channel.
		This causes a repeating,16-bit ESF data
		link code word(00001110 11111111) to
		the remote end requesting that it
		enter into a network line loopback.

	localLoopback(14): This is for loop back at the 
		near end (facility end).
		This is used to test the internals of the
		device, the interface loops back the 
		outbound traffic from SRM to SM, back to 
		the SRM, hence testing the internal device
		connectivity.

	noLoopbackCode(15): This is for situations, where 
		no loopback is needed for bert tests. 
		One example is manual loop back at near or
                far end.

	payloadLoopbackESF(16): This loopback results 
		in 1.536 Mbit/s loopback of the payload
		of the incoming signal at the far end.
		The loopback is activated (latched) and 
		deactivated by a bit sequence defined in
		ANSI T1.403 - 1995.
		This corresponds to Facility Data Link
		(FDL)loopbacks on a T1 channel.
		This causes a repeating, 16-bit ESF data
		link code word(00010100 11111111) to
		the remote end requesting that it
		enter into a network payload loopback.

	lineLoopbackFEAC(17): Use the FEAC channel to 
		establish a line loopback. 

        smartJackInband(18): Inband loop code for SmartJack (a Telco owned 
                device that represents the demarcation point of T1 service),
                Ref: TR-TSY-000312." 
        ::= { cbConfEntry 6 }


cbSingleBitErrorInsert OBJECT-TYPE
    SYNTAX INTEGER {
	noError(1),
	insertError(2)
    }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION 
       "This object is used for inserting single bit error in the 
	transmitted BERT pattern.
	
	The possible values are:

	noError(1)      : do not insert single bit errors

	insertError(2)  : insert single bit errors. "
	DEFVAL { noError }
        ::= { cbConfEntry 7 }

cbErrorInsertionRate OBJECT-TYPE
   SYNTAX INTEGER {
	noError(1),
	oneInTen(2),
	oneInHundred(3),
	oneInThousand(4),
	oneInTenThousand(5),
	oneInHundredThousand(6),
	oneInMillion(7),
	oneInTenMillion(8)
    	}

    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION 
       "This object is used for injecting continuous errors into 
	transmitted BERT pattern.  The errors are inserted in a BERT 
        pattern sent, in order to do sanity check on receive interface 
        in the event that no bit errors are detected.  Injecting errors 
        allows users to stress communication links and to check the 
	functionality of error monitoring equipment along the path.
        Once set to send continuous errors, errors will be inserted 
        at the configured rate until set to noError(1). 
      
        The possible values are :
	
	noError(1)	: no bit errors are inserted.

	oneInTen(2)	: insert bit errors at the rate of 1 bit
		error per 10 bits (10^-1) transmitted.

	oneInHundred(3)	: insert bit errors at the rate of 1 bit
		error per 100 bits (10^-2) transmitted.

	oneInThousand(4): insert bit errors at the rate of 1 bit
		error per 1000 bits (10^-3) transmitted.

	oneIn10Thousand(5): insert bit errors at the rate of 1 bit
		error per 10000 (10^-4) bits transmitted.

	oneInHundredThousand(6): insert bit errors at the rate of 1 bit
		error per 100000 bits (10^-5) transmitted.

	oneInMillion(7): insert bit errors at the rate of 1 bit
		error per 1000000 bits (10^-6) transmitted.

	oneInTenMillion(8): insert bit errors at the rate of 1 bit
		error per 10,000,000 (10^-7)bits transmitted. "
	DEFVAL { noError }
        ::= { cbConfEntry 8 }

cbDuration OBJECT-TYPE
    SYNTAX     Integer32 (1..86400)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
       "This object specifies the duration for which BERT is
	to be run. "
    ::= { cbConfEntry 9 }

cbOperStatus OBJECT-TYPE
    SYNTAX INTEGER {
        success(1),
	inSync(2),
	outOfSync(3),
	inLoopback(4),
	clockOutOfSync(5),
	bertFailed(6)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "This object shows the status of BERT in the shelf.
	The values for this object are valid only when
	cbRowStatus contains active(1).

	Possible values for this object:

	success(1)   : BERT is successfully completed.

	inSync(2)    : BERT is activated and receive side is
		synchronized with the incoming sequence of patterns.

	outOfSync(3) : BERT is activated, but receive is out 
		of synchronization with the incoming 
		sequence.  Criteria for out of 
		synchronization state is defined in 
		ITU document O.150.

	inLoopback(4): loopback establish or de-establish in
		progress.  The type of loopback can be 
		determined by cbLoopback.

	clockOutOfSync(5): When the send and receive clocks are not
		synchronized.

	bertFailed(6): BERT failed.  The cbFailedReason object
		contains the reason for the failure."
	::= { cbConfEntry 10 }

cbFailedReason   OBJECT-TYPE
    SYNTAX INTEGER {
        aborted(1),
	loopbackFailed(2),
        interfaceStateChange(3),
	processorModuleStateChange(4),
        unknown(5)
    }
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
       "This object contains the reason for the BERT failure.
	This object gives the additional information when
	cbOperStatus is set to bertFailed(6).
	      
	The possible values are :
		
	aborted(1)              : BERT test is completed as
		a result of a user request.

	loopbackFailed(2)       :  loop up operation failed.

	interfaceStateChange(3) :  interface State changed due to
		module state change.

        processorModuleStateChange(4) : Processor module 
		changed state.

	unknown(5) : Failure Reason Unknown. "
        ::= { cbConfEntry 11 }

cbStartDateAndTime   OBJECT-TYPE
    SYNTAX  DateAndTime
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
       "The Date and Time when the last BERT testing is started
	on the interface.  This object is valid only when 
        cbRowStatus is active(1). "
    ::= { cbConfEntry 12 }

cbDS0DPCodeIteration  	 OBJECT-TYPE
        SYNTAX        Integer32 (1..32) 
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
       "Valid only with cbLoopbackCode = latchDS0Drop. 
	DSP-OP devices can be cross connected in the central
	office in a daisy chain.  By this, the user has
	capability to put any of the devices in the chain in
	loopback mode.  A value of 1 results in no iteration
	and will cause the very first device in chain to go 
	into loop back.  A value of 2 will result into one
	iteration and will cause the second device to
	go into loopback and so on.  This tests the channels
	across multiple devices connected in a chain. " 
	::= { cbConfEntry 13 }

	
cbRowStatus OBJECT-TYPE
    SYNTAX  RowStatus
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION
       "The status of this conceptual row.  This object is used for
        create or modify or deleting an entry from this table.

        To create a row in this table, a manager must set this
        object to either createAndGo(4) or createAndWait(5).

	Until instances of all corresponding columns are appropriately
	configured, the value of the corresponding instance of the
	cbRowStatus is notReady(3).

	An entry can be deleted by setting this object to destroy(6).

	STARTING BERT: Two approaches:
		
        1. set this object to createAndGo(4) with all the mandatory
	objects set to valid values.

        2. Set this object to createAndWait(4).  Reading this object
        at this stage returns notReady(3).

        Set all the other required objects with valid values.

	Set this object to active(1).

	STOP/RESTART BERT:

	The BERT can be stopped by setting this object to 
        notInService(2).  After setting it to notInService(2),
        some parameters can be modified and BERT can be started
	by setting this object to active(1).

	STOP BERT:

	An entry can be deleted by setting this object 
	to destroy(6).
	Deleting an entry stops the BERT test. "
    ::= { cbConfEntry 14 }

cbDs0BitMap OBJECT-TYPE
    SYNTAX   BITS {
            dsZero1(0),
            dsZero2(1),
            dsZero3(2),
            dsZero4(3),
            dsZero5(4),
            dsZero6(5),
            dsZero7(6),
            dsZero8(7),
            dsZero9(8),
            dsZero10(9),
            dsZero11(10),
            dsZero12(11),
            dsZero13(12),
            dsZero14(13),
            dsZero15(14),
            dsZero16(15),
            dsZero17(16),
            dsZero18(17),
            dsZero19(18),
            dsZero20(19),
            dsZero21(20),
            dsZero22(21),
            dsZero23(22),
            dsZero24(23), -- last bit for T1
            dsZero25(24), -- remainder only for E1
            dsZero26(25), 
            dsZero27(26),
            dsZero28(27),
            dsZero29(28),
            dsZero30(29),
            dsZero31(30)  -- last bit for E1
         }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "This object is only used IF the interface type is DS1
        (ifType is 18 on ifTable).
        This object is used to indicate which DS0 is involved
        on the BERT.
        The defualt value (DEFVAL) is valid and should be used 
        for implementation purposes. But the DEFVAL is commented  
        out due to known mib compiler problems associated with  
        DEFVAL clauses in objects using BITS SYNTAX.
       "
--    DEFVAL { {dsZero1, dsZero2, dsZero3, dsZero4, dsZero5,
--              dsZero6, dsZero7, dsZero8, dsZero9, dsZero10,
--              dsZero11, dsZero12, dsZero13, dsZero14, dsZero15,
--              dsZero16, dsZero17, dsZero18, dsZero19, dsZero20,
--              dsZero21, dsZero22, dsZero23, dsZero24, dsZero25,
--              dsZero26, dsZero27, dsZero28, dsZero29, dsZero30,
--              dsZero31
--           } }
    ::= { cbConfEntry 15 }

-- --------------------------------------------------------------
-- Group ciscoBertStatsTable
-- 
-- --------------------------------------------------------------
cbStatsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CbStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
       "This table contains BERT related real time counters.
	Counters in this table are reset to zero every time
	BERT is started on this interface. "
    ::= { ciscoBertConfig 2 }

cbStatsEntry OBJECT-TYPE
    SYNTAX  CbStatsEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
       "Any entry in BERT statistic table.  For each instances of 
	cbConfTable there will be an entry in the cbStatsTable.  The
	objects in this table are valid only if cbOperStatus is 
	inSync(2). "
    INDEX   { ifIndex }
    ::=     { cbStatsTable 1 }

CbStatsEntry ::=
	SEQUENCE {
	cbTxBitCountLower	Counter32,
	cbTxBitCountUpper	Counter32,
	cbHCTxBitCounts		Counter64,
	cbRxBitCountLower	Counter32,
	cbRxBitCountUpper	Counter32,
	cbHCRxBitCounts		Counter64,
	cbRxBitErrCountLower	Counter32,
	cbRxBitErrCountUpper	Counter32,
	cbHCRxBitErrCounts	Counter64,
	cbSyncLossCounts	Counter32,
	cbPatternLossCounts	Counter32,
	cbFrameLossCounts	Counter32,
	cbESsCounts		Counter32,
	cbSESsCounts		Counter32,
	cbEFSsCounts		Counter32,
	cbErrorInjectCounts	Counter32
	}

cbTxBitCountLower OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The total number of bits transmitted."
    ::= { cbStatsEntry 1 }

cbTxBitCountUpper OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The number of times the associated cbTxBitCountLower object has
        wrapped (i.e. restarted from zero)."
    ::= { cbStatsEntry 2 }

cbHCTxBitCounts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The total number of bits transmitted.  This object is
        a 64-bit version of cbTxBitCounts. "
    ::= { cbStatsEntry 3 }

cbRxBitCountLower OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The total number of bits received. "
    ::= { cbStatsEntry 4 }

cbRxBitCountUpper OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The number of times the associated cbRxBitCountLower counter has
        wrapped (i.e. restarted from zero)."
    ::= { cbStatsEntry 5 }

cbHCRxBitCounts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The total number of bits received.  This object is 
	64-bit version of cbRxBitCounts. "
    ::= { cbStatsEntry 6 }

cbRxBitErrCountLower OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The total number of bit errors detected in the received 
	pattern. "
    ::= { cbStatsEntry 7 }

cbRxBitErrCountUpper OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The number of times the associated cbRxBitErrCountLower counter has
        wrapped (i.e. restarted from zero)."
    ::= { cbStatsEntry 8 }

cbHCRxBitErrCounts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The number of bit errors detected in the received pattern.
	This is the 64-bit version of cbRxBitErrCounts. "
    ::= { cbStatsEntry 9 }

cbSyncLossCounts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "This is the count of number of times that synchronization has 
        been lost since the BERT was started or restarted. "
    ::= { cbStatsEntry 10 }

cbPatternLossCounts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The number of 1 second intervals during the BER test in
        which pattern synchronization was not maintained for the
	entire second. "
    ::= { cbStatsEntry 11 }

cbFrameLossCounts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
       "The number of 1 second intervals during the BER test in
	which frame synchronization was not maintained for the
	entire second. "
    ::= { cbStatsEntry 12 }

cbESsCounts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Number of 1 second interval during the BER test that at least
        one bit error was detected in the received data pattern. "
    ::= { cbStatsEntry 13 }

cbSESsCounts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current 
    DESCRIPTION
       "The number of 1 second intervals during the BER test that
        the Bit Error Rate was greater than 10^-3. "
    ::= { cbStatsEntry 14 }

cbEFSsCounts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current 
    DESCRIPTION
       "The number of 1 second intervals during the BER test that 
        there were not errors detected and pattern synchronization
        was maintained. "
    ::= { cbStatsEntry 15 }

cbErrorInjectCounts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current 
    DESCRIPTION
        "This object contains the number of times error was injected."
    ::= { cbStatsEntry 16 }

-- conformance information
 
ciscoBertMIBConformance OBJECT IDENTIFIER ::= { ciscoBertMIB 8 }
ciscoBertMIBCompliances OBJECT IDENTIFIER ::= 
	{ ciscoBertMIBConformance 1 }
ciscoBertMIBGroups      OBJECT IDENTIFIER ::= 
	{ ciscoBertMIBConformance 2 }
 
ciscoBertMIBCompliance MODULE-COMPLIANCE
     STATUS current
     DESCRIPTION
        "The Compliance statement for cisco BERT management group."
     MODULE -- this module
     MANDATORY-GROUPS { ciscoBertConfigGroup,ciscoBertStatsGroup }

     GROUP ciscoBertHCStatsGroup
     DESCRIPTION 
         "Implementation of this group is mandatory 
	  for SNMP v2/V3 agents."

     GROUP ciscoBertLoopbackGroup
     DESCRIPTION
        "Implementation of this group is not mandatory when
	 the loopbacks need not be established automatically
	 for the devices involved in BERT.  This group need
	 not be implemented if the loopback is established
	 manually."
     GROUP ciscoBertConfigGroupDs1
     DESCRIPTION
        "Implementation of this group is not mandatory.
         This group is needed only if there is special requirment 
         for BERT on DS1."

     ::= { ciscoBertMIBCompliances 1 }


-- units of conformance

ciscoBertConfigGroup  OBJECT-GROUP
        OBJECTS {
            cbTestPattern,         
	    cbUserPattern,
            cbBertTxPatternInv,
	    cbBertRxPatternInv,
            cbSingleBitErrorInsert,
            cbErrorInsertionRate,
	    cbDuration,
            cbOperStatus,
            cbFailedReason,
	    cbStartDateAndTime,
            cbDS0DPCodeIteration,
            cbRowStatus
            }
       STATUS current
       DESCRIPTION
          "Collection of objects related to BERT Configuration and
	   BERT status."
       ::= { ciscoBertMIBGroups 1 }

ciscoBertLoopbackGroup  OBJECT-GROUP
        OBJECTS {
	    cbLoopback,
	    cbLoopbackCode
            }
       STATUS current
       DESCRIPTION
          "Collection of objects related to Loopback configuration
	   for the BERT."
       ::= { ciscoBertMIBGroups 2 }

ciscoBertStatsGroup  OBJECT-GROUP
       OBJECTS {
	    cbTxBitCountLower,
            cbTxBitCountUpper,
            cbRxBitCountLower,
	    cbRxBitCountUpper,
	    cbRxBitErrCountLower,
	    cbRxBitErrCountUpper,
            cbSyncLossCounts,
            cbPatternLossCounts,
            cbFrameLossCounts,
            cbESsCounts,
            cbSESsCounts,
            cbEFSsCounts,
            cbErrorInjectCounts
       }
       STATUS current
       DESCRIPTION
          "Collection of objects related to BERT Statistics."
       ::= { ciscoBertMIBGroups 3 }

ciscoBertHCStatsGroup  OBJECT-GROUP
       OBJECTS {
            cbHCTxBitCounts,
            cbHCRxBitCounts,
            cbHCRxBitErrCounts
       }
       STATUS current
       DESCRIPTION
          "Statistics objects which can hold Counter64 value." 
       ::= { ciscoBertMIBGroups 4 }

ciscoBertConfigGroupDs1  OBJECT-GROUP
       OBJECTS {
            cbDs0BitMap
       }
       STATUS current
       DESCRIPTION
          "This group include objects only for DS1 Bert." 
       ::= { ciscoBertMIBGroups 5 }
END


