-- Zyxel Communications Corporation
-- Private Enterprise MIB definition 
  
-- This file describes the Zyxel Communications Corporation Enterprise MIB.
-- It contains Zyxel products OIDs, and common managed objects.

-- ZYXEL-PORT-MIB.mib
-- Revision 1.16  2016/09/09

ZYXEL-PORT-MIB DEFINITIONS ::= BEGIN
    IMPORTS
	OBJECT-TYPE
		FROM SNMPv2-SMI			-- RFC2578	
		
	MODULE-IDENTITY
		FROM SNMPv2-SMI
		
	DisplayString                                          
	  	FROM SNMPv2-TC
	  	
	EnabledStatus
		FROM  P-BRIDGE-MIB
		
	dot1dBasePort
       	FROM BRIDGE-MIB

    ifIndex
    	FROM IF-MIB					-- RFC2863
    	
    NOTIFICATION-TYPE
        FROM SNMPv2-SMI
       
	esMgmt			
		FROM ZYXEL-ES-SMI;

	zyxelPort MODULE-IDENTITY
		LAST-UPDATED	"201207010000Z"    
		ORGANIZATION "Enterprise Solution Zyxel"     
		CONTACT-INFO
			""	   
		DESCRIPTION
			"The subtree for port"
		::= { esMgmt 61 }

	zyxelPortSetup 			OBJECT IDENTIFIER ::= { zyxelPort 1 }
	zyxelPortStatus 		OBJECT IDENTIFIER ::= { zyxelPort 2 }
	zyxelPortNotifications 	OBJECT IDENTIFIER ::= { zyxelPort 3 }
	
	  
-- *******************************************************************
-- *
-- * zyxelPortSetup
-- *
-- *******************************************************************

-- zyxelPortTable
        zyxelPortTable  OBJECT-TYPE
        SYNTAX	SEQUENCE OF ZyxelPortEntry 
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                 	"The table contains port configuration. "
        ::= { zyxelPortSetup 1 }
        
		zyxelPortEntry  OBJECT-TYPE
        SYNTAX	ZyxelPortEntry 
        MAX-ACCESS	not-accessible
        STATUS	current
        DESCRIPTION    	
					"An entry contains port configuration. "
        INDEX          	{ dot1dBasePort }
        ::= { zyxelPortTable 1 }

        ZyxelPortEntry ::=
          SEQUENCE {
        	zyPortSpeedDuplex			INTEGER,
        	zyPortFlowControlState		INTEGER,
        	zyPortName					DisplayString,
         	zyPortIntrusionLockState	EnabledStatus,
        	zyPortCX4CableLength		INTEGER,
			zyPort10GMediaType			INTEGER,
            zyPortExtendRangeState      EnabledStatus,
        	zyPortPortBuffer      		EnabledStatus,		
        	zyPortFecType      			INTEGER
           }

        zyPortSpeedDuplex OBJECT-TYPE
        SYNTAX  INTEGER {
            auto(0),
        	speed10Half(1),
        	speed10Full(2),
        	speed100Half(3),
        	speed100Full(4),
        	speed1000Full(5),
        	speed10GFull(6),
        	speed12GFull(7),
        	speed40GFull(8),
			speedAuto1000(9),
			speedAuto10G(10),
			speed2500Full(11),
			speed5GFull(12),
			speed10an(13),
			speed100an(14),
			speed25Gan(15),
			speed25GFull(16),
			speed100Gan(17),
			speed100GFull(18)				
        }
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Select The speed and the duplex mode of the Ethernet connection on this port. Selecting Auto 
			(auto-negotiation) allows one port to negotiate with a peer port automatically to obtain the 
			connection speed and duplex mode that both ends support. When auto-negotiation is turned on, 
			a port on the Switch negotiates with the peer automatically to determine the connection speed 
			and duplex mode. If the peer port does not support auto-negotiation or turns off this feature, 
			the Switch determines the connection speed by detecting the signal on the cable and using half 
			duplex mode. Thus requiring you to make sure that the settings of the peer port are the same in 
			order to connect."
        ::= { zyxelPortEntry 1 }

        zyPortFlowControlState OBJECT-TYPE
        SYNTAX  INTEGER {
			tx-rx(1),
			disable(2),
			tx(3),
			rx(4)
		}
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Enable/Disable the flow control on this port. A concentration of traffic on a port decreases port 
			bandwidth and overflows buffer memory causing packet discards and frame losses. Flow control is used 
			to regulate transmission of signals to match the bandwidth of the receiving port."
        ::= { zyxelPortEntry 2 }

        zyPortName  OBJECT-TYPE
        SYNTAX  DisplayString
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Enter a descriptive name that identifies this port."
        ::= { zyxelPortEntry 3 }

		zyPortIntrusionLockState OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Enable/Disable intrusion lock on the port(s) and the port cannot be connected again after you 
			disconnected the cable."
        ::= { zyxelPortEntry 4 }
        
        zyPortCX4CableLength OBJECT-TYPE
        SYNTAX  INTEGER {
        	halfMeters(0),
        	oneMeters(1),
        	threeMeters(2),
        	fiveMeters(3),
        	tenMeters(4),
        	fifteenMeters(5)
        }
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Set the number of meters for the length of the 10GBASE-CX4 cable you use to connect between the swtich 
			and another switch for stacking."
        ::= { zyxelPortEntry 5}    

        zyPort10GMediaType OBJECT-TYPE
        SYNTAX  INTEGER {
        	sfpPlus(0),
        	dac10g(1),
        	auto(2)
        }
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Set the 10GBase media type."
        ::= { zyxelPortEntry 6}

        zyPortExtendRangeState OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Enable/Disable the extend-range mode on this port."
        ::= { zyxelPortEntry 7 }

        zyPortPortBuffer OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Enable/Disable port buffer."
        ::= { zyxelPortEntry 8 }
		
		zyPortFecType OBJECT-TYPE
        SYNTAX  INTEGER {
		none(0),
		auto(1),
		cl74(2),
		cl91(3),
		cl108(4)
        }
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Set the FEC Type"
        ::= { zyxelPortEntry 9 }
		
