-- ################################################################################

EXTREME-CABLE-MIB DEFINITIONS ::= BEGIN

    IMPORTS  
        MODULE-IDENTITY     FROM SNMPv2-SMI
		OBJECT-TYPE         FROM SNMPv2-SMI
        TruthValue          FROM SNMPv2-TC
		extremeAgent        FROM EXTREME-BASE-MIB
		extremeV2Traps		FROM EXTREME-BASE-MIB
        extremenetworks		FROM EXTREME-BASE-MIB
		DisplayString       FROM RFC1213-MIB
		NOTIFICATION-TYPE	FROM SNMPv2-SMI;
            
    extremeCable MODULE-IDENTITY
                LAST-UPDATED "201310111700Z"
                ORGANIZATION "Extreme Networks, Inc."
                CONTACT-INFO "www.extremenetworks.com"
                DESCRIPTION "Extreme-specific Cable objects"
        ::= { extremeAgent 24 }

        extremeDiagConfigGroup OBJECT IDENTIFIER
	::= { extremeCable 1 }

	extremeDiagConfigTime OBJECT-TYPE
 		SYNTAX DisplayString  (SIZE(16))
		MAX-ACCESS read-write
		STATUS current
		DESCRIPTION
	        "Indicates the time at which the Diagnostics information 
		 will be collected for the ports which have 
		 Auto-Diagnostics configured. Time must be given in hh:mm:ss format
		 where hh, mm and ss are in decimals"
		::= { extremeDiagConfigGroup 1  }
		
	extremeDiagConfigRoF OBJECT-TYPE
		SYNTAX INTEGER {true (1), false (2)}
		MAX-ACCESS read-write
		STATUS current
		DESCRIPTION
	        "Indicates whether a port should return to INIT state on 
		 Diagnostics Failure. If TRUE the port will be restarted 
		 even if the Diagnostics indicate a Failure. If FALSE the 
		 port will be moved to DIAG_FAIL state"
		::= { extremeDiagConfigGroup 2  }

	extremeDiagPortConfigTable OBJECT-TYPE
		SYNTAX SEQUENCE OF ExtremeDiagPortCfgEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
	        "Table, which contains the diagnostic configuration 
		 information for the ports"
		::= { extremeCable 2  }

	extremeDiagPortConfigEntry OBJECT-TYPE
		SYNTAX ExtremeDiagPortCfgEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
	        "Each row represents port related diagnostics 
		 configuration"
		INDEX { extremeDiagPortCfgPortIfIndex, extremeDiagPortCfgMode }
		::= { extremeDiagPortConfigTable 1  }

	ExtremeDiagPortCfgEntry ::=
		SEQUENCE {
				extremeDiagPortCfgPortIfIndex
					INTEGER,
				extremeDiagPortCfgMode
					INTEGER,
				extremeDiagPortCfgStatus
					INTEGER 
			}

	extremeDiagPortCfgPortIfIndex OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "IfIndex of the Port for which the information in this row applies"
		::= { extremeDiagPortConfigEntry 1  }

	extremeDiagPortCfgMode OBJECT-TYPE
		SYNTAX INTEGER {auto (1), manual (2)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "The mode of operation. The port can be configured to have
		 either manual diagnostics or auto-diagnostics collected."
		::= { extremeDiagPortConfigEntry 2 }

	extremeDiagPortCfgStatus OBJECT-TYPE
		SYNTAX INTEGER {enable (1), disable (2), run (3), diagfail(4)}
		MAX-ACCESS read-write
		STATUS current
		DESCRIPTION
	        "Specifies whether Diagnostics are enabled or disabled for 
		 the port. In the manual mode, enable and disable will disable the
		 corresponding bit in the manual Diag portmask. Once the run command is
		 given the Manual Diagnostics starts running. <diagfail> indicates the
		 diagnostics for the port has failed. <diagfail> is a read-only value and
		 cannot be used for setting the status of the port"
		::= { extremeDiagPortConfigEntry 3  }

    extremeDiagPortDiagTable OBJECT-TYPE
		SYNTAX SEQUENCE OF ExtremeDiagPortDiagEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
		 "Table contains the diagnostic information for the ports"
		::= { extremeCable 3  }

        extremeDiagPortDiagEntry OBJECT-TYPE
		SYNTAX ExtremeDiagPortDiagEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
		 "Each row represents port related diagnostics information"
		INDEX { extremeDiagPortDiagPortIfIndex, extremeDiagPortDiagMode }
		::= { extremeDiagPortDiagTable 1 }

        ExtremeDiagPortDiagEntry ::=
		SEQUENCE {
				extremeDiagPortDiagPortIfIndex
					INTEGER,
				extremeDiagPortDiagMode
					INTEGER,
				extremeDiagPortSpeed
				    INTEGER,
				extremeDiagPortSwapAB
					INTEGER,
				extremeDiagPortSwapCD
					INTEGER,
				extremeDiagPortPairAPol
					INTEGER,
				extremeDiagPortPairAFlen
					INTEGER,
				extremeDiagPortPairALen
					INTEGER,
				extremeDiagPortPairASkew
					INTEGER,
				extremeDiagPortPairAStatus
					INTEGER,
				extremeDiagPortPairBPol
					INTEGER,
				extremeDiagPortPairBFlen
					INTEGER,
				extremeDiagPortPairBLen
					INTEGER,
				extremeDiagPortPairBSkew
					INTEGER,
				extremeDiagPortPairBStatus
					INTEGER,
				extremeDiagPortPairCPol
					INTEGER,
				extremeDiagPortPairCFlen
					INTEGER,
				extremeDiagPortPairCLen
					INTEGER,
				extremeDiagPortPairCSkew
					INTEGER,
				extremeDiagPortPairCStatus
					INTEGER,
				extremeDiagPortPairDPol
					INTEGER,
				extremeDiagPortPairDFlen
					INTEGER,
				extremeDiagPortPairDLen
					INTEGER,
				extremeDiagPortPairDSkew
					INTEGER,
				extremeDiagPortPairDStatus
					INTEGER,
				extremeDiagPortDateTime
				    DisplayString	
			}

	extremeDiagPortDiagPortIfIndex OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "IfIndex of the Port for which the information in this row applies"
		::= { extremeDiagPortDiagEntry 1  }

	extremeDiagPortDiagMode OBJECT-TYPE
		SYNTAX INTEGER {auto (1), manual (2)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "The mode of operation. The port can be configured to have
		 either manual diagnostics or auto-diagnostics collected."
		::= { extremeDiagPortDiagEntry 2 }

	extremeDiagPortSpeed OBJECT-TYPE
		SYNTAX INTEGER { speed10 (1), speed100 (2), speed1000 (3), unknown (4)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the speed of the port"
		::= { extremeDiagPortDiagEntry 3  }

	extremeDiagPortSwapAB OBJECT-TYPE
		SYNTAX INTEGER {swap(1), noswap(2), unknown(3)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies whether pairA pairB cables are swapped"
		::= { extremeDiagPortDiagEntry 4  }

	extremeDiagPortSwapCD OBJECT-TYPE
		SYNTAX INTEGER {swap(1), noswap(2), unknown(3)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies whether pairC and pairD cables are swapped"
		::= { extremeDiagPortDiagEntry 5  }

	extremeDiagPortPairAPol OBJECT-TYPE
		SYNTAX INTEGER {positive(1), negative(2), unknown(3)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the polarity of pairA cables"
		::= { extremeDiagPortDiagEntry 6  }

	extremeDiagPortPairAFlen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the distance of Fault in the pairA cables"
		::= { extremeDiagPortDiagEntry 7  }

	extremeDiagPortPairALen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the length of the pairA cables"
		::= { extremeDiagPortDiagEntry 8  }

	extremeDiagPortPairASkew OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Skew of pairA cables with respect to the fastest pair"
		::= { extremeDiagPortDiagEntry 9  }

	extremeDiagPortPairAStatus OBJECT-TYPE
		SYNTAX INTEGER {open(1), short(2), terminated(3), imperror(4), unknown(5)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Indicates whether pairA cables are properly terminated, 
		 short or open"
		::= { extremeDiagPortDiagEntry 10  }

	extremeDiagPortPairBPol OBJECT-TYPE
		SYNTAX INTEGER {positive(1), negative(2), unknown(3)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the polarity of pairB cables"
		::= { extremeDiagPortDiagEntry 11  }

	extremeDiagPortPairBFlen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the distance of Fault in the pairB cables"
		::= { extremeDiagPortDiagEntry 12  }

	extremeDiagPortPairBLen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the length of the pairB cables"
		::= { extremeDiagPortDiagEntry 13  }

	extremeDiagPortPairBSkew OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Skew of pairB cables with respect to the fastest pair"
		::= {  extremeDiagPortDiagEntry 14 }

	extremeDiagPortPairBStatus OBJECT-TYPE
		SYNTAX INTEGER {open(1), short(2), terminated(3), imperror(4), unknown(5)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Indicates whether pairB cables are properly terminated, 
		 short or open"
		::= { extremeDiagPortDiagEntry 15 }

	extremeDiagPortPairCPol OBJECT-TYPE
		SYNTAX INTEGER {positive(1), negative(2), unknown(3)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the polarity of pairC cables"
		::= { extremeDiagPortDiagEntry 16  }

	extremeDiagPortPairCFlen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the distance of Fault in the pairC cables"
		::= { extremeDiagPortDiagEntry 17  }

	extremeDiagPortPairCLen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the length of the pairC cables"
		::= { extremeDiagPortDiagEntry 18 }

	extremeDiagPortPairCSkew OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Skew of pairC cables with respect to the fastest pair"
		::= { extremeDiagPortDiagEntry 19 }

	extremeDiagPortPairCStatus OBJECT-TYPE
		SYNTAX INTEGER {open(1), short(2), terminated(3), imperror(4), unknown(5)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Indicates whether pairC cables are properly terminated, 
		 short or open"
		::= {  extremeDiagPortDiagEntry 20}

	extremeDiagPortPairDPol OBJECT-TYPE
		SYNTAX INTEGER {positive(1), negative(2), unknown(3)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the polarity of pairD cables"
		::= { extremeDiagPortDiagEntry 21  }

	extremeDiagPortPairDFlen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the distance of Fault in the pairD cables"
		::= { extremeDiagPortDiagEntry 22  }

	extremeDiagPortPairDLen OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
		"Specifies the length of the pairD cables"
		::= { extremeDiagPortDiagEntry 23 }

	extremeDiagPortPairDSkew OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Skew of pairD cables with respect to the fastest pair"
		::= { extremeDiagPortDiagEntry 24 }

	extremeDiagPortPairDStatus OBJECT-TYPE
		SYNTAX INTEGER {open(1), short(2), terminated(3), imperror(4), unknown(5)}
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Indicates whether pairD cables are properly terminated, 
		 short or open"
		::= { extremeDiagPortDiagEntry 25 }

	extremeDiagPortDateTime OBJECT-TYPE
 		SYNTAX DisplayString  (SIZE(64))
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Date and time at which the Diagnostic information was 
		 collected"
		::= { extremeDiagPortDiagEntry 26 }

	extremeDiagPortStatsTable  OBJECT-TYPE
		SYNTAX SEQUENCE OF ExtremeDiagPortStatsEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
	        "Table, which contains the diagnostic statistic information
		 for the ports"
		::= { extremeCable 4  }

	extremeDiagPortStatsEntry OBJECT-TYPE
		SYNTAX ExtremeDiagPortStatsEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
	        "Each row represents port related diagnostics statistics
		 information"
		INDEX { extremeDiagPortStatsPortIfIndex }
		::= { extremeDiagPortStatsTable 1 }

	ExtremeDiagPortStatsEntry ::=
		SEQUENCE {
				extremeDiagPortStatsPortIfIndex
					INTEGER,
				extremeDiagPortStatsNumDiag
					INTEGER,
				extremeDiagPortStatsNumSuccess
					INTEGER,
				extremeDiagPortStatsNumFail
					INTEGER,
				extremeDiagPortStatsNumChange
					INTEGER,
				extremeDiagPortStatsNumAbort
					INTEGER
			}

	extremeDiagPortStatsPortIfIndex OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "IfIndex of the Port for which the information in this row applies"
		::= { extremeDiagPortStatsEntry 1  }

	extremeDiagPortStatsNumDiag OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Number of times Diagnostics information collected for this
		 port"
		::= {   extremeDiagPortStatsEntry 2 }

	extremeDiagPortStatsNumSuccess OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Number of times Diagnostics for this port completed 
		 successfully without any errors"
		::= {   extremeDiagPortStatsEntry 3 }

	extremeDiagPortStatsNumFail OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Number of times Diagnostics for this port Failed due to 
		 errors in the cable pairs"
		::= {   extremeDiagPortStatsEntry 4 }

	extremeDiagPortStatsNumChange OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Number of times Diagnostics Changed for this port"
		::= {   extremeDiagPortStatsEntry 5 }

	extremeDiagPortStatsNumAbort OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS current
		DESCRIPTION
	        "Number of times Diagnostics was aborted by the user for this port"
		::= {   extremeDiagPortStatsEntry 6 }

--TRAPS MIB Definitions for CDM
  
--   extremeTrapDiagPortDiagnostics	TRAP-TYPE
--   ENTERPRISE  extremenetworks
--   VARIABLES   {extremeDiagPortCfgPortIfIndex, extremeDiagPortCfgMode, extremeDiagPortCfgStatus}
--   DESCRIPTION
--   	  "Indicates the status of Diagnostics for a port. The status indicates 
--   	  whether Diagnostics for a particular port failed"
--   ::= 22

   extremeCableTraps 	OBJECT IDENTIFIER
	::= { extremeCable 5 }

   extremeCableTrapsPrefix   OBJECT IDENTIFIER
	::= { extremeCableTraps 0 }

   extremeTrapDiagPortDiagnostics	NOTIFICATION-TYPE
   	OBJECTS   {extremeDiagPortCfgPortIfIndex, extremeDiagPortCfgMode, extremeDiagPortCfgStatus}
      STATUS current
      DESCRIPTION
   	  "Indicates the status of Diagnostics for a port. The status indicates 
   	  whether Diagnostics for a particular port failed"
      ::= { extremeCableTrapsPrefix 1 }

END
