TPLINK-STACK-MIB DEFINITIONS ::= BEGIN

IMPORTS
	Unsigned32,
    MODULE-IDENTITY,
    NOTIFICATION-TYPE,
    OBJECT-TYPE
			FROM SNMPv2-SMI
	ifIndex,
	DisplayString
			FROM RFC1213-MIB
	tplinkMgmt	          
			FROM TPLINK-MIB;

tplinkStackMIB MODULE-IDENTITY
    LAST-UPDATED  "201211290000Z"
    ORGANIZATION  "TP-LINK"
    CONTACT-INFO  "www.tplink.com"
    DESCRIPTION
         "This MIB module contain a collection of managed objects
          that apply to network devices with stack function."

    REVISION    "201211290000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { tplinkMgmt 34 }

tplinkStackMIBObjects OBJECT IDENTIFIER ::= {tplinkStackMIB 1}
tplinkStackNotifications OBJECT IDENTIFIER ::= {tplinkStackMIB 2}

tpStackGlobal      OBJECT IDENTIFIER ::= { tplinkStackMIBObjects 1 }
tpStackInfo    OBJECT IDENTIFIER ::= { tplinkStackMIBObjects 2 }

-- Global objects pertient to all switches

tpStackName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "An unique tag for the stack system."
    ::= { tpStackGlobal 1 }
	
tpStackMacAddress OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The mac address the stack uses to communicate with other devices."
    ::= { tpStackGlobal 2 }
	
tpStackTopo OBJECT-TYPE
    SYNTAX      INTEGER{
		line(0),
		ring(1)
	}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current topo state of the stack."
    ::= { tpStackGlobal 3 }
	
tpStackAuthMode	OBJECT-TYPE
    SYNTAX      INTEGER{
		none(0),
		simple(1),
		md5(2)
	}
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The authentication mode used in stack creation."
    ::= { tpStackGlobal 4 }
	
tpStackAuthKey	OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The password to be used in stack authentication if the
     		Stack Auth Mode is Simple or Md5."
    ::= { tpStackGlobal 5 }

-- Switch Information Table

tpSwitchInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF TpSwitchInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information specific to switches in a
        stack."
    ::= { tpStackInfo 1 }

tpSwitchInfoEntry OBJECT-TYPE
    SYNTAX      TpSwitchInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the switchInfoTable describing
        a switch information."
    INDEX { tpSwitchCurrentUnit }
    ::= { tpSwitchInfoTable 1 }

TpSwitchInfoEntry ::= SEQUENCE {
     tpSwitchCurrentUnit    INTEGER,
	 tpSwitchDesignatedUnit  INTEGER,
     tpSwitchRole          INTEGER,
     tpSwitchPriority      INTEGER,
     tpSwitchMacAddress    DisplayString,
	 tpSwitchVersion		DisplayString,
	 tpSwitchState         INTEGER
    }

tpSwitchCurrentUnit OBJECT-TYPE
    SYNTAX      INTEGER{
		unit-1(1),
		unit-2(2),
		unit-3(3),
		unit-4(4),
		unit-5(5),
		unit-6(6),
		unit-7(7),
		unit-8(8)		
	}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object contains the current switch identification number."
    ::= { tpSwitchInfoEntry 1 }
	
tpSwitchDesignatedUnit OBJECT-TYPE
    SYNTAX      INTEGER{
		auto(-1),
		unit-1(1),
		unit-2(2),
		unit-3(3),
		unit-4(4),
		unit-5(5),
		unit-6(6),
		unit-7(7),
		unit-8(8)		
	}
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "
		This object contains the preferred unit number for the switch.
		auto: 
			When this option is selected, the device will be assigned 
			a free unit number automatically.
		unit-x: 
			When this option is selected, the device will try to 
			obtain unit-x first,treated as auto when it is not available 
			to obtain a preffered unit number.
		"
    ::= { tpSwitchInfoEntry 3 }	

tpSwitchRole OBJECT-TYPE
    SYNTAX      INTEGER {
         slave(0),
         master(1)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the function of the switch:
		
        slave    - stack member.
        master   - stack master.
		"
    ::= { tpSwitchInfoEntry 4}

tpSwitchPriority OBJECT-TYPE
    SYNTAX      INTEGER(1..15)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A number containing the priority of a switch.  The switch with
        the highest priority will become the master."
    ::= { tpSwitchInfoEntry 5 }
	
tpSwitchMacAddress OBJECT-TYPE
    SYNTAX    DisplayString(SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The MAC address of the switch."
    ::= { tpSwitchInfoEntry 6 }
	
tpSwitchVersion OBJECT-TYPE
    SYNTAX    DisplayString(SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The software version of the switch."
    ::= { tpSwitchInfoEntry 7 }

tpSwitchState OBJECT-TYPE
    SYNTAX INTEGER {
		 init(1),
		 disc(2),
		 sync(3),
		 ready(4),
		 verMismatch(5)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current state of a switch:
		
		init			- The switch is initializing.
		
		disc			- The switch is discovering other switchs.
		
		sync			- The switch is now synchronizing config with other stack members.
		
        ready           - The switch is now ready.
		
        verMismatch     - The software version running on the
                          master is different with this member.
		"		  
    ::= { tpSwitchInfoEntry 8 }

--  StackPort Information Table

tpStackPortInfoTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF TpStackPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains stackport specific information.  There
        exists an entry in this table for every physical stack
        port that have an entry in the ifTable (IF-MIB)."
    ::= { tpStackInfo 2 }

tpStackPortInfoEntry OBJECT-TYPE
    SYNTAX      TpStackPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the stackPortInfoTable.  An entry
        contains information about a stackport."
    INDEX { ifIndex }
    ::= { tpStackPortInfoTable 1 }

TpStackPortInfoEntry ::= SEQUENCE {
	 tpStackPortEnable	INTEGER,
     tpStackPortStatus  INTEGER,
     tpStackPortNeighbor    DisplayString(SIZE(0..255))
    }

tpStackPortEnable OBJECT-TYPE
    SYNTAX      INTEGER {
         disable(0),
         enable(1)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Whether the port is enable as a stack port.

        disable    - Ethernet port mode.

        enable     - Stack port mode.
		"
    ::= { tpStackPortInfoEntry 1 }
	
tpStackPortStatus OBJECT-TYPE
    SYNTAX      INTEGER {
         ok(1),
         down(2),
         authFail(3),
		 ethernet(4)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The state of the stackport.

        ok         - Connected and operational.

        down       - Link down.

        authFail   - The stack port is link-up but no discovery packets received or
					 malformed packet received.
					 
		ethernet   - The port now works in Ethernet mode.
		"
    ::= { tpStackPortInfoEntry 2 }

tpStackPortNeighbor OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        " 	The mac address of the switch directly links on the stack port."
    ::= { tpStackPortInfoEntry 3 }

END