-- *******************************************************************
-- *
-- * zyxelPortStatus
-- *
-- *******************************************************************

-- zyxelPortInfoTable
        zyxelPortInfoTable  OBJECT-TYPE
        SYNTAX	SEQUENCE OF ZyxelPortInfoEntry 
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                 	"The table contains port information. "
        ::= { zyxelPortStatus 1 }
        
		zyxelPortInfoEntry  OBJECT-TYPE
        SYNTAX	ZyxelPortInfoEntry 
        MAX-ACCESS	not-accessible
        STATUS	current
        DESCRIPTION    	
					"An entry contains port information. "
        INDEX          	{ dot1dBasePort }
        ::= { zyxelPortInfoTable 1 }
        ZyxelPortInfoEntry ::=
           SEQUENCE {
        	zyPortModuleType		INTEGER,
        	zyPortLinkUpType		INTEGER,
        	zyPortTestStatus		INTEGER,
        	zyPortCounterReset		INTEGER, 
        	zyPortUtilizationRx		INTEGER,
        	zyPortUtilizationTx		INTEGER,
        	zyPortFecStatus			INTEGER
           }
		
		zyPortModuleType  OBJECT-TYPE
        SYNTAX  INTEGER {
        	fastEthernet(0),
        	gigabitEthernet(1),
        	xgEthernet10000(2),
        	x1GigabitEthernet_40(3),
			xxvGigabitEthernet_25(4),
			cGigabitEthernet_100(5)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
			"This entry displays the speed type of modular."
        ::= { zyxelPortInfoEntry 1 }
		
		zyPortLinkUpType  OBJECT-TYPE
        SYNTAX  INTEGER { 	
       		down(0),
        	copper(1),
        	fiber(2),
        	xfp(3),
        	cx4(4)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
			"The entry shows the linkUp cable type (copper, fiber, xfp or cx4) for the combo ports."
        ::= { zyxelPortInfoEntry 2 }
		
		zyPortTestStatus OBJECT-TYPE
        SYNTAX  INTEGER {
        	none(0),
        	underTesting(1),
        	success(2),
        	fail(3)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
			"This entry displays latest loopback test status of port while performing loopback test."
        ::= { zyxelPortInfoEntry 3 } 

       
		zyPortCounterReset OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
			"Enable this entry can reset port counter record."
        ::= { zyxelPortInfoEntry 4 }   
                                                                     
          zyPortUtilizationRx OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
			"This entry display the percentage of port utilization per second received on this port."
        ::= { zyxelPortInfoEntry 5 }
		                            
		                            
	    zyPortUtilizationTx OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
			"This entry display the percentage of port utilization per second transmitted on this port."
        ::= { zyxelPortInfoEntry 6 }
       
	zyPortFecStatus OBJECT-TYPE
        SYNTAX  INTEGER {
        	none(0),
        	cl74(1),
        	cl91(2),
        	cl108(3)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
	"The entry displays the FEC resolved status."
        ::= { zyxelPortInfoEntry 7 }
		
	   zyPortAutonegotiationFailed NOTIFICATION-TYPE
       OBJECTS {
				ifIndex
         }       
	   STATUS  current
       DESCRIPTION
               "Link speed and duplex mode autonegotiation has failed."
       ::= { zyxelPortNotifications 1 }
       
	   zyPortIntrusionLock NOTIFICATION-TYPE
       OBJECTS {
				ifIndex
         }       
	   STATUS  current
       DESCRIPTION
               "The cable is disconnected and the port cannot be connected again."
       ::= { zyxelPortNotifications 2 }               
        
	   zyPortAutonegotiationFailedRecovered NOTIFICATION-TYPE
       OBJECTS {
				ifIndex
         }       
	   STATUS  current
       DESCRIPTION
               "Link speed and duplex mode autonegotiation has recovered from failed."
       ::= { zyxelPortNotifications 3 }
        
		
END    
