COMTROL-ES8510-MIB DEFINITIONS ::= BEGIN

IMPORTS
    internet                                            FROM RFC1155-SMI
    RowStatus, DisplayString, MacAddress, TimeInterval  FROM SNMPv2-TC
    PortList                                            FROM Q-BRIDGE-MIB;


private           OBJECT IDENTIFIER ::= { internet 4 }
enterprises       OBJECT IDENTIFIER ::= { private 1 }
comtrol           OBJECT IDENTIFIER ::= { enterprises 2882 }
products          OBJECT IDENTIFIER ::= { comtrol 2 }
managedSwitch     OBJECT IDENTIFIER ::= { products 1 }
es8510       OBJECT IDENTIFIER ::= { managedSwitch 1 }

contact MODULE-IDENTITY
    LAST-UPDATED "201805140000Z"
    ORGANIZATION "Comtrol Corporation"
    CONTACT-INFO "Comtrol Corporation"
    DESCRIPTION  "Comtrol Corporation
                    100 Fifth Avenue NW
                    New Brighton, MN 55112
                    TEL: +1.763.957.6000
                    E-mail: ftpadmin@comtrol.com"
    REVISION     "201805140000Z"
    DESCRIPTION  "version 3.1a"
    ::= { comtrol 1 }

systemInfo            OBJECT IDENTIFIER ::= { es8510 1 }
basicSetting          OBJECT IDENTIFIER ::= { es8510 2 }
portConfiguration     OBJECT IDENTIFIER ::= { es8510 3 }
networkRedundancy     OBJECT IDENTIFIER ::= { es8510 4 }
vlan                  OBJECT IDENTIFIER ::= { es8510 5 }
trafficPrioritization OBJECT IDENTIFIER ::= { es8510 6 }
multicastFiltering    OBJECT IDENTIFIER ::= { es8510 7 }
snmp                  OBJECT IDENTIFIER ::= { es8510 8 }
security              OBJECT IDENTIFIER ::= { es8510 9 }
warning               OBJECT IDENTIFIER ::= { es8510 10 }
monitorandDiag        OBJECT IDENTIFIER ::= { es8510 11 }
save                  OBJECT IDENTIFIER ::= { es8510 12 }


-- -----------------------------------------------------------------------------
-- Textual Convention
-- -----------------------------------------------------------------------------
AlertType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION ""
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }

-- -----------------------------------------------------------------------------
-- systemInfo
-- -----------------------------------------------------------------------------
systemName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    ACCESS      read-only
    STATUS      current
    DESCRIPTION "An administratively-assigned name for this managed node. 
                 By convention, this is the node's fully-qualified domain name."
    ::= { systemInfo 1 }

systemLocation OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    ACCESS      read-only
    STATUS      current
    DESCRIPTION "The physical location of this node (e.g., telephone closet, 
                3rd floor')."
    ::= { systemInfo 2 }

systemContact OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The textual identification of the contact person for this 
                managed node, together with information on how to contact 
                this person."
    ::= { systemInfo 3 }

systemDescr OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    ACCESS      read-only
    STATUS      current
    DESCRIPTION "A textual description of the entity. This value should 
                include the full name and version identification of the 
                system's hardware type, software operating-system, and 
                networking software. It is mandatory that this only contain
                printable ASCII characters."
    ::= { systemInfo 4 }

systemFwVer OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..20))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Firmware version of the device."
    ::= { systemInfo 5 }

systemMacAddress OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The MAC address of this device. An Media Access Control 
                address (MAC address) is a unique identifier attached to 
                most network adapters (NICs). It is a number that acts 
                like a name for a particular network adapter"
    ::= { systemInfo 6 }

-- -----------------------------------------------------------------------------
-- basicSetting
-- -----------------------------------------------------------------------------

switchSetting         OBJECT IDENTIFIER ::= { basicSetting 1 }
adminPassword         OBJECT IDENTIFIER ::= { basicSetting 2 }
ipConfiguration       OBJECT IDENTIFIER ::= { basicSetting 3 }
timeSetting           OBJECT IDENTIFIER ::= { basicSetting 4 }
dhcpServer            OBJECT IDENTIFIER ::= { basicSetting 5 }
backupAndRestore      OBJECT IDENTIFIER ::= { basicSetting 6 }
tftpUpgrade           OBJECT IDENTIFIER ::= { basicSetting 7 }
factoryDefault        OBJECT IDENTIFIER ::= { basicSetting 8 }
systemReboot          OBJECT IDENTIFIER ::= { basicSetting 9 }

-- -----------------------------------------------------------------------------
-- switchSetting
-- -----------------------------------------------------------------------------

switchSettingSystemName OBJECT-TYPE
	SYNTAX      DisplayString (SIZE (1..256))
	ACCESS      read-write
	STATUS      current
	DESCRIPTION "An administratively-assigned name for this managed node. By 
	            convention, this is the node's fully-qualified domain name."
	::= { switchSetting 1 }

switchSettingSystemLocation OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..256))
    ACCESS      read-write
    STATUS      current
    DESCRIPTION "The physical location of this node (e.g., telephone closet, 
                3rd floor')."
    ::= { switchSetting 2 }

switchSettingSystemContact OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..256))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The textual identification of the contact person for this 
                managed node, together with information on how to contact 
                this person."
    ::= { switchSetting 3 }

-- -----------------------------------------------------------------------------
-- adminPassword
-- -----------------------------------------------------------------------------

adminPasswordUserName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..20))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The name(ID) of security manager."
    ::= { adminPassword 1 }

adminPasswordPassword OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..8))
    MAX-ACCESS  write-only
    STATUS      current
    DESCRIPTION "The password of security manager.
                 This object can't be read. it's write-only."
    ::= { adminPassword 2 }

--adminPasswordConfirm OBJECT-TYPE
--    SYNTAX      DisplayString (SIZE(0..8))
--    MAX-ACCESS  write-only
--    STATUS      current
--    DESCRIPTION "To confirm the password modification.
--                 This object can't be read. it's write-only."
--    ::= { adminPassword 3 }

-- -----------------------------------------------------------------------------
-- ipConfiguration
-- -----------------------------------------------------------------------------
ipConfigurationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF IPconfigurationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                the IP of the device."
    ::= { ipConfiguration 1 }

ipConfigurationEntry OBJECT-TYPE
    SYNTAX      IPconfigurationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information configuring static IP or DHCP configuration 
                of the device."
    INDEX       { ipConfigurationIndex }
    ::= { ipConfigurationTable 1 }

IPconfigurationEntry ::= SEQUENCE {
    ipConfigurationIndex        INTEGER,
    ipConfigurationDHCPStatus   INTEGER,
    ipConfigurationAddress      IpAddress,
    ipConfigurationSubMask      IpAddress,
    ipConfigurationGateway      IpAddress,
    ipConfigurationDNS1         IpAddress,
    ipConfigurationDNS2         IpAddress,
    ipConfigurationStatus       INTEGER
}

ipConfigurationIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This object identifies IP configuration entries."
    ::= { ipConfigurationEntry 1 }


ipConfigurationDHCPStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter configuring DHCP client functionality of the 
                device. When enabled, device will be a DHCP client and 
                request for the IP configuration from DHCP server.
                
                The Dynamic Host Configuration Protocol (DHCP) automates 
                the assignment of IP addresses, subnet masks, default 
                routers, and other IP parameters. The assignment usually 
                occurs when the DHCP-configured machine boots up or regains 
                connectivity to the network. The DHCP client sends out a 
                query requesting a response from a DHCP server on the 
                locally attached network. The query is typically initiated 
                immediately after booting up and before the client initiates 
                any IP based communication with other hosts. The DHCP server 
                then replies to the client with its assigned IP address, 
                subnet mask, DNS server and default gateway information.
                
                Note: Other items in this table will not be modified, when
                ipConfigurationDHCPStatus is enabled."
    ::= { ipConfigurationEntry 2 }

ipConfigurationAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of switch.
                An IP address (Internet Protocol address) is a unique address 
                that devices use in order to identify and communicate with 
                each other on a computer network utilizing the Internet 
                Protocol standard (IP). Any participating network device can 
                has its own unique address."
    ::= { ipConfigurationEntry 3 }

ipConfigurationSubMask OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The subnet mask is a 32-bit number in the same format and 
                representation as IP addresses. The subnet mask determines 
                which bits in the IP address are interpreted as the network 
                number, which as the subnetwork number, and which as the 
                host number. Each IP address bit that corresponds to a 1 
                in the subnet mask is in the network/subnetwork part of 
                the address. This group of numbers is also called the 
                Network ID. Each IP address bit that corresponds to a 0 is 
                in the host part of the IP address."
    ::= { ipConfigurationEntry 4 }

ipConfigurationGateway OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The default gateway IP address identifies the gateway (for 
                example, a router) that receives and forwards those packets 
                whose addresses are unknown to the local network. The agent 
                uses the default gateway address when sending alert packets 
                to the management workstation on a network other than the 
                local network."
    ::= { ipConfigurationEntry 5 }

ipConfigurationDNS1 OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter configuring the first DNS server of the device. 
    
                The domain name system (DNS) stores and associates many 
                types of information with domain names. Most importantly, 
                it translates domain names (computer hostnames) to IP 
                addresses, which makes it possible to attach easy-to-remember 
                domain names to hard-to-remember IP 
                addresses (such as 100.50.10.100)."
    ::= { ipConfigurationEntry 6 }

ipConfigurationDNS2 OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter configuring the second DNS server of the device."
    ::= { ipConfigurationEntry 7 }

ipConfigurationStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of the IP configuration entry. Only one 
                configuration entry is supported on the device. Set active(1) 
                to activate the parameters of the entry on the device."
    ::= { ipConfigurationEntry 8 }

-- -----------------------------------------------------------------------------
-- timeSetting
-- -----------------------------------------------------------------------------
systemTime OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  read-only
	STATUS      current
	DESCRIPTION "current system time in format yyyy.mm.dd-hh:mm:ss"
	::= { timeSetting 1 }

utcTimeZone OBJECT-TYPE
    SYNTAX      INTEGER {
                    gmtNegative1200EniwetokKwajalein(1),                           
                    gmtNegative1100MidwayIslandSamoa(2),                           
                    gmtNegative1000Hawaii(3),                                      
                    gmtNegative0900Alaska(4),                                      
                    gmtNegative0800PacificTimeUSandCanadaTijuana(5),               
                    gmtNegative0700Arizona(6),                                     
                    gmtNegative0700MountainTimeUSandCanada(7),                     
                    gmtNegative0600CentralAmerica(8),                              
                    gmtNegative0600CentralTimeUSandCanada(9),                      
                    gmtNegative0600MexicoCityTegucigalpa(10),                      
                    gmtNegative0600Saskatchewan(11),                               
                    gmtNegative0500BogotaLimaQuito(12),                            
                    gmtNegative0500EasternTimeUSandCanada(13),                     
                    gmtNegative0500IndianaEast(14),                                
                    gmtNegative0400AtlanticTimeCanada(15),                         
                    gmtNegative0400CaracasLaPaz(16),                               
                    gmtNegative0400Santiago(17),                                   
                    gmtNegative0330Newfoundland(18),                               
                    gmtNegative0300Brasilia(19),                                   
                    gmtNegative0300BuenosAiresGeorgetown(20),                      
                    gmtNegative0300Greenland(21),                                  
                    gmtNegative0200Mid-Atlantic(22),                               
                    gmtNegative0100AzoresCapeVerdeIs(23),                          
                    gmtNegative0100CapeVerdeIs(24),                                
                    gmtCasablancaMonrovia(25),                                     
                    gmtGreenwichMeanTimeDublinEdinburghLisbonLondon(26),           
                    gmtPositive0100AmsterdamBerlinBernRomeStockholmVienna(27),     
                    gmtPositive0100BelgradeBratislavaBudapestLjubljanaPrague(28),  
                    gmtPositive0100BrusselsCopenhagenMadridParis(29),              
                    gmtPositive0100SarajevoSkopjeSofijaWarsawZagreb(30),           
                    gmtPositive0100WestCentralAfrica(31),                          
                    gmtPositive0200AthensIstanbulMinsk(32),                        
                    gmtPositive0200Bucharest(33),                                  
                    gmtPositive0200Cairo(34),                                      
                    gmtPositive0200HararePretoria(35),                             
                    gmtPositive0200HelsinkiRigaTallinn(36),                        
                    gmtPositive0200Jerusalem(37),                                  
                    gmtPositive0300BaghdadKuwaitRiyadh(38),                        
                    gmtPositive0300KuwaitRiyadh(39),                               
                    gmtPositive0300MoscowStPetersburgVolgograd(40),                
                    gmtPositive0300Mairobi(41),                                    
                    gmtPositive0330Tehran(42),                                     
                    gmtPositive0400AbuDhabiMuscat(43),                             
                    gmtPositive0400BakuTbilisi(44),                                
                    gmtPositive0430Kabul(45),                                      
                    gmtPositive0500Ekaterinburg(46),                               
                    gmtPositive0500IslamabadKarachiTashkent(47),                   
                    gmtPositive0530BombayCalcuttaMadrasNewDelhi(48),               
                    gmtPositive0545Kathmandu(49),                                  
                    gmtPositive0600AlmatyNovosibirsk(50),                          
                    gmtPositive0600AstanaDhaka(51),                                
                    gmtPositive0600Colombo(52),                                    
                    gmtPositive0630Rangoon(53),                                    
                    gmtPositive0700BangkokHanoiJakarta(54),                        
                    gmtPositive0700Krasnoyarsk(55),                                
                    gmtPositive0800BeijingChongqingHongKongUrumqi(56),             
                    gmtPositive0800IrkutskUlaanBataar(57),                         
                    gmtPositive0800KualaLumpurSingapore(58),                       
                    gmtPositive0800Perth(59),                                      
                    gmtPositive0800Taipei(60),                                     
                    gmtPositive0900OsakaSapporoTokyo(61),                          
                    gmtPositive0900Seoul(62),                                      
                    gmtPositive0900Yakutsk(63),                                    
                    gmtPositive0930Adelaide(64),                                   
                    gmtPositive0930Darwin(65),                                     
                    gmtPositive1000Brisbane(66),                                   
                    gmtPositive1000CanberraMelbourneSydney(67),                    
                    gmtPositive1000GuamPortMoresby(68),                            
                    gmtPositive1000Hobart(69),                                     
                    gmtPositive1000Vladivostok(70),                                
                    gmtPositive1100MagadanSolomonIsNewCaledonia(71),               
                    gmtPositive1200AucklandWllington(72),                          
                    gmtPositive1200FijiKamchatkaMarshallIs(73),                    
                    gmtPositive1300Nukualofa(74)                                   
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "UTC Timezone list.
                (GMT-12:00) Eniwetok, Kwajalein
				(GMT-11:00) Midway Island, Samoa
				(GMT-10:00) Hawaii
			    (GMT-09:00) Alaska
			    (GMT-08:00) Pacific Time (US & Canada), Tijuana
			    (GMT-07:00) Arizona
				(GMT-07:00) Mountain Time (US & Canada)
				(GMT-06:00) Central America
				(GMT-06:00) Central Time (US & Canada)
				(GMT-06:00) Mexico City
				(GMT-06:00) Saskatchewan
				(GMT-05:00) Bogota, Lima, Quito
				(GMT-05:00) Eastern Time (US & Canada)
				(GMT-05:00) Indiana (East)
				(GMT-04:00) Atlantic Time (Canada)
				(GMT-04:00) Caracas, La Paz
				(GMT-04:00) Santiago
				(GMT-03:00) NewFoundland
				(GMT-03:00) Brasilia
				(GMT-03:00) Buenos Aires, Georgetown
				(GMT-03:00) Greenland
				(GMT-02:00) Mid-Atlantic
				(GMT-01:00) Azores
				(GMT-01:00) Cape Verde Is.
				(GMT)       Casablanca, Monrovia
				(GMT)       Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London
				(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna 
				(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
				(GMT+01:00) Brussels, Copenhagen, Madrid, Paris
				(GMT+01:00) Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb
				(GMT+01:00) West Central Africa
				(GMT+02:00) Athens, Istanbul, Minsk
				(GMT+02:00) Bucharest 
				(GMT+02:00) Cairo
				(GMT+02:00) Harare, Pretoria
				(GMT+02:00) Helsinki, Riga, Tallinn
				(GMT+02:00) Jerusalem
				(GMT+03:00) Baghdad
				(GMT+03:00) Kuwait, Riyadh
				(GMT+03:00) Moscow, St. Petersburg, Volgograd
				(GMT+03:00) Nairobi
				(GMT+03:30) Tehran
				(GMT+04:00) Abu Dhabi, Muscat
				(GMT+04:00) Baku, Tbilisi, Yerevan
				(GMT+04:30) Kabul
				(GMT+05:00) Ekaterinburg
				(GMT+05:00) Islamabad, Karachi, Tashkent
				(GMT+05:30) Calcutta, Chennai, Mumbai, New Delhi
				(GMT+05:45) Kathmandu
				(GMT+06:00) Almaty, Novosibirsk
				(GMT+06:00) Astana, Dhaka
				(GMT+06:00) Sri Jayawardenepura
				(GMT+06:30) Rangoon
				(GMT+07:00) Bangkok, Hanoi, Jakarta
				(GMT+07:00) Krasnoyarsk
				(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi
				(GMT+08:00) Irkutsk, Ulaan Bataar
				(GMT+08:00) Kuala Lumpur, Singapore
				(GMT+08:00) Perth
				(GMT+08:00) Taipei
				(GMT+09:00) Osaka, Sapporo, Tokyo
				(GMT+09:00) Seoul
				(GMT+09:00) Yakutsk
				(GMT+09:30) Adelaide
				(GMT+09:30) Darwin
				(GMT+10:00) Brisbane
				(GMT+10:00) Canberra, Melbourne, Sydney
				(GMT+10:00) Guam, Port Moresby
				(GMT+10:00) Hobart
				(GMT+10:00) Vladivostok
				(GMT+11:00) Magadan, Solomon Is., New Caledonia
				(GMT+12:00) Aukland, Wellington
				(GMT+12:00) Fiji, Kamchatka, Marshall Is.
				(GMT+13:00) Nuku'alofa"
    ::= { timeSetting 2 }

dayLightSavingTime	OBJECT IDENTIFIER ::= { timeSetting 3 }
clockSource			OBJECT IDENTIFIER ::= { timeSetting 4 }

-- -----------------------------------------------------------------------------
-- dayLightSavingTime
-- -----------------------------------------------------------------------------
daylightSavingTimeStart OBJECT-TYPE
	SYNTAX      DisplayString (SIZE(0..12))
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "The start-time of daylight saveing period,
	             in format mm.n.d/hh:mm
	             m is month, valid range 1-12 (1=January, 2=February, ..., 12=December).
	             n is week of the month (1 to 5, 5 means the last week).
	             d is weekday, valid range 0-6 (0=Sunday, 1=Monday, ..., 6=Saturday).
	             hh:mm is time."
	::= { dayLightSavingTime 1 }

daylightSavingTimeEnd OBJECT-TYPE
	SYNTAX      DisplayString (SIZE(0..12))
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "The end-time of daylight saveing period,
	             in format mm.n.d/hh:mm
	             m is month, valid range 1-12 (1=January, 2=February, ..., 12=December).
	             n is week of the month (1 to 5, 5 means the last week).
	             d is weekday, valid range 0-6 (0=Sunday, 1=Monday, ..., 6=Saturday).
	             hh:mm is time."
	::= { dayLightSavingTime 2 }

daylightSavingOffset OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "Daylight Saving Offset(Usually is 60 mins).
	             When Enable and current time at Daylight Saving Period,
	             the current time of the switch will be offseted by
	             Daylight Saving Offset."
	::= { dayLightSavingTime 3 }

daylightSavingTimeStatus OBJECT-TYPE
	SYNTAX      INTEGER {
	                enabled(1),
	                disabled(2)
	            }
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "(1)Enable Daylight Saving Time.
	             (2)Disable Daylight Saving Time.
	             Daylight Saving Time:
	             Use this OID to Enable/Disable Daylight Saving Time."
	::= { dayLightSavingTime 4 }

-- -----------------------------------------------------------------------------
-- clock source configuration
-- -----------------------------------------------------------------------------
clockSourceSelection OBJECT-TYPE
	SYNTAX      INTEGER {
					manual(1),
					ntp(2)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { clockSource 1 }

clockSourceManual	OBJECT IDENTIFIER ::= { clockSource 2 }
clockSourceNtp		OBJECT IDENTIFIER ::= { clockSource 3 }

-- -----------------------------------------------------------------------------
-- manual config
-- -----------------------------------------------------------------------------
clockSourceManualSetting OBJECT-TYPE
	SYNTAX      DisplayString (SIZE(0..19))
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "set system time, in format yyyy.mm.dd-hh:mm:ss"
	::= { clockSourceManual 1 }

-- -----------------------------------------------------------------------------
-- ntp 
-- -----------------------------------------------------------------------------

--ntpClientStatus OBJECT-TYPE
--        SYNTAX      INTEGER {
--                        enabled(1),
--                        disabled(2)
--                    }
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "(1)Enable SNTP clinet.
--                     (2)Disable SNTP clinet.
--                     SNTP is simple network time protocol.
--                     Use this OID to Enable/Disable SNTP client."
--        ::= { ntp 1 }

ntpTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NtpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about NTP 
                servers. 
                
                NTP (Network Time Protocol) synchronizes timekeeping among a 
                set of distributed time servers and clients. This synchronization 
                allows events to be correlated when system logs are created and 
                other time-specific events occur.

                An NTP server is configured to synchronize NTP clients. Servers 
                can be configured to synchronize any client or only specific 
                clients. NTP servers, however, will accept no synchronization 
                information from their clients and therefore will not let 
                clients update or affect the server's time settings.

                This switch acts as an NTP client, which tries to let its clock 
                be set and synchronized by an external NTP timeserver. It can be 
                configured to use multiple servers (upto 4 servers)."
    ::= { clockSourceNtp 1 }
                                                                                                                             
ntpEntry OBJECT-TYPE
    SYNTAX      NtpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information configuring IP addresses of NTP servers."
    INDEX       { ntpIndex }
    ::= { ntpTable 1 }
                                                                                                                             
NtpEntry ::= SEQUENCE {
    ntpIndex  		Integer32,
    ntpServerIP     IpAddress
}
                                                                                                                             
ntpIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This object identifies the entry."
    ::= { ntpEntry 1 }
                                                                                                                             
ntpServerIP OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of an NTP Server. Set 0.0.0.0 or 
                255.255.255.255 to remove this config."
    ::= { ntpEntry 2 }


-- -----------------------------------------------------------------------------
--dhcpServer
-- -----------------------------------------------------------------------------
dhcpServerEnable OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                } 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable or disable dhcp server function."
    ::= { dhcpServer 1 }

-- -----------------------------------------------------------------------------
--dhcpServerPoolTable
-- -----------------------------------------------------------------------------

dhcpServerPoolTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpServerPoolEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 DHCP server of the switch."
    ::= { dhcpServer 2 }

dhcpServerPoolEntry  OBJECT-TYPE
    SYNTAX      DhcpServerPoolEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing DHCP server information
                 of the switch. "
    INDEX       { dhcpServerPoolIndex }
    ::= { dhcpServerPoolTable 1 }

DhcpServerPoolEntry ::= SEQUENCE {
    dhcpServerPoolIndex	     Integer32,
    dhcpServerPoolName	     DisplayString,
    dhcpServerPoolNetwork    IpAddress,
    dhcpServerPoolSubMask    IpAddress,
    dhcpServerPoolGateway    IpAddress,
    dhcpServerPoolLeaseTime  Integer32,
    dhcpServerPoolStatus     RowStatus
}

dhcpServerPoolIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The index of the Address Pool."
    ::= { dhcpServerPoolEntry 1 }
    
dhcpServerPoolName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(1..20))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The address pool name."
    ::= { dhcpServerPoolEntry 2 }
    
dhcpServerPoolNetwork OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The Subnet of the IP Address Pool."
    ::= { dhcpServerPoolEntry 3 }
                                                                                                         
dhcpServerPoolSubMask OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The subnet mask of the IP Address Pool."
    ::= { dhcpServerPoolEntry 4 }
                                                                                                         
dhcpServerPoolGateway OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The gateway address of the IP Address Pool."
    ::= { dhcpServerPoolEntry 5 }
                                                                                                         
dhcpServerPoolLeaseTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The lease time(in second) of the Address Pool."
    ::= { dhcpServerPoolEntry 6 }

dhcpServerPoolStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of the Address Pool."
    ::= { dhcpServerPoolEntry 7 }

-- -----------------------------------------------------------------------------
--dhcpExcludedTable
-- -----------------------------------------------------------------------------

dhcpExcludedTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpExcludedEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 DHCP server of the switch."
    ::= { dhcpServer 3 }

dhcpExcludedEntry  OBJECT-TYPE
    SYNTAX      DhcpExcludedEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing DHCP server information
                 of the switch. "
    INDEX       { dhcpServerPoolIndex , dhcpExcludedIndex}
    ::= { dhcpExcludedTable 1 }

DhcpExcludedEntry ::= SEQUENCE {
    dhcpExcludedIndex	     Integer32,
    dhcpExcludedIp           IpAddress,
    dhcpExcludedStatus       RowStatus
}

dhcpExcludedIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The index of the Excluded Table."
    ::= { dhcpExcludedEntry 1 }

dhcpExcludedIp OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address ."
    ::= { dhcpExcludedEntry 2 }
                                                                                                         
dhcpExcludedStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of a address pool."
    ::= { dhcpExcludedEntry 3 }


-- -----------------------------------------------------------------------------
--dhcpManualBindingTable
-- -----------------------------------------------------------------------------

dhcpManualBindingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpManualBindingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 DHCP server of the switch."
    ::= { dhcpServer 4 }

dhcpManualBindingEntry  OBJECT-TYPE
    SYNTAX      DhcpManualBindingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing DHCP server information
                 of the switch. "
    INDEX       { dhcpServerPoolIndex,dhcpManualBindingIndex }
    ::= { dhcpManualBindingTable 1 }

DhcpManualBindingEntry ::= SEQUENCE {
    dhcpManualBindingIndex   Integer32,
    dhcpManualBindingIp      IpAddress,
    dhcpManualBindingMac     MacAddress,  
    dhcpManualBindingStatus  RowStatus
}

dhcpManualBindingIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The index of the Static Binding Table."
    ::= { dhcpManualBindingEntry 1 }
                                                                                                             
dhcpManualBindingIp OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address."
    ::= { dhcpManualBindingEntry 2 }

dhcpManualBindingMac OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The MAC address."
    ::= { dhcpManualBindingEntry 3 }
                                                                                     
dhcpManualBindingStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of the binding."
    ::= { dhcpManualBindingEntry 4 }

--  -----------------------------------------------------------------------------
-- dhcpStaticPortTable
--  -----------------------------------------------------------------------------
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.5
		dhcpStaticPortTable OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpStaticPortEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"Table of descriptive information and configuration about
				DHCP server of the switch."
			::= { dhcpServer 5 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.5.1
		dhcpStaticPortEntry OBJECT-TYPE
			SYNTAX DhcpStaticPortEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"An entry containing DHCP server information
				of the switch. "
			INDEX { dhcpServerPoolIndex, dhcpStaticPortIndex }
			::= { dhcpStaticPortTable 1 }

		
		DhcpStaticPortEntry ::=
			SEQUENCE { 
				dhcpStaticPortIndex
					Integer32,
				dhcpStaticPortNumber
					INTEGER,
				dhcpStaticPortIp
					IpAddress,
				dhcpStaticPortStatus
					RowStatus
			 }

		-- 1.3.6.1.4.1.24062.2.4.1.2.5.5.1.1
		dhcpStaticPortIndex OBJECT-TYPE
			SYNTAX Integer32
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The index of the StaticPort Table."
			::= { dhcpStaticPortEntry 1 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.5.1.2
		dhcpStaticPortNumber OBJECT-TYPE
			SYNTAX INTEGER
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The port number ."
			::= { dhcpStaticPortEntry 2 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.5.1.3
		dhcpStaticPortIp OBJECT-TYPE
			SYNTAX IpAddress
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The IP address ."
			::= { dhcpStaticPortEntry 3 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.5.1.4
		dhcpStaticPortStatus OBJECT-TYPE
			SYNTAX RowStatus
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The status of a static port entry."
			::= { dhcpStaticPortEntry 4 }

-- -----------------------------------------------------------------------------
--dhcpOption82Table
-- -----------------------------------------------------------------------------		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6
		dhcpOption82Table OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpOption82Entry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"DHCP server option82 table."
			::= { dhcpServer 6 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1
		dhcpOption82Entry OBJECT-TYPE
			SYNTAX DhcpOption82Entry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"DHCP server option82 entry."
			INDEX { dhcpServerPoolIndex, dhcpOption82Index }
			::= { dhcpOption82Table 1 }

		
		DhcpOption82Entry ::=
			SEQUENCE { 
				dhcpOption82Index
					Integer32,
				dhcpOption82CircuitIdType
					INTEGER,
				dhcpOption82CircuitIdValue
					OCTET STRING,
				dhcpOption82RemoteIdType
					INTEGER,
				dhcpOption82RemoteIdValue
					OCTET STRING,
				dhcpOption82Ip
					IpAddress,
				dhcpOption82Status
					RowStatus
			 }

		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.1
		dhcpOption82Index OBJECT-TYPE
			SYNTAX Integer32
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The index of the table."
			::= { dhcpOption82Entry 1 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.2
		dhcpOption82CircuitIdType OBJECT-TYPE
			SYNTAX INTEGER
				{
				any(0),
				string(2),
				hexadecimal(3)
				}
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The Circuit-ID type of this option."
			::= { dhcpOption82Entry 2 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.3
		dhcpOption82CircuitIdValue OBJECT-TYPE
			SYNTAX OCTET STRING
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The Circuit-ID value of this option."
			::= { dhcpOption82Entry 3 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.4
		dhcpOption82RemoteIdType OBJECT-TYPE
			SYNTAX INTEGER
				{
				any(0),
				string(2),
				hexadecimal(3)
				}
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The Remote-ID type of this option."
			::= { dhcpOption82Entry 4 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.5
		dhcpOption82RemoteIdValue OBJECT-TYPE
			SYNTAX OCTET STRING
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The Remote-ID value of this option."
			::= { dhcpOption82Entry 5 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.6
		dhcpOption82Ip OBJECT-TYPE
			SYNTAX IpAddress
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The IP Address bind to this option."
			::= { dhcpOption82Entry 6 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.6.1.7
		dhcpOption82Status OBJECT-TYPE
			SYNTAX RowStatus
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"he status of a static port entry."
			::= { dhcpOption82Entry 7 }

-- -----------------------------------------------------------------------------
--dhcpServerLeasedTable
-- -----------------------------------------------------------------------------

dhcpServerLeasedTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpServerLeasedEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 DHCP server of the switch."
    ::= { dhcpServer 7 }

dhcpServerLeasedEntry  OBJECT-TYPE
    SYNTAX      DhcpServerLeasedEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing DHCP server information
                 of the switch. "
    INDEX       { dhcpServerPoolIndex, dhcpServerLeasedIndex }
    ::= { dhcpServerLeasedTable 1 }

DhcpServerLeasedEntry ::= SEQUENCE {
    dhcpServerLeasedIndex  Integer32,
    dhcpServerLeasedIp     IpAddress,
    dhcpServerLeasedMac    MacAddress,
    dhcpServerLeasedType   INTEGER,
    dhcpServerLeasedTime   Integer32
}

dhcpServerLeasedIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The index of the Leased Table."
    ::= { dhcpServerLeasedEntry 1 }
                                                                                                             
dhcpServerLeasedIp OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The client IP address."
    ::= { dhcpServerLeasedEntry 2 }
                                                                                                         
dhcpServerLeasedMac OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The client MAC address."
    ::= { dhcpServerLeasedEntry 3 }

dhcpServerLeasedType OBJECT-TYPE
    SYNTAX      INTEGER {    
                    manual(1),
                    dynamic(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "."
    ::= { dhcpServerLeasedEntry 4 }
                                                                                                         
dhcpServerLeasedTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The lease time of the client."
    ::= { dhcpServerLeasedEntry 5 }


-- -----------------------------------------------------------------------------
--dhcpRelayAgent
-- -----------------------------------------------------------------------------

dhcpRelayAgentEnable OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                } 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable or disable dhcp relay agent function."
    ::= { dhcpServer 8 }

-- -----------------------------------------------------------------------------
--dhcpRelayAgentPolicy
-- -----------------------------------------------------------------------------

dhcpRelayAgentPolicy OBJECT-TYPE
    SYNTAX      INTEGER {
                    keep(1),
                    drop(2),
                    replace(3)
                } 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Keep(1): Keeps the original option 82 field and forwards to server
                 drop(2): Drops the option 82 field and do not add any option 82 field
                 replace(3): Replaces the existing option 82 field and adds new option 
                             82 field. (This is the default setting)"
    ::= { dhcpServer 9 }
    
-- -----------------------------------------------------------------------------
--dhcpRelayAgentCircuitIdTable
-- -----------------------------------------------------------------------------
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.10
		dhcpRelayAgentCircuitIdTable OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpRelayAgentCircuitIdEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"Description."
			::= { dhcpServer 10 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.10.1
		dhcpRelayAgentCircuitIdEntry OBJECT-TYPE
			SYNTAX DhcpRelayAgentCircuitIdEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"Description."
			INDEX { dhcpRelayAgentCircuitIdPortNum }
			::= { dhcpRelayAgentCircuitIdTable 1 }

		
		DhcpRelayAgentCircuitIdEntry ::=
			SEQUENCE { 
				dhcpRelayAgentCircuitIdPortNum
					Integer32,
				dhcpRelayAgentCircuitIdType
					Integer32,
				dhcpRelayAgentCircuitIdValue
					OCTET STRING,
				dhcpRelayAgentCircuitIdDisplay
					OCTET STRING
			 }

		-- 1.3.6.1.4.1.24062.2.4.1.2.5.10.1.1
		dhcpRelayAgentCircuitIdPortNum OBJECT-TYPE
			SYNTAX Integer32
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"Description."
			::= { dhcpRelayAgentCircuitIdEntry 1 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.10.1.2
		dhcpRelayAgentCircuitIdType OBJECT-TYPE
			SYNTAX Integer32 {
	                    default(0),
	                    string(2),
	                    hexadecimal(3)
	                }
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"Circuit-ID type of the Option82 added by Relay Agent."
			::= { dhcpRelayAgentCircuitIdEntry 2 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.10.1.3
		dhcpRelayAgentCircuitIdValue OBJECT-TYPE
			SYNTAX OCTET STRING
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"Circuit-ID value of the Option82 added by Relay Agent, the format
				can be String or Hexadecimal value."
			::= { dhcpRelayAgentCircuitIdEntry 3 }

		-- 1.3.6.1.4.1.24062.2.4.1.2.5.10.1.4
		dhcpRelayAgentCircuitIdDisplay OBJECT-TYPE
			SYNTAX OCTET STRING
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"Display the Circuit-ID value by Hexadecimal format"
			::= { dhcpRelayAgentCircuitIdEntry 4 }
		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.11
		dhcpRelayAgentRemoteIdType OBJECT-TYPE
			SYNTAX INTEGER {
	                    default(0),
	                    string(2),
	                    hexadecimal(3),
	                    ip(4)
	                }
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"Remote-ID type of the Option82 added by Relay Agent."
			::= { dhcpServer 11 }

		
		-- 1.3.6.1.4.1.24062.2.4.1.2.5.12
		dhcpRelayAgentRemoteIdValue OBJECT-TYPE
			SYNTAX OCTET STRING
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"Remote-ID value of the Option82 added by Relay Agent, the format
				can be String or Hexadecimal value."
			::= { dhcpServer 12 }

		-- 1.3.6.1.4.1.24062.2.4.1.2.5.13
		dhcpRelayAgentRemoteIdDisplay OBJECT-TYPE
			SYNTAX OCTET STRING
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"Remote-ID value of the Option82 added by Relay Agent."
			::= { dhcpServer 13 }
    
-- -----------------------------------------------------------------------------
--dhcpHelperAddrTable
-- -----------------------------------------------------------------------------

dhcpHelperAddressTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpHelperAddressEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 DHCP relay helper address of the switch."
			::= { dhcpServer 14 }

dhcpHelperAddressEntry  OBJECT-TYPE
    SYNTAX      DhcpHelperAddressEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing DHCP relay information
                 of the switch. "
    INDEX       { dhcpHelperAddress }
    ::= { dhcpHelperAddressTable 1 }

DhcpHelperAddressEntry ::= SEQUENCE {
    dhcpHelperAddress           IpAddress,

}

dhcpHelperAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address ."
    ::= { dhcpHelperAddressEntry 1 }




-- -----------------------------------------------------------------------------
-- backupAndRestore
-- -----------------------------------------------------------------------------

backupServerIP OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of a TFTP server to which a
                startup configuration can be uploaded."
    DEFVAL { '00000000'H }
    ::= { backupAndRestore  1 }

backupAgentBoardFwFileName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..80))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The filename to backup to."
    DEFVAL      { "Quagga.conf" }
    ::= { backupAndRestore  2 }

backupStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    notActive(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Setting this object to active(1) trigger the TFTP
                 upload action.
                 Setting this object to notActive(2) has no effect.
                 The system always returns the value notActive(2)
                 when this object is read."
    ::= { backupAndRestore  3 }

restoreServerIP OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of a TFTP server from which the
                startup configuration can be downloaded."
    DEFVAL { '00000000'H }
    ::= { backupAndRestore  4 }

restoreAgentBoardFwFileName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..80))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The file name to restore from."
    DEFVAL      { "Quagga.conf" }
    ::= { backupAndRestore  5 }

restoreStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    notActive(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Setting this object to active(1) trigger the TFTP
                 download action.
                 Setting this object to notActive(2) has no effect.
                 The system always returns the value notActive(2)
                 when this object is read."
    ::= { backupAndRestore  6 }

-- -----------------------------------------------------------------------------
-- tftpUpgrade
-- -----------------------------------------------------------------------------

tftpDownloadServerIP OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of a TFTP server where a firmware image can 
                be downloaded."
    DEFVAL      { '00000000'H } 
    ::= { tftpUpgrade  1 }

tftpDownloadAgentBoardFwFileName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..80))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The file name of the firmware to be downloaded."
    DEFVAL      { "firmware.bin" }
    ::= { tftpUpgrade  2 }

tftpDownloadStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    notActive(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Setting this object to active(1) trigger the TFTP
                 download action.
                 Setting this object to notActive(2) has no effect.
                 The system always returns the value notActive(2)
                 when this object is read."
    ::= { tftpUpgrade  3 }

-- -----------------------------------------------------------------------------
-- factoryDefault
-- -----------------------------------------------------------------------------

factoryDefaultActive OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    notActive(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Set to active(1) to reload factory default configuration.
                Reloading factory default will overwrite your current 
                configuration file with factocy default configuration while 
                current IP configuration is reserved.
                Please reboot the device to make factory default configuration 
                take effect.
                Set notActive(2) has no effect. The system always returns the 
                value notActive(2) when this object is read."
    ::= { factoryDefault 1 }

-- -----------------------------------------------------------------------------
-- systemReboot
-- -----------------------------------------------------------------------------

systemRebootActive OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    notActive(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Set active(1) to restart the device.
                Set to notActive(2) has no effect. The device always returns 
                the value notActive(2) when this object is read."
    DEFVAL      { notActive }
    ::= { systemReboot 1 }


-- -----------------------------------------------------------------------------
-- portConfiguration
-- -----------------------------------------------------------------------------

portControl      OBJECT IDENTIFIER ::= { portConfiguration 1 }
portStatus       OBJECT IDENTIFIER ::= { portConfiguration 2 }
rateLimiting     OBJECT IDENTIFIER ::= { portConfiguration 3 }
portTrunk        OBJECT IDENTIFIER ::= { portConfiguration 4 }

portCtrlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortCtrlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of information and configuration for each ports."
    ::= { portControl 1 }

portCtrlEntry OBJECT-TYPE
    SYNTAX      PortCtrlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing information and configuration for a port."
    INDEX       { portCtrlIndex }
    ::= { portCtrlTable 1 }

PortCtrlEntry ::= SEQUENCE {
    portCtrlIndex               INTEGER,
    portCtrlPortName            DisplayString,
    portCtrlPortStatus          INTEGER,
    portCtrlSpeedAndDuplex      INTEGER,
    portCtrlFlowControl         INTEGER,
    portCtrlPortDescription     DisplayString
}

portCtrlIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of the port control entry."
    ::= { portCtrlEntry 1 }

portCtrlPortName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..7))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The name of port."
    ::= { portCtrlEntry 2 }

portCtrlPortStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "To enable or disable of this port."
    ::= { portCtrlEntry 3 }

portCtrlSpeedAndDuplex OBJECT-TYPE
    SYNTAX      INTEGER {
                    autoNegotiation(1),
                    tenMbpsHalfDuplex(2),
                    tenMbpsFullDuplex(3),
                    hundredMbpsHalfDuplex(4),
                    hundredMbpsFullDuplex(5),                    
                    thousandMbpsFullDuplex(6)
                }
    MAX-ACCESS  read-write
    STATUS       current
    DESCRIPTION "Speed and duplex configuraion.

                Different speed and duplex modes are available. There are speeds:
                1000 megabits per second (Gigabit Ethernet), 100 megabits per 
                second (Fast Ethernet), and 10 megabits per second (Legacy 
                Ethernet). 
                
                Full-duplex allows packets to be transmitted in both directions 
                at the same time, while half-duplex allows a device to either 
                transmit or receive, but not both at the same time. Full-duplex
                may have double bandwidth than half-duplex.

                You can configure manually from the possible options, listed from
                best to worst:
                  1Gb full-duplex(6)                  
                  100Mb full-duplex(5)
                  100Mb half-duplex(4) 
                  10Mb full-duplex(3)
                  10Mb half-duplex(2) 
                
                Set to autoNegotiation(1) to allow the two interfaces on the link 
                to exchange the capabilities and characteristics of the each side, 
                and select the best operating mode automatically when a cable is 
                plugged in."
    ::= { portCtrlEntry 4 }

portCtrlFlowControl OBJECT-TYPE
    SYNTAX      INTEGER {
                    disable(1),
                    symmetric(2)
--                        asymmetric(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Flow control configuration.

                Flow control is used to throttle the throughput rate of an 
                end station to avoid dropping packets during network 
                congestion. If flow control mode is not set and if there is
                no packet buffer space available, the incoming packets are
                discarded.
                
                Symmetric Flow Control stops and restarts packet transmission
                by transmitting and receiving pause frames. When a port's 
                free buffer space is almost empty, the device send out a Pause
                frame to stop the remove node from sending more frames into 
                the switch. When congestion on the port is relieved, the device
                send out a Pause frame with pause time equal to zero, making
                the remove node resume transmission."
    DEFVAL      { disable }
    ::= { portCtrlEntry 5 }

portCtrlPortDescription OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..138))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The description of port."
    ::= { portCtrlEntry 6 }    

-- -----------------------------------------------------------------------------
-- portStatusTable
-- -----------------------------------------------------------------------------

portStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive and statistics information about 
                each ports."
    ::= { portStatus 1 }

portStatusEntry OBJECT-TYPE
    SYNTAX      PortStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing statistics information of a port."
    INDEX       { portStatusIndex }
    ::= { portStatusTable 1 }

PortStatusEntry ::= SEQUENCE {
    portStatusIndex             Integer32,
    portStatusType              INTEGER,
    portStatusLink              INTEGER,
    portStatusState             INTEGER,
    portStatusSpeedDuplex       INTEGER,
    portStatusFlowCtrl          INTEGER,
    sfpVender                   DisplayString,
    sfpWavelength               Integer32,
    sfpDistance                 Integer32
}

portStatusIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Index of port statistic table."
    ::= { portStatusEntry 1 }

portStatusType OBJECT-TYPE
    SYNTAX      INTEGER {
                    hundredBaseTX(1),
                    thousandBaseT(2),
                    hundredBaseFX(3),
                    thousandBaseSX(4),
                    thousandBaseLX(5),
                    other(6),
                    notPresent(7)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicates the type of the port."
    ::= { portStatusEntry 2 }

portStatusLink OBJECT-TYPE
    SYNTAX      INTEGER {
                    up(1),
                    down(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicate the link state of the port."
    ::= { portStatusEntry 3 }

portStatusState OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicate the state of the port."
    ::= { portStatusEntry 4 }

portStatusSpeedDuplex OBJECT-TYPE
    SYNTAX      INTEGER {
                    autoNegotiation(1),
                    tenMbpsHalfDuplex(2),
                    tenMbpsFullDuplex(3),
                    hundredMbpsHalfDuplex(4),
                    hundredMbpsFullDuplex(5),                    
                    thousandMbpsFullDuplex(6)
                }
    MAX-ACCESS  read-only
    STATUS       current
    DESCRIPTION "Indicate the speed and duplex mode of the port."
    ::= { portStatusEntry 5 }

portStatusFlowCtrl OBJECT-TYPE
    SYNTAX      INTEGER {
                    disable(1),
                    symmetric(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicate the flow control status of the port."
    ::= { portStatusEntry 6 }

sfpVender OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The vender name of the Small Form Pluggable (SFP) optical 
                transceiver module."
    ::= { portStatusEntry 7 }
        
sfpWavelength OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The wave length in nanometers (nm) of the Small Form 
                Pluggable (SFP) optical transceiver module."
    ::= { portStatusEntry 8 }
        
sfpDistance OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The maximum transimission distance in meters of the Small 
                Form Pluggable (SFP) optical transceiver module."
    ::= { portStatusEntry 9 }

-- -----------------------------------------------------------------------------
-- portSfpTable
-- -----------------------------------------------------------------------------
portSfpTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortSfpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about SFP"
    ::= { portStatus 2 }

portSfpEntry OBJECT-TYPE
    SYNTAX      PortSfpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing SFP information of a port."
    INDEX       { portSfpIndex }
    ::= { portSfpTable 1 }

PortSfpEntry ::= SEQUENCE {
    portSfpIndex         	Integer32,
    portSfpEject         	INTEGER,
    portSfpScan         	INTEGER,
    portSfpDdmStatus       	INTEGER,
    portSfpDdmTempatureCurrent  DisplayString,
    portSfpDdmTempatureRange  	DisplayString,
    portSfpDdmTxPowerCurrent  	DisplayString,
    portSfpDdmTxPowerRange  	DisplayString,
    portSfpDdmRxPowerCurrent  	DisplayString,
    portSfpDdmRxPowerRange  	DisplayString
}

portSfpIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Index of port SFP table."
    ::= { portSfpEntry 1 }

portSfpEject OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Eject SFP"
    ::= { portSfpEntry 2 }

portSfpScan OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Scan SFP"
    ::= { portSfpEntry 3 }

portSfpDdmStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
	DESCRIPTION "(1)Enable SFP digital diagnostic and monitoring.
	             (2)Disable SFP digital diagnostic and monitoring."
    ::= { portSfpEntry 4 }
    
portSfpDdmTempatureCurrent OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..15))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The current SFP Tempature of port."
    ::= { portSfpEntry 5 }    

portSfpDdmTempatureRange OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..31))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The range of SFP Tempature of port."
    ::= { portSfpEntry 6 }

portSfpDdmTxPowerCurrent OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..15))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The current SFP Transmitted Power of port."
    ::= { portSfpEntry 7 }

portSfpDdmTxPowerRange OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..31))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The range of SFP Transmitted Power of port."
    ::= { portSfpEntry 8 }
    
portSfpDdmRxPowerCurrent OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..15))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The current SFP Receiveed Power of port."
    ::= { portSfpEntry 9 }

portSfpDdmRxPowerRange OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..31))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The range of SFP Receiveed Power of port."
    ::= { portSfpEntry 10 }
    
-- -----------------------------------------------------------------------------
-- rateLimiting
-- -----------------------------------------------------------------------------

rateLimitingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RateLimitingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about 
                port rate limiting. You can set up bandwidth rate and packet 
                limitation type for each ports.

                Rate limiting is used to control the rate of traffic sent or 
                received on a network interface. For ingress rate limiting, 
                traffic that is less than or equal to the specified rate is 
                received, whereas traffic that exceeds the rate is dropped.
                For egress rate limiting, traffic that is less than or equal 
                to the specified rate is sent, whereas traffic that exceeds 
                the rate is dropped."
    ::= { rateLimiting 1 }

rateLimitingEntry OBJECT-TYPE
    SYNTAX      RateLimitingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing information and configuration about 
                port rate limiting."
    INDEX       { rateLimitingPortNum }
    ::= { rateLimitingTable 1 }

RateLimitingEntry ::= SEQUENCE {
    rateLimitingPortNum             Integer32,
    rateLimitingIngressLimitType    INTEGER,
    rateLimitingIngressRate         Integer32,
    rateLimitingEgressRate          Integer32
}

rateLimitingPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION "The port number."
    ::= { rateLimitingEntry 1 }

rateLimitingIngressLimitType OBJECT-TYPE
    SYNTAX      INTEGER {
                    all(1),
                    broadcastMulticastFloodedUnicast(2),
                    broadcastMulticast(3),
                    broadcastOnly(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The type of ingress packets to be filtered."
    ::= { rateLimitingEntry 2 }

rateLimitingIngressRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Ingress rate in Mbps, the rate range is from 1 Mbps to 100 Mbps
                 and zero means no limit."
    ::= { rateLimitingEntry 3 }

rateLimitingEgressRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Egress rate in Mbps, the rate range is from 1 Mbps to 100 Mbps
                 and zero means no limit. Egress rate limiting has effect on 
                 all types of packets, including unicast, multicast and 
                 broadcast packets."
    ::= { rateLimitingEntry 4 }

-- -----------------------------------------------------------------------------
-- portTrunk
-- -----------------------------------------------------------------------------

aggregatorSetting OBJECT IDENTIFIER ::= { portTrunk 1 }
aggregatorStatus  OBJECT IDENTIFIER ::= { portTrunk 2 }

-- -----------------------------------------------------------------------------
-- portTrunkAggregatorSettingTable
-- -----------------------------------------------------------------------------

portTrunkAggregatorSettingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortTrunkAggregatorSettingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                of each trunk group in this system.

                Link aggregation, or IEEE 802.3ad, is a method of combining 
                physical network links into a single logical link for 
                increased bandwidth. With Link aggregation we are able to 
                increase the capacity and availability of the communications 
                channel between devices (both switches and end stations) 
                using existing Fast Ethernet and Gigabit Ethernet technology. 
                Two or more Gigabit Ethernet connections are combined in 
                order to increase the bandwidth capability and to create 
                resilient and redundant links. A set of multiple parallel 
                physical links between two devices is grouped together to 
                form a single logical link. 

                Link Aggregation also provides load balancing where the 
                processing and communications activity is distributed across 
                the links in a trunk so that no single link is overwhelmed."
    ::= { aggregatorSetting 1 }

portTrunkAggregatorSettingEntry OBJECT-TYPE
    SYNTAX      PortTrunkAggregatorSettingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling aggregator configuration."
    INDEX       { portTrunkPortIndex }
    ::= { portTrunkAggregatorSettingTable 1 }


PortTrunkAggregatorSettingEntry ::= SEQUENCE {
    portTrunkPortIndex               INTEGER,
    portTrunkAggregatorGroupId       INTEGER,
    portTrunkAggregatorType          INTEGER
}

portTrunkPortIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The port number."
    ::= { portTrunkAggregatorSettingEntry 1 }

portTrunkAggregatorGroupId OBJECT-TYPE
    SYNTAX      INTEGER {
                    trunkGroup1(1),
                    trunkGroup2(2),
                    trunkGroup3(3),
                    trunkGroup4(4),
                    trunkGroup5(5),
                    none(6)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Trunk group Id. Upto 8 ports can be aggregated into 
                a group and 5 groups can be configured in the device."
    ::= { portTrunkAggregatorSettingEntry 2 }

portTrunkAggregatorType OBJECT-TYPE
    SYNTAX      INTEGER {
                    static(1),
                    lacp(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The Aggregator type. You can assign the aggregator staticly 
                by setting to static(1), or setting to lacp(2) to enable the 
                LACP protocol. 

                The Link Aggregation Control Protocol (LACP) is required for 
                dynamically exchanging configuration information between the 
                peer devices in order to automatically configure and maintain 
                link aggregation groups. The protocol is able to automatically 
                detect the presence and capabilities of other aggregation 
                capable devices, i.e. with LACP it is possible to specify which
                links in a system can be aggregated.

                This column has no effect if Group Id is set to none."
    ::= { portTrunkAggregatorSettingEntry 3 }

                                                                                                                                                                       
portTrunkAggregatorSettingApply OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),          -- state, read-write
                    notactive(2)        -- state, read-only
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "set active(1) to apply the configuration"
    ::= { aggregatorSetting 2 }


-- -----------------------------------------------------------------------------
-- portTrunkAggregatorStatusTable
-- -----------------------------------------------------------------------------

portTrunkAggregatorStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortTrunkAggregatorStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about trunk groups in 
                the device."
    ::= { aggregatorStatus 1 }

portTrunkAggregatorStatusEntry OBJECT-TYPE
    SYNTAX      PortTrunkAggregatorStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing information about current configuration 
                of trunk groups."
    INDEX       { portTrunkAggregatorGroupIndex }
    ::= { portTrunkAggregatorStatusTable 1 }

PortTrunkAggregatorStatusEntry ::= SEQUENCE {
    portTrunkAggregatorGroupIndex      INTEGER,
    portTrunkAggregatorGroupType       INTEGER,
    portTrunkAggregatorGroupMember     PortList,
    portTrunkAggregatorIndividual      PortList,
    portTrunkAggregatorLinkDown        PortList
}

portTrunkAggregatorGroupIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The trunk group identifier."
    ::= { portTrunkAggregatorStatusEntry 1 }

portTrunkAggregatorGroupType OBJECT-TYPE
    SYNTAX      INTEGER {
                    static(1),
                    lacp(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The Aggregator type. 
                (1) The trunk group is LACP disabled and configured staticly 
                    by administrator.
                (2) The trunk group is LACP enabled. "
    ::= { portTrunkAggregatorStatusEntry 2 }

portTrunkAggregatorGroupMember OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The ports are aggregated with other ports."
    ::= { portTrunkAggregatorStatusEntry 3 }

portTrunkAggregatorIndividual OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "A port is LACP enabled but not aggregated with other ports."
    ::= { portTrunkAggregatorStatusEntry 4 }

portTrunkAggregatorLinkDown OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The ports which are linked down."
    ::= { portTrunkAggregatorStatusEntry 5 }

-- -----------------------------------------------------------------------------
-- networkRedundancy
-- -----------------------------------------------------------------------------

-- superRing         OBJECT IDENTIFIER ::= { networkRedundancy 1 }
-- rstp              OBJECT IDENTIFIER ::= { networkRedundancy 2 }
-- bridgeInformation OBJECT IDENTIFIER ::= { networkRedundancy 3 }
redundantRing     OBJECT IDENTIFIER ::= { networkRedundancy 4 }
stp		  	OBJECT IDENTIFIER ::= { networkRedundancy 5 }
stpBridgeInformation    OBJECT IDENTIFIER ::= { networkRedundancy 6 }
mstp			OBJECT IDENTIFIER ::= { networkRedundancy 7 }
mstpBridgeInformation   OBJECT IDENTIFIER ::= { networkRedundancy 8 }


-- -----------------------------------------------------------------------------
-- superRing
-- -----------------------------------------------------------------------------


-- -----------------------------------------------------------------------------
-- redundantRingConfigTable
-- -----------------------------------------------------------------------------

redundantRingConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RedundantRingConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of configuration about redundancy protocol in the device."
    ::= { redundantRing 1 }

redundantRingConfigEntry OBJECT-TYPE
    SYNTAX      RedundantRingConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing information about current configuration 
                of rings."
    INDEX       { superRingConfigId }
    ::= { redundantRingConfigTable 1 }

RedundantRingConfigEntry ::= SEQUENCE {
    superRingConfigId			INTEGER,
    superRingStatus				RowStatus,
    superRingName				DisplayString,
    superRingConfigVersion		INTEGER,
    superRingDevicePriority    	INTEGER,
    superRingRingPort1	     	INTEGER,
    superRingRingPort2	     	INTEGER,
	superRingRingPort1PathCost 	INTEGER,
    superRingRingPort2PathCost 	INTEGER,
    superRingRapidDualHomingStatus	INTEGER
}

superRingConfigId OBJECT-TYPE
    SYNTAX      INTEGER(0..15)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Ring Id."
    ::= { redundantRingConfigEntry 1 }

superRingName OBJECT-TYPE
    SYNTAX      DisplayString 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Super Ring name."
    ::= { redundantRingConfigEntry 2 }

superRingConfigVersion OBJECT-TYPE
    SYNTAX      INTEGER {
                    superRing(1),
                    rapidSuperRing(2),
                    anyRing(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Super Ring funtion version selection.
    			Super Ring: Backward compatible with legacy super ring mechanism.
                            Note: This model supports v1 non-Redundancy Management mode only.
                Rapid Super Ring: New mechanism. The recovery time is less than 30ms.
                Any Ring:
                "
    --DEFVAL      { rapidSuperRing }
    ::= { redundantRingConfigEntry 3 }

superRingDevicePriority OBJECT-TYPE
    SYNTAX      INTEGER (0..255) 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Super Ring device priority setting."
    --DEFVAL      { 128 }
    ::= { redundantRingConfigEntry 4 }

superRingRingPort1 OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "RingPort1 should not equal to RingRort2."
    ::= { redundantRingConfigEntry 5 }

superRingRingPort2 OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "RingPort2 should not equal to RingRort1."
    ::= { redundantRingConfigEntry 6 }

superRingRingPort1PathCost OBJECT-TYPE
    SYNTAX      INTEGER(0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION ""
    --DEFVAL      { 128 }
    ::= {redundantRingConfigEntry 7 }

superRingRingPort2PathCost OBJECT-TYPE
    SYNTAX      INTEGER(0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION ""
    --DEFVAL      { 128 }
    ::= { redundantRingConfigEntry 8 }

superRingRapidDualHomingStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Rapid Dual Homing funtion status. 
                Rapid Dual Homing is a redundancy protocol, 
                which is compatible with RSTP.
                 (1) Rapid Dual Homing function is enabled.
                 (2) Rapid Dual Homing function is disabled."
    --DEFVAL      { disable }
    ::= { redundantRingConfigEntry 9 }

superRingStatus OBJECT-TYPE
    SYNTAX      RowStatus                 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Status of this ring."
    ::= { redundantRingConfigEntry 10 }


-- -----------------------------------------------------------------------------
-- redundantRingStatusTable
-- -----------------------------------------------------------------------------

redundantRingStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RedundantRingStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of status information about redundancy protocol in 
                the device."
    ::= { redundantRing 2 }

redundantRingStatusEntry OBJECT-TYPE
    SYNTAX      RedundantRingStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing information about current status 
                of rings."
    INDEX       { superRingStatusId }
    ::= { redundantRingStatusTable 1 }

RedundantRingStatusEntry ::= SEQUENCE {
    superRingStatusId					INTEGER,
    superRingVersion					INTEGER,
    superRingDeviceRole     			INTEGER,
    superRingRingPortList1				PortList,
    superRingRingPortList2              PortList,
    superRingRingStatus     			INTEGER,
    superRingRmMac						MacAddress,
    superRingBlockedPort				PortList,
    superRingRoleTransitionCount        Integer32,
    superRingRingStateTransitionCount   Integer32
}

superRingStatusId OBJECT-TYPE
    SYNTAX      INTEGER(0..15)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Ring Id."
    ::= { redundantRingStatusEntry 1 }

superRingVersion OBJECT-TYPE
    SYNTAX      INTEGER {
                    superRing(1),
                    rapidSuperRing(2),
                    anyRing(3),
                    notSupported(4)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Super Ring funtion version selection.
    			Super Ring: Backward compatible with legacy super ring mechanism.
                            Note: This model supports v1 non-Redundancy Management mode only.
                Rapid Super Ring: New mechanism. The recovery time is less than 30ms.
                Any Ring:
                Not Supported:"
    ::= { redundantRingStatusEntry 2 }

superRingDeviceRole OBJECT-TYPE
    SYNTAX      INTEGER { 
    				disabled(1),
                    rm(2),
                    non-RM(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Super Ring role status.
    			 (1) disabled.
                 (2) Redundancy manager.
                 (3) Non redundancy manager."
    ::= { redundantRingStatusEntry 3 }

superRingRingPortList1 OBJECT-TYPE
    SYNTAX      PortList 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Port list for ring port1."
    ::= { redundantRingStatusEntry 4 }
    
superRingRingPortList2 OBJECT-TYPE
    SYNTAX      PortList 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Port list for ring port2."
    ::= { redundantRingStatusEntry 5 }

superRingRingStatus OBJECT-TYPE
    SYNTAX      INTEGER {
    				disabled(1),
                    normal(2),
                    abnormal(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Super Ring ring status.
    			 (1) Disabled - The ring on this device is disabled.
                 (1) Normal - Ring is complete.
                 (2) Abnormal - Ring is not complete."
    ::= { redundantRingStatusEntry 6 }

superRingRmMac OBJECT-TYPE
    SYNTAX      MacAddress 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "RM mac address."
    ::= { redundantRingStatusEntry 7 }

superRingBlockedPort OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The blocked ports in ring Normal state."
    ::= { redundantRingStatusEntry 8 }

superRingRoleTransitionCount OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { redundantRingStatusEntry 9 }

superRingRingStateTransitionCount OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { redundantRingStatusEntry 10 }


-- -----------------------------------------------------------------------------
-- rstp
-- -----------------------------------------------------------------------------


-- -----------------------------------------------------------------------------
-- bridgeInformation
-- rstpRootBridgeInformationTable
-- -----------------------------------------------------------------------------


-- -----------------------------------------------------------------------------
-- stp
-- -----------------------------------------------------------------------------

stpModeStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    stp(1),
                    rstp(2),
                    mstp(3),
                    disabled(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable Spanning Tree protocol, Rapid Spanning Tree protocol, 
                or disable .
    
                Rapid Spanning Tree Algorithm and Protocol (RSTP) provides a 
                loop free topology for any LAN or bridged network. RSTP is an 
                evolution of the Spanning Tree Protocol (STP), and was 
                introduced in the extension IEEE 802.1w, and provides for 
                faster spanning tree convergence after a topology change."
    ::= { stp 1 }

stpBridgeAddress OBJECT-TYPE
    SYNTAX      DisplayString 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Bridge Address."
    ::= { stp 2 }

stpBridgePriority OBJECT-TYPE
    SYNTAX      Integer32  {
	                priority0(0),
	                priority4096(4096),
	                priority8192(8192),
			priority12288(12288),
			priority16384(16384),
			priority20480(20480),
			priority24576(24576),
			priority28672(28672),
			priority32768(32768),
			priority36864(36864),
			priority40960(40960),
			priority45056(45056),
			priority49152(49152),
			priority53248(53248),
			priority57344(57344),
			priority61440(61440)
	            }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "A value used to identify the root bridge. The bridge with
                the lowest value has the highest priority and is selected
                as the root. Enter a number 0 through 61440 in steps of
                4096. If you change the value, you must restart RSTP.
                This item can't be modified, if stpStatus was disabled."
    ::= { stp 3 }

stpMaxAge OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The number of seconds a bridge waits without receiving
                Spanning-Tree Protocol configuration messages before
                attempting a reconfiguration. Enter a number 6 through 40.
                Note: 2*(Forward Delay Time-1) should be greater than or
                equal to the Max Age. The Max Age should be greater than 
                or equal to 2*(Hello Time + 1).
                This item can't be modified, if stpStatus was disabled."
    ::= { stp 4 }

stpHelloTime  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The number of seconds between the transmission of
                 Spanning-Tree Protocol configuration messages.
                 Enter a number 1 through 10
                 Note: 2*(Forward Delay Time-1) should be greater than or
                 equal to the Max Age. The Max Age should be greater
                 than or equal to 2*(Hello Time + 1).
                 This item can't be modified, if stpStatus was disabled."
    ::= { stp 5 }

stpForwardDelayTime  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The number of seconds a port waits before changing
                from its Spanning-Tree Protocol learning and listening
                states to the forwarding state. Enter a number 4 through 30.
                Note:2*(Forward Delay Time-1) should be greater than or
                equal to the Max Age. The Max Age should be greater than 
                or equal to 2*(Hello Time + 1).
                This item can't be modified, if stpStatus was disabled."
    ::= { stp 6 }

-- -----------------------------------------------------------------------------
-- stpPerPortCfgTable
-- -----------------------------------------------------------------------------

stpPerPortCfgTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF StpPerPortCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 STP on each port."
    ::= { stp 7 }

stpPerPortCfgEntry OBJECT-TYPE
    SYNTAX      StpPerPortCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information configuring STP on a port."
    INDEX       { stpPerPortCfgPortNum }
    ::= { stpPerPortCfgTable 1 }

StpPerPortCfgEntry ::= SEQUENCE {
    stpPerPortCfgPortNum         Integer32,
    stpPerPortCfgStpState        INTEGER,
    stpPerPortCfgPathCost        Integer32,
    stpPerPortCfgPriority        Integer32,
    stpPerPortCfgLinkType        INTEGER,
    stpPerPortCfgEdgePort       INTEGER
}

stpPerPortCfgPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The port number."
    ::= { stpPerPortCfgEntry 1 }

stpPerPortCfgStpState OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable/Disable STP/RSTP/MSTP at this port. Disable STP state
  	            when connecting a device in order to avoid STP waiting periods."
    ::= { stpPerPortCfgEntry 2 }

stpPerPortCfgPathCost OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The cost of the path to the other bridge from this 
                transmitting bridge at the specified port. Enter a number from 
                1 through 200000000.
                (0 will auto set path cost to standard recommended value)"
    ::= { stpPerPortCfgEntry 3 }

stpPerPortCfgPriority OBJECT-TYPE
    SYNTAX      Integer32 {
                    priority0(0),
                    priority16(16),
		    priority32(32),
		    priority48(48),
		    priority64(64),
		    priority80(80),
		    priority96(96),
		    priority112(112),
		    priority128(128),
		    priority144(144),
		    priority160(160),
		    priority176(176),
		    priority192(192),
		    priority208(208),
		    priority224(224),
		    priority240(240)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Decide which port should be blocked by priority in LAN. Enter 
                a number from 0 through 240 in steps of 16."
    ::= { stpPerPortCfgEntry 4 }

stpPerPortCfgLinkType OBJECT-TYPE
    SYNTAX      INTEGER {
                    auto(1),
                    point2Point(2),
                    shared(3),
                    notSupport(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Some of the rapid state transactions that are
                possible within RSTP are dependent upon whether
                the Port concerned can only be connected to
                exactly one other Bridge(ie., it is served by a
                point-to-point LAN segment), or can be connected
                to two or more Bridges(i.e., it is served by a
                shared medium LAN segment).
                The adminPointToPointMAC allow the p2p status
                of the link to be manipulated adminitratively."
    ::= { stpPerPortCfgEntry 5 }

stpPerPortCfgEdgePort OBJECT-TYPE
    SYNTAX      INTEGER {
                    true(1),
                    false(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Present in implementations that support the
                identification of edge ports. All ports
                directly connected to end stations cannot
                create bridging loops in the network and can
                thus directly transition to forwarding,
                skipping the listening and learning stages."
    ::= { stpPerPortCfgEntry 6 }


-- -----------------------------------------------------------------------------
-- stpBridgeInformation
-- stpRootInformationTable
-- -----------------------------------------------------------------------------

stpRootInformationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF StpRootInformationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about root bridge
                 of rapid spanning tree in this system."
    ::= { stpBridgeInformation 1 }

stpRootInformationEntry OBJECT-TYPE
    SYNTAX      StpRootInformationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing information
                 about root bridge information of the STP."
    INDEX       { stpRootInformationIndex }
    ::= { stpRootInformationTable 1 }

StpRootInformationEntry ::= SEQUENCE {
    stpRootInformationIndex         Integer32,
    stpRootInformationRootAddress      DisplayString,
    stpRootInformationRootPriority  Integer32,
    stpRootInformationRootPort      DisplayString,
    stpRootInformationRootPathCost  Integer32,
    stpRootInformationMaxAge        Integer32,
    stpRootInformationHelloTime     Integer32,
    stpRootInformationForwardDelay  Integer32
}

stpRootInformationIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of root bridge information table."
    ::= { stpRootInformationEntry 1 }

stpRootInformationRootAddress OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Address."
    ::= { stpRootInformationEntry 2 }

stpRootInformationRootPriority OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Priority."
    ::= { stpRootInformationEntry 3 }

stpRootInformationRootPort  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..80))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Port."
    ::= { stpRootInformationEntry 4 }

stpRootInformationRootPathCost OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Path Cost."
    ::= { stpRootInformationEntry 5 }

stpRootInformationMaxAge  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Max Age."
    ::= { stpRootInformationEntry 6 }

stpRootInformationHelloTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Hello Time."
    ::= { stpRootInformationEntry 7 }

stpRootInformationForwardDelay  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Forward Delay Time."
    ::= { stpRootInformationEntry 8 }


-- -----------------------------------------------------------------------------
-- stpPerPortInfoTable
-- -----------------------------------------------------------------------------

stpPerPortInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF StpPerPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 rapid spanning tree (Per port)."
    ::= { stpBridgeInformation 2 }

stpPerPortInfoEntry OBJECT-TYPE
	SYNTAX      StpPerPortInfoEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "An entry in the table, containing inforamtion
	             about STP (Per port)."
	INDEX       { stpPerPortInfoPortNum }
    ::= { stpPerPortInfoTable 1 }

StpPerPortInfoEntry ::= SEQUENCE {
    stpPerPortInfoPortNum         Integer32,
    stpPerPortInfoRole            INTEGER,        
    stpPerPortInfoState           INTEGER,
    stpPerPortInfoPathCost        Integer32,
    stpPerPortInfoPriority        Integer32,
    stpPerPortInfoLinkType        INTEGER,
    stpPerPortInfoEdgePort        INTEGER
}

stpPerPortInfoPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION "Port number."
    ::= { stpPerPortInfoEntry 1 }
    
stpPerPortInfoRole OBJECT-TYPE
    SYNTAX      INTEGER {
                    root(1),    
                    alternated(2),
                    designated(3),
                    backup(4),
                    disabled(5),                    
                    nonStp(6),
                    unknown(7)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Descriptive information about RSTP switch port roles:
                 root(1)        A forwarding port that has been elected for 
                                the spanning-tree topology.    
                 alternate(2)   An alternate path to the root bridge. This 
                                path is different than using the root port. 
                 designated(3)  A forwarding port for every LAN segment. 
                 backup(4)      A backup/redundant path to a segment where 
                                another switch port already connects.                                
                 disabled(5)    RSTP is disabled on this port."

    ::= { stpPerPortInfoEntry 2 }
        
stpPerPortInfoState OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabled(1),
                    learning(2),
                    forwarding(3),
                    blocking(4),
                    unknown(5),
                    nonStp(6)                    
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION " "
    ::= { stpPerPortInfoEntry 3 }

    

stpPerPortInfoPathCost OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The cost of the path to the other bridge from
                 this transmitting bridge at the specified port.
                 Enter a number 1 through 200000000."
    ::= { stpPerPortInfoEntry 4 }

stpPerPortInfoPriority OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Decide which port should be blocked by priority
                in LAN. Enter a number 0 through 240 in steps of
                16."
    ::= { stpPerPortInfoEntry 5 }

stpPerPortInfoLinkType OBJECT-TYPE
    SYNTAX      INTEGER {
                    auto(1),
                    point2Point(2),
                    shared(3),
                    notSupport(4)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Some of the rapid state transactions that are
                 possible within RSTP are dependent upon whether
                 the Port concerned can only be connected to
                 exactly one other Bridge(ie., it is served by a
                 point-to-point LAN segment), or can be connected
                 to two or more Bridges(i.e., it is served by a
                 shared medium LAN segment).

                 The adminPointToPointMAC allow the p2p status
                 of the link to be manipulated adminitratively.

                 STP does not support this function."
    ::= { stpPerPortInfoEntry 6 }

stpPerPortInfoEdgePort OBJECT-TYPE
    SYNTAX      INTEGER {
                    true(1),
                    false(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Present in implementations that support the
                 identification of edge ports. All ports
                 directly connected to end stations cannot
                 create bridging loops in the network and can
                 thus directly transition to forwarding,
                 skipping the listening and learning stages."
    ::= { stpPerPortInfoEntry 7 }


---------------------------------------------------------------------------
-- mstp
---------------------------------------------------------------------------
mstpRegionName OBJECT-TYPE
    SYNTAX      DisplayString 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "MSTP region name."
    ::= { mstp 1 }

mstpRegionRevision OBJECT-TYPE
    SYNTAX      Integer32 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "MSTP region revision."
    ::= { mstp 2 }
        
-- -----------------------------------------------------------------------------
-- mstpPerInstCfgTable
-- -----------------------------------------------------------------------------

mstpPerInstCfgTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MstpPerInstCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 STP on each port."
    ::= { mstp 3 }

mstpPerInstCfgEntry OBJECT-TYPE
    SYNTAX      MstpPerInstCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information configuring MSTP on a instance."
    INDEX       { mstpPerInstCfgInstanceID }
    ::= { mstpPerInstCfgTable 1 }

MstpPerInstCfgEntry ::= SEQUENCE {
    mstpPerInstCfgInstanceID      Integer32,
    mstpPerInstCfgVlanGroup       DisplayString,
    mstpPerInstCfgInstancePriority        Integer32,
    mstpPerInstCfgStatus		  RowStatus
}

mstpPerInstCfgInstanceID OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The instance ID."
    ::= { mstpPerInstCfgEntry 1 }

mstpPerInstCfgVlanGroup OBJECT-TYPE
    SYNTAX      DisplayString 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "VLAN group of instance."
    ::= { mstpPerInstCfgEntry 2 }
    
mstpPerInstCfgInstancePriority OBJECT-TYPE
    SYNTAX      Integer32  {
	                priority0(0),
	                priority4096(4096),
	                priority8192(8192),
			priority12288(12288),
			priority16384(16384),
			priority20480(20480),
			priority24576(24576),
			priority28672(28672),
			priority32768(32768),
			priority36864(36864),
			priority40960(40960),
			priority45056(45056),
			priority49152(49152),
			priority53248(53248),
			priority57344(57344),
			priority61440(61440)
	            }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "A value used to identify the instance root. The instance with
                the lowest value has the highest priority and is selected
                as the root. Enter a number 0 through 61440 in steps of
                4096."
    ::= { mstpPerInstCfgEntry 3 }

mstpPerInstCfgStatus OBJECT-TYPE
    SYNTAX      RowStatus                 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Status of this Instance."
    ::= { mstpPerInstCfgEntry 4 }

-- -----------------------------------------------------------------------------
-- mstpPerPortCfgTable
-- -----------------------------------------------------------------------------

mstpPerPortCfgTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MstpPerPortCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 MSTP on each port."
    ::= { mstp 4 }

mstpPerPortCfgEntry OBJECT-TYPE
    SYNTAX      MstpPerPortCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information configuring MSTP on a port."
    INDEX       { mstpPerPortCfgIndex }
    ::= { mstpPerPortCfgTable 1 }

MstpPerPortCfgEntry ::= SEQUENCE {
    mstpPerPortCfgIndex		  Integer32,
    mstpPerPortCfgInstanceID      Integer32,
    mstpPerPortCfgPortNum         Integer32,
    mstpPerPortCfgPathCost        Integer32,
    mstpPerPortCfgPriority        Integer32,
    mstpPerPortCfgLinkType        INTEGER,
    mstpPerPortCfgEdgePort       INTEGER
}

mstpPerPortCfgIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The index of MstpPerPortCfgEntry."
    ::= { mstpPerPortCfgEntry 1 }

mstpPerPortCfgInstanceID OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The instance ID."
    ::= { mstpPerPortCfgEntry 2 }

mstpPerPortCfgPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The port number."
    ::= { mstpPerPortCfgEntry 3 }

mstpPerPortCfgPathCost OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The cost of the path to the other bridge from this 
                transmitting bridge at the specified port. Enter a number from 
                1 through 200000000.
                (0 will auto set path cost to standard recommended value)"
    ::= { mstpPerPortCfgEntry 4 }

mstpPerPortCfgPriority OBJECT-TYPE
    SYNTAX      Integer32 {
                    priority0(0),
                    priority16(16),
		    priority32(32),
		    priority48(48),
		    priority64(64),
		    priority80(80),
		    priority96(96),
		    priority112(112),
		    priority128(128),
		    priority144(144),
		    priority160(160),
		    priority176(176),
		    priority192(192),
		    priority208(208),
		    priority224(224),
		    priority240(240)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Decide which port should be blocked by priority in LAN. Enter 
                a number from 0 through 240 in steps of 16."
    ::= { mstpPerPortCfgEntry 5 }

mstpPerPortCfgLinkType OBJECT-TYPE
    SYNTAX      INTEGER {
                    auto(1),
                    point2Point(2),
                    shared(3),
                    notSupport(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Some of the rapid state transactions that are
                possible within RSTP are dependent upon whether
                the Port concerned can only be connected to
                exactly one other Bridge(ie., it is served by a
                point-to-point LAN segment), or can be connected
                to two or more Bridges(i.e., it is served by a
                shared medium LAN segment).
                The adminPointToPointMAC allow the p2p status
                of the link to be manipulated adminitratively."
    ::= { mstpPerPortCfgEntry 6 }

mstpPerPortCfgEdgePort OBJECT-TYPE
    SYNTAX      INTEGER {
                    true(1),
                    false(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Present in implementations that support the
                identification of edge ports. All ports
                directly connected to end stations cannot
                create bridging loops in the network and can
                thus directly transition to forwarding,
                skipping the listening and learning stages."
    ::= { mstpPerPortCfgEntry 7 }


-- -----------------------------------------------------------------------------
-- mstpBridgeInformation
-- mstpRootInformationTable
-- -----------------------------------------------------------------------------

mstpRootInformationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MstpRootInformationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about root bridge
                 of rapid spanning tree in this system."
    ::= { mstpBridgeInformation 1 }

mstpRootInformationEntry OBJECT-TYPE
    SYNTAX      MstpRootInformationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing information
                 about root bridge information of the MSTP."
    INDEX       { mstpRootInformationInstanceID }
    ::= { mstpRootInformationTable 1 }

MstpRootInformationEntry ::= SEQUENCE {
--    mstpRootInformationIndex         Integer32,
    mstpRootInformationInstanceID    Integer32,
    mstpRootInformationRootAddress   DisplayString,
    mstpRootInformationRootPriority  Integer32,
    mstpRootInformationRootPort      DisplayString,
    mstpRootInformationRootPathCost  Integer32,
    mstpRootInformationMaxAge        Integer32,
    mstpRootInformationHelloTime     Integer32,
    mstpRootInformationForwardDelay  Integer32
}

--mstpRootInformationIndex OBJECT-TYPE
--    SYNTAX      Integer32
--    MAX-ACCESS  not-accessible
--    STATUS      current
--    DESCRIPTION "Index of root bridge information table."
--    ::= { mstpRootInformationEntry 1 }
    
mstpRootInformationInstanceID OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The instance ID."
    ::= { mstpRootInformationEntry 1 }    

mstpRootInformationRootAddress OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Address."
    ::= { mstpRootInformationEntry 2 }

mstpRootInformationRootPriority OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Priority."
    ::= { mstpRootInformationEntry 3 }

mstpRootInformationRootPort  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..80))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Port."
    ::= { mstpRootInformationEntry 4 }

mstpRootInformationRootPathCost OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Root Path Cost."
    ::= { mstpRootInformationEntry 5 }

mstpRootInformationMaxAge  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Max Age."
    ::= { mstpRootInformationEntry 6 }

mstpRootInformationHelloTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Hello Time."
    ::= { mstpRootInformationEntry 7 }

mstpRootInformationForwardDelay  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Forward Delay Time."
    ::= { mstpRootInformationEntry 8 }


-- -----------------------------------------------------------------------------
-- mstpPerPortInfoTable
-- -----------------------------------------------------------------------------

mstpPerPortInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MstpPerPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 rapid spanning tree (Per port)."
    ::= { mstpBridgeInformation 2 }

mstpPerPortInfoEntry OBJECT-TYPE
	SYNTAX      MstpPerPortInfoEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "An entry in the table, containing information
	             about MSTP (Per port)."
	INDEX       { mstpPerPortInfoIndex }
    ::= { mstpPerPortInfoTable 1 }

MstpPerPortInfoEntry ::= SEQUENCE {
    mstpPerPortInfoIndex	   Integer32,
    mstpPerPortInfoInstanceID	   Integer32,	
    mstpPerPortInfoPortNum         Integer32,
    mstpPerPortInfoRole            INTEGER,    
    mstpPerPortInfoState           INTEGER,    
    mstpPerPortInfoPathCost        Integer32,
    mstpPerPortInfoPriority        Integer32,
    mstpPerPortInfoLinkType        INTEGER,
    mstpPerPortInfoEdgePort       INTEGER
}

mstpPerPortInfoIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The index of MstpPerPortInfoEntry."
    ::= { mstpPerPortInfoEntry 1 }

mstpPerPortInfoInstanceID OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The instance ID."
    ::= { mstpPerPortInfoEntry 2 }    

mstpPerPortInfoPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Port number."
    ::= { mstpPerPortInfoEntry 3 }

mstpPerPortInfoRole OBJECT-TYPE
    SYNTAX      INTEGER {
                    root(1),
                    alternate(2),
                    designated(3),
                    backup(4),
                    master(5),
                    disabled(6),
                    boundary(7),
                    unknown(8)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Descriptive information about MSTP switch port roles:
                 disabled(1)    MSTP is disabled on this port.
                 root(2)        A forwarding port that has been elected for 
                                the spanning-tree topology.
                 designated(3)  A forwarding port for every LAN segment. 
                 alternate(4)   An alternate path to the root bridge. This 
                                path is different than using the root port. 
                 backup(5)      A backup/redundant path to a segment where 
                                another switch port already connects."
    ::= { mstpPerPortInfoEntry 4 }  
  
mstpPerPortInfoState OBJECT-TYPE
    SYNTAX      INTEGER {
    		    disabled(1),
    		    listening(2),
    		    learning(3),
    		    forwarding(4),
    		    blocking(5),
    		    unknown(6)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION " "
    ::= { mstpPerPortInfoEntry 5 }

mstpPerPortInfoPathCost OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The cost of the path to the other bridge from
                 this transmitting bridge at the specified port.
                 Enter a number 1 through 200000000."
    ::= { mstpPerPortInfoEntry 6 }

mstpPerPortInfoPriority OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Decide which port should be blocked by priority
                in LAN. Enter a number 0 through 240 in steps of
                16."
    ::= { mstpPerPortInfoEntry 7 }

mstpPerPortInfoLinkType OBJECT-TYPE
    SYNTAX      INTEGER {
		      p2p-bound-stp(1),
		      p2p-bound-rstp(2),
		      p2p-bound-mstp(3),
		      p2p-internal-mstp(4),
		      shared-bound-stp(5),
		      shared-bound-rstp(6),
		      shared-bound-mstp(7),
		      shared-internal-mstp(8)	
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Some of the rapid state transactions that are
                 possible within MSTP are dependent upon whether
                 the Port concerned can only be connected to
                 exactly one other Bridge(ie., it is served by a
                 point-to-point LAN segment), or can be connected
                 to two or more Bridges(i.e., it is served by a
                 shared medium LAN segment).

                 The adminPointToPointMAC allow the p2p status
                 of the link to be manipulated adminitratively."
    ::= { mstpPerPortInfoEntry 8 }

mstpPerPortInfoEdgePort OBJECT-TYPE
    SYNTAX      INTEGER {
                    true(1),
                    false(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Present in implementations that support the
                 identification of edge ports. All ports
                 directly connected to end stations cannot
                 create bridging loops in the network and can
                 thus directly transition to forwarding,
                 skipping the listening and learning stages."
    ::= { mstpPerPortInfoEntry 9 }

    
---------------------------------------------------------------------------
-- vlan
---------------------------------------------------------------------------
vlanManagementVlan OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The VLAN from which managemnet traffic can access the device. 
                By default, VLAN 1 is management VLAN."
    DEFVAL      { 1 }
    ::= { vlan 1 }

-- vlanStatus OBJECT-TYPE
--    SYNTAX      INTEGER {
--                    disabled(1),
--                    ieee8021qVlan(2),
--                    portBasedVlan(3)
--                }
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION ""
--    ::= { vlan 2 }

ieee8021qVlan OBJECT IDENTIFIER ::= { vlan 2 }
-- portBasedVlan OBJECT IDENTIFIER ::= { vlan 4 }

-- -----------------------------------------------------------------------------
-- Vlan Port Configuration
-- -----------------------------------------------------------------------------
dot1qPortVlanTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot1qPortVlanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per port control and status information 
                for IEEE802.1Q VLAN configuration in the device."
    ::= { ieee8021qVlan 1 }

dot1qPortVlanEntry OBJECT-TYPE
    SYNTAX      Dot1qPortVlanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling IEEE802.1Q VLAN configuration for 
                a port on the device."
    INDEX       { dot1qPortIndex }
    ::= { dot1qPortVlanTable 1 }

Dot1qPortVlanEntry ::= SEQUENCE {
    dot1qPortIndex                      INTEGER,
    dot1qPvid                           INTEGER,
    dot1qPortAcceptableFrameTypes       INTEGER,
    dot1qPortIngressFiltering           INTEGER
}

dot1qPortIndex OBJECT-TYPE
    SYNTAX      INTEGER(1..10)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The port identifier."
    ::= { dot1qPortVlanEntry 1 }

dot1qPvid OBJECT-TYPE
    SYNTAX      INTEGER(1..4094)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The default Port VID, the VLAN ID assigned to an untagged 
                frame or a Priority-Tagged frame received on the port."
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.1.1"
    DEFVAL      { 1 }
    ::= { dot1qPortVlanEntry 2 }

dot1qPortAcceptableFrameTypes OBJECT-TYPE
    SYNTAX      INTEGER {
                    admitAll(1),
                    admitOnlyVlanTagged(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "When admitOnlyVlanTagged(2) the device will discard untagged 
                frames or Priority-Tagged only frames received on this port.  
                When admitAll(1), untagged frames or Priority-Tagged only
                frames received on this port will be accepted and assigned 
                the PVID for this frame. This control does not affect 
                VLAN independent BPDU frames, such as SuperRing, STP, GVRP 
                and LACP. It does affect VLAN dependent BPDU frames, such 
                as GMRP." 
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.1.3" 
    DEFVAL      { admitAll }
    ::= { dot1qPortVlanEntry 3 }

dot1qPortIngressFiltering OBJECT-TYPE
    SYNTAX      INTEGER {
                    true(1),
                    false(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "When true(1) the device will discard incoming frames whose
                VLAN classification do not include this port in its Member set. 
                When false(2), the port will accept all incoming frames 
                regardless its VLAN classification. 
                This control does not affect VLAN independent BPDU frames, 
                such as SuperRing, STP, GVRP and LACP. It does affect VLAN 
                dependent BPDU frames, such as GMRP." 
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.1.4" 
    DEFVAL      { false }
    ::= { dot1qPortVlanEntry 4 }


-- -----------------------------------------------------------------------------
-- Static VLAN Database
-- -----------------------------------------------------------------------------

dot1qVlanStaticTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot1qVlanStaticEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing configuration information for each VLAN 
                configured into the device by management. All entries are 
                permanent and will be restored after the device is reset.
                Upto 64 VLANs can be configured in this device.

                IEEE 802.1Q Virtual LANs (VLANs) allow a single physical LAN 
                to be partitioned into several smaller logical LANs. VLANs 
                limit the broadcast domain, improve security and performance 
                and are ideal for separating systems or departments from each 
                other."
--                The maximun number of VLAN supported by this device is 64."
    ::= { ieee8021qVlan 2 }

dot1qVlanStaticEntry OBJECT-TYPE
    SYNTAX      Dot1qVlanStaticEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Static information of a VLAN configured into the device by 
                management."
    INDEX       { dot1qVlanIndex }
    ::= { dot1qVlanStaticTable 1 }

Dot1qVlanStaticEntry ::= SEQUENCE {
    dot1qVlanIndex                  INTEGER,
    dot1qVlanStaticName             DisplayString,
    dot1qVlanStaticEgressPorts      PortList,
    dot1qVlanStaticUntaggedPorts    PortList,
    dot1qVlanStaticTaggedPorts      PortList, 
    dot1qVlanStaticRowStatus        RowStatus 
} 

dot1qVlanIndex OBJECT-TYPE
    SYNTAX      INTEGER(1..4094)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The VLAN Identifier (VID) refering to this VLAN. The valid 
                range is from 1 to 4094."
    ::= { dot1qVlanStaticEntry 1 }

dot1qVlanStaticName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..12))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "An administratively assigned string, which is used to identify 
                the VLAN."
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.2.1"
    ::= { dot1qVlanStaticEntry 2 }

dot1qVlanStaticEgressPorts OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The set of ports which are permanently configured to 
                transmitting traffic for this VLAN as either tagged or 
                untagged frames.
                
                Each octet within this value specifies a set of eight
                ports, with the first octet specifying ports 1 through
                8, the second octet specifying ports 9 through 16, etc.
                Within each octet, the most significant bit represents
                the lowest numbered port, and the least significant bit
                represents the highest numbered port.  Thus, each port
                of the bridge is represented by a single bit within the
                value of this object.  If that bit has a value of '1'
                then that port is included in the set of ports; the port
                is not included if its bit has a value of '0'.
                
                Changes to this object affect the per-port per-VLAN
                Registrar control for Registration Fixed for the
                relevant GVRP state machine on each port.
                
                A port may not be added in this set if it is already a 
                member of the set of ports in dot1qVlanForbiddenEgressPorts.  
                
                The default value of this object is a string of zeros, 
                indicating not fixed."
    ::= { dot1qVlanStaticEntry 3 }

dot1qVlanStaticUntaggedPorts OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The set of ports which are permanently configured to 
                transmitting traffic for this VLAN as untagged frames.
                
                Each octet within this value specifies a set of eight
                ports, with the first octet specifying ports 1 through
                8, the second octet specifying ports 9 through 16, etc.
                Within each octet, the most significant bit represents
                the lowest numbered port, and the least significant bit
                represents the highest numbered port.  Thus, each port
                of the bridge is represented by a single bit within the
                value of this object.  If that bit has a value of '1'
                then that port is included in the set of ports; the port
                is not included if its bit has a value of '0'.
                
                Changes to this object affect the per-port per-VLAN
                Registrar control for Registration Fixed for the
                relevant GVRP state machine on each port.
                
                The default value of this object for the default VLAN is a 
                portlist including all ports. There is no specified default 
                for other VLANs."
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.2.1"
    ::= { dot1qVlanStaticEntry 4 }

dot1qVlanStaticTaggedPorts OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The set of ports which are permanently configured to 
                transmitting traffic for this VLAN as tagged frames.
                
                Each octet within this value specifies a set of eight
                ports, with the first octet specifying ports 1 through
                8, the second octet specifying ports 9 through 16, etc.
                Within each octet, the most significant bit represents
                the lowest numbered port, and the least significant bit
                represents the highest numbered port.  Thus, each port
                of the bridge is represented by a single bit within the
                value of this object.  If that bit has a value of '1'
                then that port is included in the set of ports; the port
                is not included if its bit has a value of '0'.
                
                Changes to this object affect the per-port per-VLAN
                Registrar control for Registration Fixed for the
                relevant GVRP state machine on each port.
                
                The default value of this object for the default VLAN is a 
                portlist including all ports. There is no specified default 
                for other VLANs."
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.2.1"
    ::= { dot1qVlanStaticEntry 5 }

dot1qVlanStaticRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "This object is used to manage to creation and deletion of 
                a VLAN, and is used to indicate the status of this entry.
                
                To Creating and activate a VLAN, first select a unused VID for 
                dot1qVlanIndex and then set its dot1qVlanStaticRowStatus to 
                'createAndGo'. The VLAN will be created in the device without 
                tagged or untagged ports. A default VLAN name is assigned and
                the status is set to 'active'.
                
                To configure tagged and untagged port members of the VLAN, 
                assign appropriate of dot1qVlanStaticTaggedPorts and
                dot1qVlanStaticUntaggedPorts. A set operation takes effect
                on the device immediately.
                
                To delete a VLAN, select the VID for dot1qVlanIndex and set
                dot1qVlanStaticRowStatus to 'destory'. The row and the 
                corresponding VLAN configurarion will be removed from the 
                device. VLAN 1 is the default VLAN and can never be deleted. 
                All untagged traffic falls into this VLAN by default.
                
                'createAndWait', 'notInService', 'notReady' have no effects."
    ::= { dot1qVlanStaticEntry 6 }


--dot1qVlanForbiddenEgressPorts OBJECT-TYPE
--    SYNTAX      PortList
--    MAX-ACCESS  read-create
--    STATUS      current
--    DESCRIPTION
--        "The set of ports which are prohibited by management
--        from being included in the egress list for this VLAN.
--        Changes to this object that cause a port to be included
--        or excluded affect the per-port per-VLAN Registrar
--      control for Registration Forbidden for the relevant 
--      GVRP state machine on each port. A port may not be 
--      added in this set if it is already a member of the set 
--      of ports in dot1qVlanStaticEgressPorts. The default 
--      value of this object is a string of zeros of appropriate 
--      length, excluding all ports from the forbidden set." 
--  REFERENCE 
--      "IEEE 802.1Q/D11 Section 12.7.7.3, 11.2.3.2.3" 
--    ::= { dot1qVlanStaticEntry 5 }

-- -----------------------------------------------------------------------------
-- GVRP configration
-- -----------------------------------------------------------------------------
dot1qGvrp OBJECT IDENTIFIER ::= { ieee8021qVlan 3 }

dot1qGvrpStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable GVRP Protocol. "
    DEFVAL      { disabled }
    ::= { dot1qGvrp 1 }


dot1qPortGvrpTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot1qPortGvrpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per port control and status information 
                for GVRP configuration in the device."
    ::= { dot1qGvrp 2 }

dot1qPortGvrpEntry OBJECT-TYPE
    SYNTAX      Dot1qPortGvrpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling GVRP configuration for a port on the 
                device."
    INDEX       { dot1qPortGvrpIndex }
    ::= { dot1qPortGvrpTable 1 }

Dot1qPortGvrpEntry ::= SEQUENCE {
    dot1qPortGvrpIndex              INTEGER,
    dot1qPortGvrpStatus             INTEGER,
    -- dot1qPortGvrpRegistrationMode   INTEGER,
    dot1qPortGarpJoinTimer          TimeInterval,
    dot1qPortGarpLeaveTimer         TimeInterval,
    dot1qPortGarpLeaveAllTimer      TimeInterval
} 

dot1qPortGvrpIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The port identifier."
    ::= { dot1qPortGvrpEntry 1 }

dot1qPortGvrpStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The state of GVRP operation on this port.  The value enabled(1) 
                indicates that GVRP is enabled on this port, as long as 
                dot1qGvrpStatus is also enabled for this device. When disabled(2) 
                but dot1qGvrpStatus is still enabled for the device, GVRP is 
                disabled on this port: any GVRP packets received will be 
                silently discarded and no GVRP registrations will be propagated 
                from other ports.  This object affects all GVRP Applicant and
                Registrar state machines on this port.  A transition from 
                disabled(2) to enabled(1) will cause a reset of all GVRP state 
                machines on this port."
    DEFVAL      { enabled }
    ::= { dot1qPortGvrpEntry 2 }

-- dot1qPortGvrpRegistrationMode OBJECT-TYPE
--     SYNTAX      INTEGER {
--                    registrationFixed(1),
--                    registrationForbidden(2),
--                    registrationNormal(3)
--                }
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "Administrative controls"
--    ::= { dot1qPortGvrpEntry 3 }

dot1qPortGarpJoinTimer OBJECT-TYPE
    SYNTAX      TimeInterval
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The GARP Join timer, in centiseconds."
    DEFVAL      { 20 }
    ::= { dot1qPortGvrpEntry 3 }

dot1qPortGarpLeaveTimer OBJECT-TYPE
    SYNTAX      TimeInterval
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The GARP Leave time, in centiseconds."
    DEFVAL      { 60 }
    ::= { dot1qPortGvrpEntry 4 }

dot1qPortGarpLeaveAllTimer OBJECT-TYPE
    SYNTAX      TimeInterval
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The GARP LeaveAll time, in centiseconds."
    DEFVAL      { 1000 }
    ::= { dot1qPortGvrpEntry 5 }


-- -----------------------------------------------------------------------------
-- Vlan Current Configuration Table
-- -----------------------------------------------------------------------------

dot1qVlanCurrentTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot1qVlanCurrentEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing information about currently configured 
                VLANs, either by (local or network) management, or dynamically 
                created as a result of GVRP requests received."
    ::= { ieee8021qVlan 4 }

dot1qVlanCurrentEntry OBJECT-TYPE
    SYNTAX      Dot1qVlanCurrentEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information for a VLAN configured into the device by 
                (local or network) management, or dynamically created
                as a result of GVRP requests received."
    INDEX   { dot1qVlanCurrentIndex }
    ::= { dot1qVlanCurrentTable 1 }

Dot1qVlanCurrentEntry ::= SEQUENCE {
    dot1qVlanCurrentIndex           INTEGER,
    dot1qVlanCurrentEgressPorts     PortList,
    dot1qVlanCurrentUntaggedPorts   PortList,
    dot1qVlanStatus                 INTEGER
--    dot1qVlanPortFa1                VlanEgressMode,
--    dot1qVlanPortFa2                VlanEgressMode,
--    dot1qVlanPortFa3                VlanEgressMode,
--    dot1qVlanPortFa4                VlanEgressMode,
--    dot1qVlanPortFa5                VlanEgressMode,
--    dot1qVlanPortFa6                VlanEgressMode,
--    dot1qVlanPortFa7                VlanEgressMode,
--    dot1qVlanPortGi8                VlanEgressMode,
--    dot1qVlanPortGi9                VlanEgressMode,
--    dot1qVlanPortGi10               VlanEgressMode
}    

dot1qVlanCurrentIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The VLAN Identifier (VID) refering to this VLAN."
    ::= { dot1qVlanCurrentEntry 1 }

dot1qVlanCurrentEgressPorts OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The set of ports which are transmitting traffic for
                this VLAN as either tagged or untagged frames."
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.2.1"
    ::= { dot1qVlanCurrentEntry 2 }

dot1qVlanCurrentUntaggedPorts OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The set of ports which are transmitting traffic for
                this VLAN as untagged frames."
    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.2.1"
    ::= { dot1qVlanCurrentEntry 3 }

dot1qVlanStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    other(1),
                    permanent(2),
                    dynamicGvrp(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This object indicates the status of this entry.
	            other(1) - this entry is currently in use but the
	                conditions under which it will remain so differ
	                from the following values.
	            permanent(2) - this entry, corresponding to an entry
	                in dot1qVlanStaticTable, is currently in use and
	                will remain so after the next reset of the
	                device.  The port lists for this entry include
	                ports from the equivalent dot1qVlanStaticTable
	                entry and ports learnt dynamically.
	            dynamicGvrp(3) - this entry is currently in use
	                and will remain so until removed by GVRP. There 
	                is no static entry for this VLAN and it will be 
	                removed when the last port leaves the VLAN." 
    ::= { dot1qVlanCurrentEntry 4 }

-- dot1qVlanPortFa1  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa1."
--     ::= { dot1qVlanCurrentEntry 5 }
-- 
-- dot1qVlanPortFa2  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa2."
--     ::= { dot1qVlanCurrentEntry 6 }
-- 
-- dot1qVlanPortFa3  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa3."
--     ::= { dot1qVlanCurrentEntry 7 }
-- 
-- dot1qVlanPortFa4  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa4."
--     ::= { dot1qVlanCurrentEntry 8 }
-- 
-- dot1qVlanPortFa5  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa5."
--     ::= { dot1qVlanCurrentEntry 9 }
-- 
-- dot1qVlanPortFa6  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa6."
--     ::= { dot1qVlanCurrentEntry 10 }
-- 
-- dot1qVlanPortFa7  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Fa7."
--     ::= { dot1qVlanCurrentEntry 11 }
-- 
-- dot1qVlanPortGi8  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Gi8."
--     ::= { dot1qVlanCurrentEntry 12 }
-- 
-- dot1qVlanPortGi9  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Gi9."
--     ::= { dot1qVlanCurrentEntry 13 }
-- 
-- dot1qVlanPortGi10  OBJECT-TYPE
--     SYNTAX      VlanEgressMode
--     MAX-ACCESS  read-only
--     STATUS      current
--     DESCRIPTION "The vlan egress mode of port Gi10"
--     ::= { dot1qVlanCurrentEntry 14 }
-- 

---------------------------------------------------------------------------
-- dot1qTunnel/Q-in-Q
---------------------------------------------------------------------------
dot1qTunnel OBJECT IDENTIFIER ::= { ieee8021qVlan 5 }
dot1qTunnelEtherType OBJECT-TYPE
    SYNTAX 		OCTET STRING(SIZE (2))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "ethertype/TPID"
    DEFVAL      { '8100'H }
    ::= { dot1qTunnel 1 }

dot1qTunnelPortTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot1qTunnelPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per tunnel access or uplink port information in the device."
    ::= { dot1qTunnel 2 }

dot1qTunnelPortEntry OBJECT-TYPE
    SYNTAX      Dot1qTunnelPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling tunnel configuration for a port on the device."
    INDEX       { dot1qTunnelPortIndex }
    ::= { dot1qTunnelPortTable 1 }

Dot1qTunnelPortEntry ::= SEQUENCE {
    dot1qTunnelPortIndex            INTEGER,
    dot1qTunnelPortMode		    INTEGER
}

dot1qTunnelPortIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The port identifier."
    ::= { dot1qTunnelPortEntry 1 }

dot1qTunnelPortMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    normal(1),
                    access(2),
                    uplink(3),
                    uplink-add-pvid(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Tunnel mode controls"
    ::= { dot1qTunnelPortEntry 2 }

---------------------------------------------------------------------------
-- Private VLAN
---------------------------------------------------------------------------
privateVlan OBJECT IDENTIFIER ::= { vlan 3 }

privateVlanIdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PrivateVlanIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per Private VLAN ID information in the device."
    ::= { privateVlan 1 }

privateVlanIdEntry OBJECT-TYPE
    SYNTAX      PrivateVlanIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling Private VLAN ID configuration on the device."
    INDEX       { privateVlanId }
    ::= { privateVlanIdTable 1 }

PrivateVlanIdEntry ::= SEQUENCE {
    privateVlanId            INTEGER,
    privateVlanIdType	     INTEGER
}

privateVlanId OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The Private VLAN ID."
    ::= { privateVlanIdEntry 1 }

privateVlanIdType OBJECT-TYPE
    SYNTAX      INTEGER {
                    normal(1),
                    community(2),
                    isolated(3),
                    primary(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Private VLAN ID type controls"
    ::= { privateVlanIdEntry 2 }
    
privateVlanPortTable OBJECT-TYPE    
    SYNTAX      SEQUENCE OF PrivateVlanPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per Private VLAN Port information in the device."
    ::= { privateVlan 2 }

privateVlanPortEntry OBJECT-TYPE
    SYNTAX      PrivateVlanPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling Private VLAN Port configuration on the device."
    INDEX       { privateVlanPortIndex }
    ::= { privateVlanPortTable 1 }

PrivateVlanPortEntry ::= SEQUENCE {
    privateVlanPortIndex     INTEGER,
    privateVlanPortMode	     INTEGER
}

privateVlanPortIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The Private Port Index."
    ::= { privateVlanPortEntry 1 }

privateVlanPortMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    normal(1),
                    host(2),
                    promiscuous(3)                    
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Private VLAN Port mode controls"
    ::= { privateVlanPortEntry 2 }   
        
privateVlanHostAssociationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PrivateVlanHostAssociationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per Private VLAN host port association information in the device."
    ::= { privateVlan 3 }

privateVlanHostAssociationEntry OBJECT-TYPE
    SYNTAX      PrivateVlanHostAssociationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling Private VLAN host port association configuration on the device."
    INDEX       { privateVlanHostAssociationPortIndex }
    ::= { privateVlanHostAssociationTable 1 }

PrivateVlanHostAssociationEntry ::= SEQUENCE {
    privateVlanHostAssociationPortIndex 	INTEGER,
    privateVlanHostAssociationPrimaryVid	INTEGER,
    privateVlanHostAssociationSecondaryVid	INTEGER
}
    
privateVlanHostAssociationPortIndex OBJECT-TYPE
    SYNTAX      INTEGER(1..10)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The Private Host Port Index."
    ::= { privateVlanHostAssociationEntry 1 }    
    
privateVlanHostAssociationPrimaryVid OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Private VLAN host Port association primary VLAN ID. If enter 0 then clear setting."
    ::= { privateVlanHostAssociationEntry 2 }

privateVlanHostAssociationSecondaryVid OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Private VLAN host Port association secondary VLAN ID(isolated/community). If enter 0 then clear setting."
    ::= { privateVlanHostAssociationEntry 3 }
    
privateVlanMappingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PrivateVlanMappingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing per Private VLAN promiscuous port mapping information in the device."
    ::= { privateVlan 4 }

privateVlanMappingEntry OBJECT-TYPE
    SYNTAX      PrivateVlanMappingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information controlling Private VLAN promiscuous port mapping configuration on the device."
    INDEX       { privateVlanMappingPromiscuousPortIndex }
    ::= { privateVlanMappingTable 1 }

PrivateVlanMappingEntry ::= SEQUENCE {
    privateVlanMappingPromiscuousPortIndex  INTEGER,
    privateVlanMappingPrimaryVid			INTEGER,
    privateVlanMappingSecondaryVidList		DisplayString
}
    
privateVlanMappingPromiscuousPortIndex OBJECT-TYPE
    SYNTAX      INTEGER(1..10)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The Private Promiscuous Port Index."
    ::= { privateVlanMappingEntry 1 }    
    
privateVlanMappingPrimaryVid OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Private VLAN promiscuous Port mapping primary VLAN ID. If enter 0 then clear setting."
    ::= { privateVlanMappingEntry 2 }

privateVlanMappingSecondaryVidList OBJECT-TYPE
	SYNTAX      DisplayString (SIZE (0..64))
    ACCESS      read-write
    STATUS      current
    DESCRIPTION "Private VLAN promiscuous Port mapping secondary VLAN ID list. If enter zero-length string then clear setting."
    ::= { privateVlanMappingEntry 3 }
    
    

---------------------------------------------------------------------------
-- Port-based vlan
---------------------------------------------------------------------------
--portBasedVlanTable OBJECT-TYPE
--    SYNTAX      SEQUENCE OF PortBasedVlanEntry
--    MAX-ACCESS  not-accessible
--    STATUS      current
--    DESCRIPTION "A table containing per port control and status information 
--                for port-based VLAN configuration in the device."
--    ::= { portBasedVlan 1 }
--
--portBasedVlanEntry OBJECT-TYPE
--    SYNTAX      PortBasedVlanEntry
--    MAX-ACCESS  not-accessible
--    STATUS      current
--    DESCRIPTION "Information controlling port-based VLAN configuration for 
--                a port on the device."
--    INDEX       { portIndex }
--    ::= { portBasedVlanTable 1 }
--
--PortBasedVlanEntry ::= SEQUENCE {
--    portIndex             INTEGER,
--    portPvid              INTEGER,
--    portEgressPortList    PortList,
--    portEgressMode        INTEGER
--}
--
--portIndex OBJECT-TYPE
--    SYNTAX      INTEGER
--    MAX-ACCESS  read-only
--    STATUS      current
--    DESCRIPTION "The port identifier."
--    ::= { portBasedVlanEntry 1 }
--
--portPvid OBJECT-TYPE
--    SYNTAX      INTEGER(1..4094)
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "The default Port VID, the VLAN ID assigned to an untagged 
--                frame or a Priority-Tagged frame received on the port."
--    REFERENCE   "IEEE 802.1Q/D11 Section 12.10.1.1"
--    DEFVAL      { 1 }
--    ::= { portBasedVlanEntry 2 }
--
--portEgressPortList OBJECT-TYPE
--    SYNTAX      PortList
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "The ports to which a frame can egress from this port." 
--    ::= { portBasedVlanEntry 3 }
--
--portEgressMode OBJECT-TYPE
--    SYNTAX      INTEGER {
--                    untagged(1),
--                    tagged(2),
--                    unmodified(3)
--                }
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "To configure if the frames egress from this port will be 
--                add a 802.1Q vlan tag or not." 
--    DEFVAL      { untagged }
--    ::= { portBasedVlanEntry 4 }


-- -----------------------------------------------------------------------------
-- trafficPrioritization
-- -----------------------------------------------------------------------------

qosPolicy OBJECT-TYPE
    SYNTAX      INTEGER {
                    weighteRoundRobin-8-4-2-1(1),
                    strictPriority(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "(1)8,4,2,1 weight round robin scheme: the switch will follow 
                8:4:2:1 rate to process priority queue from Hi to lowest queue. 
                This approach prevents the lower priotiry packets from being 
                starved out with only a slight delay to the higher priority 
                packets.
                
                (2)Use the strict priority scheme: Queue with higher priority
                will always be process first, while queue with lower priority
                will only be processed when the higher priority queue is empty.
                This approach can cause the lower priorities the be startved 
                out preventing them from transmitting any packets, but it 
                ensures that all high priority packets serviced as soon as
                possible."
    ::= { trafficPrioritization 1 }

-- -----------------------------------------------------------------------------
-- port default cos table
-- -----------------------------------------------------------------------------
qosPortDefaultCosTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QosPortDefaultCosEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                port default cos value."
    ::= { trafficPrioritization 2 }

qosPortDefaultCosEntry OBJECT-TYPE
    SYNTAX      QosPortDefaultCosEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing inforamtion
                about port default cos value."
    INDEX       { qosPortNum }
    ::= { qosPortDefaultCosTable 1 }

QosPortDefaultCosEntry ::= SEQUENCE {
    qosPortNum                  Integer32,
    qosPortTrust                Integer32,
    qosPortDefaultCos           Integer32
}

qosPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Port number."
    ::= { qosPortDefaultCosEntry 1 }


qosPortTrust OBJECT-TYPE
    SYNTAX      Integer32 {
                    cos-only(1),
                    dscp-only(2),
                    cos-first(3),
                    dscp-first(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Two kinds of priority information are token into 
                consideration when a packet is processed. One is COS, 
                the IEEE 802.3ac tag containing IEEE 802.1p priority 
                information, and the other is DSCP, the IPv4 Type of 
                Service/DiffServ field. 
                 (1)COS only: the port priority will only follow the 
	                COS priority that you have assigned.
                 (2)DSCP only:  the port priority will only follow the 
                    DSCP priority that you have assigned.
                 (3)COS first: the port priority will follow the COS 
 	                priority first, and then other priority rule.
                 (4)DSCP first: the port priority will follow the DSCP 
	                priority first, and the other priority rule."
    DEFVAL      { cos-first }
    ::= { qosPortDefaultCosEntry 2 }

qosPortDefaultCos OBJECT-TYPE
    SYNTAX      Integer32(0..7)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The port priority will follow the default port priority"
    ::= { qosPortDefaultCosEntry 3 }


-- -----------------------------------------------------------------------------
-- COS mapping table
-- -----------------------------------------------------------------------------

qosCOSTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QosCOSEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 COS QOS."
    ::= { trafficPrioritization 3 }

qosCOSEntry OBJECT-TYPE
    SYNTAX      QosCOSEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing inforamtion about COS QOS."
    INDEX       { qosCOSPriority }
    ::= { qosCOSTable 1 }

QosCOSEntry ::= SEQUENCE {
    qosCOSPriority   Integer32,
    qosCOS           INTEGER
}

qosCOSPriority OBJECT-TYPE
    SYNTAX      Integer32(0..7)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "COS priority."
    ::= { qosCOSEntry 1 }

qosCOS OBJECT-TYPE
    SYNTAX      INTEGER {
                    low(0),
                    middle(1),
                    high(2),
                    highest(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The port priority will follow the COS priority 
                that you have assigned (0)low, (1)middle, (2)high, 
                or (3)highest."
    ::= { qosCOSEntry 2 }


-- -----------------------------------------------------------------------------
-- DSCP mapping table
-- -----------------------------------------------------------------------------

qosDscpTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QosDscpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration about
                 DSCP QOS."
    ::= { trafficPrioritization 4 }

qosDscpEntry OBJECT-TYPE
    SYNTAX      QosDscpEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing inforamtion
                 about DSCP QOS."
    INDEX       { qosDscpPriority }
    ::= { qosDscpTable 1 }

QosDscpEntry ::= SEQUENCE {
    qosDscpPriority   Integer32,
    qosDscp           INTEGER
}

qosDscpPriority OBJECT-TYPE
    SYNTAX      Integer32(0..63)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Dscp priority."
    ::= { qosDscpEntry 1 }

qosDscp OBJECT-TYPE
    SYNTAX      INTEGER {
                    low(0),
                    middle(1),
                    high(2),
                    highest(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The port priority will follow the Dscp priority 
                that you have assigned
                (0)low (1)middle, (2)high, (3)highest."
    ::= { qosDscpEntry 2 }

-- -----------------------------------------------------------------------------
-- multicastFiltering
-- -----------------------------------------------------------------------------

igmpQuery       OBJECT IDENTIFIER ::= { multicastFiltering 1 }
igmpSnooping    OBJECT IDENTIFIER ::= { multicastFiltering 2 }
unknownMulticast  OBJECT IDENTIFIER ::= { multicastFiltering 3 }

-- -----------------------------------------------------------------------------
-- IGMP Query
-- -----------------------------------------------------------------------------

igmpQueryVersion OBJECT-TYPE
    SYNTAX      INTEGER {
                    version1(1),
                    version2(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "(1)IGMP Query version 1.
                 (2)IGMP Query version 2."
    ::= { igmpQuery 1 }

igmpQueryStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "(1)enable IGMP Query on management vlan.
                 (2)disable IGMP Query."
    ::= { igmpQuery 2 }

igmpQueryInterval OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The interval between General Queries sent
                by this Querier in seconds."
    DEFVAL      { 125 }
    ::= { igmpQuery 3 }
                       
igmpQueryMaxResponseTime OBJECT-TYPE
    SYNTAX      Integer32 (1..25)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Max Respocse Time is meaningful only in
                Membership Query messages, and specifies
                the maximum allowed time before sending 
                a responding report in seconds."
    DEFVAL      { 10 }
    ::= { igmpQuery 4 }   
    
--igmpQueryStatus OBJECT-TYPE
--    SYNTAX      INTEGER {
--                    auto(1),
--                    enabled(2),
--                    disabled(3)
--                }
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "(1)Detect querier automatically.
--                 (2)Force to be a querier.
--                 (3)Be a silence snooper.
--                 The mode of querier."
--    ::= { igmpQuery 1 }

--igmpQueryTable OBJECT-TYPE
--  SYNTAX      SEQUENCE OF IgmpQueryEntry
--  MAX-ACCESS  not-accessible
--  STATUS      current
--  DESCRIPTION "Table of descriptive information about IGMP query."
--  ::= { igmpQuery 2 }
    
--igmpQueryEntry OBJECT-TYPE
--  SYNTAX      IgmpQueryEntry
--  MAX-ACCESS  not-accessible
--  STATUS      current
--  DESCRIPTION "An entry in the table, containing inforamtion
--               about IGMP query."
--  INDEX       { igmpQueryEntryVID }
--  ::= { igmpQueryTable 1 }

--IgmpQueryEntry ::= SEQUENCE {
--      igmpQueryEntryVID       INTEGER,
--      igmpQueryEntryStatus    INTEGER
--  }

--igmpQueryEntryVID OBJECT-TYPE
--    SYNTAX      INTEGER
--    MAX-ACCESS  read-only
--    STATUS      current
--    DESCRIPTION 
--      "The vlan id where igmp snooping to be configured"
--  ::= { igmpQueryEntry 1 }  

--igmpQueryEntryStatus OBJECT-TYPE
--    SYNTAX      INTEGER {
--                    auto(1),
--                    enabled(2),
--                    disabled(3)
--                }
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION 
--      "The state of igmp Query operation on the vlan
--          (1)Detect querier automatically.
--            (2)Force to be a querier.
--            (3)Be a silence snooper.
--      (1) and (2) indicates that igmp Query is enabled on this 
--      vlan, as long as igmpQueryStatus is also enabled for this 
--      device. When disabled(3) but igmpQueryStatus is still 
--      enabled for the device, igmp Query is disabled on this vlan."
--    DEFVAL      { 1 }
--  ::= { igmpQueryEntry 2 }        


-- -----------------------------------------------------------------------------
-- IGMP Snooping
-- -----------------------------------------------------------------------------
igmpSnoopingStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter to enable or disable IGMP snooping on the device.
                When enabled, the device will examine IGMP packets and set
                up filters for multicast traffic.
        
		        The Internet Group Management Protocol (IGMP) is an internal
		        protocol of the Internet Protocol (IP) suite. IP manages
		        multicast traffic by using switches, routers, and hosts that
		        support IGMP. Enabling IGMP makes the device to gather 
		        multicast group membership information by snooping IGMP
		        packets, which helps the device switch IP multicast traffic
                to the ports where group members exist instead of flooding the 
                traffic to every ports. 

                IGMP have three fundamental types of message as follows:
		        
		        Message  Description
		        --------------------------------------------------------------
		        Query    A message sent from the querier (IGMP router or switch)
		                 asking for responses from each host belonging to a
		                 multicast group.
		        
		        Report   A message sent by a host to the querier to indicate
		                 that the host wants to be or is a member of a given
		                 group indicated in the report message.
		        
		        Leave    A message sent by a host to the querier to indicate
		                 that the host has quit to be a member for a specific
		                 multicast group.

                The IGMP snooping functionality is configured on a vlan basis. 
                To enable or disable IGMP snooping on vlans:
                1. set igmpSnoopingStatus to enable(1) or disable(2).
                2. specify on which vlan IGMP snooping works by configuring
                   each entries in the igmpSnoopingTable.

                As a result, you can turn on or off IGMP snooping functionality 
                by setting igmpSnoopingStatus while keeping the configuration 
                for each vlan. Or you can turn on or off IGMP snooping for a 
                specific vlan in igmpSnoopingTable with the statuses on other 
                vlan untouched."
    ::= { igmpSnooping 1 }


-- -----------------------------------------------------------------------------
-- igmpSnoopingTable
-- -----------------------------------------------------------------------------
igmpSnoopingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF IgmpSnoopingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about on which vlan is IGMP 
                snooping enabled."
    ::= { igmpSnooping  2 }
    
igmpSnoopingEntry OBJECT-TYPE
    SYNTAX      IgmpSnoopingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Inforamtion enabling or disabling IGMP snooping on a vlan."
    INDEX       { igmpSnoopingEntryVID }
    ::= { igmpSnoopingTable 1 }

IgmpSnoopingEntry ::= SEQUENCE {
    igmpSnoopingEntryVID    INTEGER,
    igmpSnoopingEntryStatus INTEGER
}

igmpSnoopingEntryVID OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The vlan id."
    ::= { igmpSnoopingEntry 1 }  

igmpSnoopingEntryStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The state of igmp snooping functionality on a vlan. 
                Set to enabled(1) indicates that igmp snooping is enabled on 
                the vlan. When igmpSnoopingStatus is also turned on, each IGMP
                packets on the vlan will be processed.
                When disabled(2) with  igmpSnoopingStatus enabled, igmp packets 
                will not be processed and be propagated to other member ports 
                of the vlan. 
                A transition from disabled(2) to enabled(1) will cause a reset 
                of all igmp snooping information on this vlan."
    DEFVAL      { 2 }
    ::= { igmpSnoopingEntry 2 }     

-- -----------------------------------------------------------------------------
-- igmpSnoopingGroupTable
-- ----------------------------------------------------------------------------- 
igmpSnoopingGroupTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF IgmpSnoopingGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about IGMP snooped multicast 
                groups."
    ::= { igmpSnooping  3 }

igmpSnoopingGroupEntry OBJECT-TYPE
    SYNTAX      IgmpSnoopingGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information containing a multicast group and its member ports."
    INDEX       { igmpSnoopingGroupEntryVID, igmpSnoopingGroupEntryIPAddr }
    ::= { igmpSnoopingGroupTable 1 }

IgmpSnoopingGroupEntry ::= SEQUENCE {
    igmpSnoopingGroupEntryVID      INTEGER,
    igmpSnoopingGroupEntryIPAddr   IpAddress,
    igmpSnoopingGroupEntryMembers  PortList
}

igmpSnoopingGroupEntryVID OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The VLAN ID of an IGMP entry."
    ::= { igmpSnoopingGroupEntry 1 }

igmpSnoopingGroupEntryIPAddr  OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The multicast group IP address."
    ::= { igmpSnoopingGroupEntry 2 }

igmpSnoopingGroupEntryMembers OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The member ports of the group."
    ::= { igmpSnoopingGroupEntry 3 }

-- -----------------------------------------------------------------------------
-- unknownMulticast
-- -----------------------------------------------------------------------------

unknownMulticastStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    source-only-learning(1),
                    discard(2),
                    flood(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select IGMP Unknown Multicast policy.
                 (1) Send to Query Ports: The device sends the packets with 
                     an unknown MAC/IP Multicast address to query ports
                 (2) Discard: The device discards all packets with an unknown 
                     MAC/IP Multicast address.
                 (3) Send to All Ports: The device sends the packets with 
                     an unknown MAC/IP Multicast address to all ports. "
    DEFVAL      { 3 }
    ::= { unknownMulticast 1 }

-- -----------------------------------------------------------------------------
-- snmp
-- -----------------------------------------------------------------------------

-- To be available in pharse II
--snmpAgentMode OBJECT-TYPE
--        SYNTAX      INTEGER {
--                        v1v2Conly(1),
--                        v3(2),
--                        v1v2Cv3(3)
--                    }
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "The Agent mode of snmp agent.
--                     (1) SNMPV1/V2C Only.
--                     (2) SNMPV3.
--                     (3) SNMPV1/V2C/V3"
--        ::= { snmp 1 }

--snmpSystemName OBJECT-TYPE
--        SYNTAX      DisplayString (SIZE(0..64))
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "The system name."
--        ::= { snmp 2 }

--snmpSystemLocation OBJECT-TYPE
--        SYNTAX      DisplayString (SIZE(0..64))
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "The system location."
--        ::= { snmp 3 }

--snmpSystemContact OBJECT-TYPE
--        SYNTAX      DisplayString (SIZE(0..64))
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "The contact information of system."
--        ::= { snmp 4 }

-- -----------------------------------------------------------------------------
-- snmpCommunityStringTable
-- -----------------------------------------------------------------------------

snmpCommunityStringTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SnmpCommunityStringEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of information configuring community strings of 
                SNMP agent.

                An SNMP community string is a text string that acts as 
                a password. It is used to authenticate messages that 
                are sent between the management station (the SNMP manager) 
                and the device (the SNMP agent). The community string is 
                included in every packet that is transmitted between the 
                SNMP manager and the SNMP agent. 

                After receiving an SNMP request, the SNMP agent compares 
                the community string in the request to the community 
                strings that are configured for the agent. The requests 
                are valid under these circumstances: 

                - Only SNMP Get and Get-next requests are valid if the 
                  community string in the request matches the read-only 
                  community. 

                - SNMP Get, Get-next, and Set requests are valid if the 
                  community string in the request matches the agent's 
                  read-write community.

                By default, 'public' is the read-only community and 
                'private' is the read-write community. Total 4 community
                strings are allowed to configure in the device."
    ::= { snmp 1 }

snmpCommunityStringEntry OBJECT-TYPE
    SYNTAX      SnmpCommunityStringEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Inforamtion configuring an community string."
    INDEX       { snmpCommunityStringIndex }
    ::= { snmpCommunityStringTable 1 }

SnmpCommunityStringEntry ::= SEQUENCE {
    snmpCommunityStringIndex      Integer32,
    snmpCommunityStringName       DisplayString,
    snmpCommunityStringPrivilege  INTEGER,
    snmpCommunityStringStatus     INTEGER
}

snmpCommunityStringIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of community string."
    ::= { snmpCommunityStringEntry 1 }

snmpCommunityStringName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "A community string with maximum 32 characters."
    ::= { snmpCommunityStringEntry 2 }

snmpCommunityStringPrivilege OBJECT-TYPE
    SYNTAX      INTEGER {
                    ro(1),
                    rw(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The access privilege of the community string."
    ::= { snmpCommunityStringEntry 3 }

snmpCommunityStringStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of this entry. Set to (5)createAndWait
                to create a new entry. A new entry or an active 
                entry can be edited. Once an entry is modified,
                its status becomes (3)notReady. Set to (1)active
                to apply the modification to the switch. An entry
                can be removed by setting to (6)destory."
    ::= { snmpCommunityStringEntry 4 }


-- -----------------------------------------------------------------------------
-- snmpV3UserTable
-- -----------------------------------------------------------------------------

snmpV3UserTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SnmpV3UserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive and information about trap servers.
                A trap server is the recipient of an SNMP trap. The device 
                does not send a trap unless it knows to which station it 
                should send a trap."
    ::= { snmp 2 }

snmpV3UserEntry OBJECT-TYPE
    SYNTAX      SnmpV3UserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing inforamtion about a 
                trap server of SNMP agent."
    INDEX       { snmpTrapServerIndex }
    ::= { snmpV3UserTable 1 }

SnmpV3UserEntry ::= SEQUENCE {
    snmpV3UserIndex     		Integer32,
    snmpV3UserName				DisplayString,
    snmpV3UserSecurityLevel		INTEGER,
    snmpV3UserAuthProtocol      INTEGER,
    snmpV3UserAuthPassword      DisplayString,
    snmpV3UserDesPassword       DisplayString,
    snmpV3UserStatus            RowStatus
}

snmpV3UserIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of snmp v3 user."
    ::= { snmpV3UserEntry 1 }

snmpV3UserName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION ""
    ::= { snmpV3UserEntry 2 }

snmpV3UserSecurityLevel OBJECT-TYPE
    SYNTAX      INTEGER {
    				noauth(1),
    				auth(2),
    				priv(3)
    			}
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Specifiy the authentication and privacy level
                 - noauth(1) no authentication and no privacy.
                 - auth(2)   enables MD5 or SHA packet authentication.
                 - priv(3)   enables MD5 or SHA packet authentication
                             and DES packet encryption."
    ::= { snmpV3UserEntry 3 }

snmpV3UserAuthProtocol OBJECT-TYPE
    SYNTAX      INTEGER {
    				none(1),
                    md5(2),
                    sha(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "MD5(Message Digest 5) or SHA (Secure Hash Algorithm)"
    ::= { snmpV3UserEntry 4 }

snmpV3UserAuthPassword OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION ""
    ::= { snmpV3UserEntry 5 }

snmpV3UserDesPassword OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION ""
    ::= { snmpV3UserEntry 6 }

snmpV3UserStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION ""
    ::= { snmpV3UserEntry 7 }


-- -----------------------------------------------------------------------------
-- snmpTrapServerTable
-- -----------------------------------------------------------------------------

snmpTrapServerEnable OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "To enable, disable snmp trap functionality.

                SNMPv1 traps are defined in RFC 1157, and SNMPv2c trap is 
                defined as NOTIFICATION. SNMP traps enable this device to 
                notify the management station of significant events by way 
                of an unsolicited SNMP message. After the manager receives 
                the event, the manager displays it and can choose to take 
                an action based on the event. For instance, the manager can 
                poll the agent directly, or poll other associated device 
                agents to get a better understanding of the event."
    ::= { snmp 3 }
    

snmpTrapServerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SnmpTrapServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive and information about trap servers.
                A trap server is the recipient of an SNMP trap. The device 
                does not send a trap unless it knows to which station it 
                should send a trap."
    ::= { snmp 4 }

snmpTrapServerEntry OBJECT-TYPE
    SYNTAX      SnmpTrapServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table, containing inforamtion about a 
                trap server of SNMP agent."
    INDEX       { snmpTrapServerIndex }
    ::= { snmpTrapServerTable 1 }

SnmpTrapServerEntry ::= SEQUENCE {
    snmpTrapServerIndex      Integer32,
    snmpTrapServerIPAddr     IpAddress,
    snmpTrapServerTrapComm   DisplayString,
    snmpTrapServerTrapVer    INTEGER,
    snmpTrapServerStatus     RowStatus
}

snmpTrapServerIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of trap server."
    ::= { snmpTrapServerEntry 1 }

snmpTrapServerIPAddr OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Trap Server IP Address."
    ::= { snmpTrapServerEntry 2 }

snmpTrapServerTrapComm OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The community string of trap server. The password-like string 
                will be sent with the notification operation."
    ::= { snmpTrapServerEntry 3 }

snmpTrapServerTrapVer OBJECT-TYPE
    SYNTAX      INTEGER {
                    v1(1),
                    v2c(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The trap version."
    ::= { snmpTrapServerEntry 4 }

snmpTrapServerStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of this entry. Set to (5)createAndWait
                to create a new entry. A new entry or an active 
                entry can be edited. Once an entry is modified,
                its status becomes (3)notReady. Set to (1)active
                to apply the modification to the device. An entry
                can be removed by setting to (6)destory."
    ::= { snmpTrapServerEntry 5 }


-- -----------------------------------------------------------------------------
-- security
-- -----------------------------------------------------------------------------
portSecurity    OBJECT IDENTIFIER ::= { security 1 }
ipSecurity      OBJECT IDENTIFIER ::= { security 2 }
dot1x           OBJECT IDENTIFIER ::= { security 3 }
--macFiltering    OBJECT IDENTIFIER ::= { security 3 }


-- -----------------------------------------------------------------------------
-- portSecurityStatusTable
-- -----------------------------------------------------------------------------

portSecurityStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortSecurityStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing information about port security status on 
                each port.
                
                Port security prevents a port from address learning. Only 
                those MAC addresses that are configured by management are 
                allowed to access the switch or transmit/receive through the
                port. Upto 10 MAC addresses can assigned to each port by adding
                address entries to portSecurityMacTable or macAddrTable. 

                If the port security functionality is enabled but without any 
                MAC address configured on a port, no traffic can access the 
                switch or transmit/receive from the port."
    ::= { portSecurity 1 }

portSecurityStatusEntry OBJECT-TYPE
    SYNTAX      PortSecurityStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry configuring port security for a port."
    INDEX       { portSecurityPortIndex }
    ::= { portSecurityStatusTable 1 }

PortSecurityStatusEntry ::= SEQUENCE {
    portSecurityPortIndex    Integer32,
    portSecurityPortStatus   INTEGER
}

portSecurityPortIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The port id."
    ::= { portSecurityStatusEntry 1 }

portSecurityPortStatus OBJECT-TYPE
    SYNTAX      INTEGER {
    				enable(1),
    				disable(2)
    			}
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "(1)enable port security on this port.
                 (2)disable port security on this port."
    ::= { portSecurityStatusEntry 2 }


-- -----------------------------------------------------------------------------
-- portSecurityMacTable
-- -----------------------------------------------------------------------------

portSecurityMacTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortSecurityMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table configuring static unicast MAC address for each port.

                When you add a static MAC address, it remains in the switch's 
                address table, regardless of whether the device is physically 
                connected to the switch.

                With enabling port security in portSecurityStatusTable, only 
                those MAC addresses configured in portSecurityMacTable are 
                allowed to access the switch or transmit/receive through the
                port."
    ::= { portSecurity 2 }

portSecurityMacEntry OBJECT-TYPE
    SYNTAX      PortSecurityMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry configuring a static unicast MAC addresses on a port."
    INDEX       { portSecurityMacIndex }
    ::= { portSecurityMacTable 1 }

PortSecurityMacEntry ::= SEQUENCE {
    portSecurityMacIndex     Integer32,
    portSecurityPort         Integer32,
    portSecurityVlanIndex    Integer32,
    portSecurityMac          MacAddress,
    portSecurityMacStatus    RowStatus   
}

portSecurityMacIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of MAC."
    ::= { portSecurityMacEntry 1 }

portSecurityPort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The port id."
    ::= { portSecurityMacEntry 2 }

portSecurityVlanIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The vlan id where the MAC address belongs to."
    ::= { portSecurityMacEntry 3 }

portSecurityMac OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "MAC address of the entry."
    ::= { portSecurityMacEntry 4 }

portSecurityMacStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The status of this entry. Set to (5)createAndWait
                to create a new entry. A new entry or an active 
                entry can be edited. Once an entry is modified,
                its status becomes (3)notReady. Set to (1)active
                to apply the modification to the device. An entry
                can be removed by setting to (6)destory."
    ::= { portSecurityMacEntry 5 }


-- -----------------------------------------------------------------------------
-- ipSecurity
-- -----------------------------------------------------------------------------

ipSecurityStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable or disable IP security functionality.
    
                IP security allows you to assign specific IP addresses that 
                are permitted to access the device for securing switch 
                management. Set to (1) to enable IP Security. set to (2) to 
                disable IP Security.
                
                Enabling IP Security without any entries configured in the 
                ipSecurityTable has no effect on the access traffic."
    ::= { ipSecurity 1 }

ipSecurityTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF IpSecurityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table configuring IP addresses that can access and manage the 
                device through network, such as telnet, web or SNMP. 
                
                Please note that enabling IP security function but without 
                adding the IP address of your current management station will 
                break current management connection."
    ::= { ipSecurity 2 }

ipSecurityEntry OBJECT-TYPE
    SYNTAX      IpSecurityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry configuring an security IP address."
    INDEX       { ipSecurityIndex }
    ::= { ipSecurityTable 1 }

IpSecurityEntry ::= SEQUENCE {
    ipSecurityIndex       Integer32,
    ipSecurityIP          IpAddress,
    ipSecurityRowStatus   RowStatus
}

ipSecurityIndex OBJECT-TYPE
    SYNTAX      Integer32(1..10)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of IP address entry."
    ::= { ipSecurityEntry 1 }

ipSecurityIP OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "An IP address that can access and manage the device."
    ::= { ipSecurityEntry 2 }

ipSecurityRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "This object is used to manage to creation and deletion of 
                a authorized IP address, and is used to indicate the status 
                of this entry. A empty entry or an active entry can be edited. 
                Once an entry is modified, its status becomes (3)notReady. 
                Set to (1)active to apply the modification to the device. An 
                entry can be removed by setting to (6)destory."
    ::= { ipSecurityEntry 3 }


--ipSecurityIP1 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 2 }

--ipSecurityIP2 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 3 }

--ipSecurityIP3 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 4 }

--ipSecurityIP4 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 5 }

--ipSecurityIP5 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 6 }

--ipSecurityIP6 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 7 }

--ipSecurityIP7 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 8 }

--ipSecurityIP8 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 9 }

--ipSecurityIP9 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 10 }

--ipSecurityIP10 OBJECT-TYPE
--    SYNTAX      IpAddress
--    MAX-ACCESS  read-write
--    STATUS      current
--    DESCRIPTION "This IP address can access and manage the device."
--    ::= { ipSecurity 11 }


-- -----------------------------------------------------------------------------
-- macFilteringTable, NOT SUPPORT
-- ----------------------------------------------------------------------------- 

--macFilteringTable OBJECT-TYPE
--        SYNTAX      SEQUENCE OF MACFilteringEntry
--        MAX-ACCESS  not-accessible
--        STATUS      current
--        DESCRIPTION "Table of descriptive information about
--                     MAC filter configuration.
--                     MAC address filtering allows the switch to drop
--                     unwanted traffic. Traffic is filtered based on
--                     the destination addresses. For example, if your
--                     network is congested because of high utilization
--                     from one MAC address, you can filter all traffic
--                     transmitted to that MAC address, restoring network
--                      flow while you troubleshoot the problem."
--        ::= { macFiltering 1}
--
--macFilteringEntry OBJECT-TYPE
--        SYNTAX      MACFilteringEntry
--        MAX-ACCESS  not-accessible
--        STATUS      current
--        DESCRIPTION "An entry in the table, containing inforamtion
--                     about MAC filter configuration."
--        INDEX       { macFilteringIndex }
--        ::= { macFilteringTable 1 }
--
--MACFilteringEntry ::= SEQUENCE
--{
--    macFilteringIndex    Integer32,
--    macFilteringAddr     MacAddress,
--    macFilteringStatus      INTEGER
--}
--
--macFilteringIndex OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  not-accessible
--        STATUS      current
--        DESCRIPTION "Index of MAC."
--        ::= { macFilteringEntry 1 }
--
--macFilteringAddr OBJECT-TYPE
--        SYNTAX      MacAddress
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "MAC address of the entry."
--        ::= { macFilteringEntry 2 }
--
--macFilteringStatus OBJECT-TYPE
--        SYNTAX      INTEGER
--                    {
--                        valid(1),
--                        creatrequest(2),
--                        undercreation(3),
--                        invalid(4)
--                    }
--        MAX-ACCESS  read-create
--        STATUS      current
--        DESCRIPTION "The status of this entry. If this object is not equal to valid(1), all associated
--        MAC entries shall be deleted by the agent."
--        ::= { macFilteringEntry 3 }


-- -----------------------------------------------------------------------------
-- dot1x
-- -----------------------------------------------------------------------------

dot1xStatus OBJECT-TYPE
	SYNTAX      INTEGER {
	                enable(1),
	                disable(2)
	            }
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "IEEE802.1x protocol function status.
                 (1) IEEE802.1x protocol function is enabled.
                 (2) IEEE802.1x protocol function is disabled.
                 802.1x makes use of the physical access characteristics
                 of IEEE802 LAN infrastructures in order to provide a
                 means of authenticating and authorizing devices attached
                 to a LAN port that has point-to-point connection
                 characteristics, and of preventing access to that port
                 in cases in which the authentication and authorization
                 process fails."
	::= { dot1x 1 }

dot1xAuthentication OBJECT-TYPE
	SYNTAX      INTEGER {
	                local(1),
	                radius(2)
	            }
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1x 2 }

-- -----------------------------------------------------------------------------
-- radiusServerTable
-- -----------------------------------------------------------------------------
radiusServerTable OBJECT-TYPE
	SYNTAX      SEQUENCE OF RadiusServerEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1x 3 }

radiusServerEntry OBJECT-TYPE
    SYNTAX      RadiusServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "."
    INDEX       { radiusServerIndex }
    ::= { radiusServerTable 1 }

RadiusServerEntry ::= SEQUENCE {
    radiusServerIndex      		Integer32,
    radiusServerIp         		IpAddress,
    radiusServerServerPort  	Integer32,
    radiusServerAccountingPort 	Integer32,
    radiusServerSharedKey   	DisplayString
--    radiusServerStatus      	RowStatus
}

radiusServerIndex OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "Index of Radius server configuration."
	::= { radiusServerEntry 1 }

radiusServerIp OBJECT-TYPE
	SYNTAX      IpAddress
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "IP address of this radius server."
	::= { radiusServerEntry 2 }

radiusServerServerPort OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "The UDP port number used by the authentication server 
	             to authenticate."
	::= { radiusServerEntry 3 }

radiusServerAccountingPort OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "Accounting Port: The UDP port number used by the authentication 
	             server to retrieve accounting information."
	::= { radiusServerEntry 4 }

radiusServerSharedKey OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "A key shared between this switch and authentication server."
	::= { radiusServerEntry 5 }

--radiusServerStatus OBJECT-TYPE
--	SYNTAX      RowStatus
--	MAX-ACCESS  read-create
--	STATUS      current
--	DESCRIPTION "."
--	::= { radiusServerEntry 6 }


-- -----------------------------------------------------------------------------
-- dot1xLocalUserTable
-- -----------------------------------------------------------------------------
dot1xLocalUserTable OBJECT-TYPE
	SYNTAX      SEQUENCE OF Dot1xLocalUserEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1x 4 }

dot1xLocalUserEntry OBJECT-TYPE
    SYNTAX      Dot1xLocalUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "."
    INDEX       { dot1xLocalUserIndex }
    ::= { dot1xLocalUserTable 1 }

Dot1xLocalUserEntry ::= SEQUENCE {
    dot1xLocalUserIndex      	Integer32,
    dot1xLocalUserName        	DisplayString,
    dot1xLocalUserPassword   	DisplayString,
    dot1xLocalUserVid      	    Integer32
    --dot1xLocalUserStatus      	RowStatus
}

dot1xLocalUserIndex OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1xLocalUserEntry 1 }

dot1xLocalUserName OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "set this field to empty to remove this user config."
	::= { dot1xLocalUserEntry 2 }

dot1xLocalUserPassword OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xLocalUserEntry 3 }

dot1xLocalUserVid OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xLocalUserEntry 4 }

--dot1xLocalUserStatus OBJECT-TYPE
	--SYNTAX      RowStatus
	--MAX-ACCESS  read-create
	--STATUS      current
	--DESCRIPTION "."
	--::= { dot1xLocalUserEntry 5 }

-- -----------------------------------------------------------------------------
-- dot1xPortConfigTable
-- -----------------------------------------------------------------------------
dot1xPortConfigTable OBJECT-TYPE
	SYNTAX      SEQUENCE OF Dot1xPortConfigEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1x 5 }

dot1xPortConfigEntry OBJECT-TYPE
    SYNTAX      Dot1xPortConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "."
    INDEX       { dot1xPortConfigIndex }
    ::= { dot1xPortConfigTable 1 }

Dot1xPortConfigEntry ::= SEQUENCE {
    dot1xPortConfigIndex      	Integer32,
    dot1xPortAuthControl        INTEGER,
    dot1xPortReauthentication  	INTEGER,
    dot1xPortMaxRequest			INTEGER,
    dot1xPortGuestVlan			INTEGER,
    dot1xPortHostMode			INTEGER,
    dot1xPortAdminDirection		INTEGER,
    dot1xPortConfigSetDefault   INTEGER,
    dot1xPortReinitialize       INTEGER,
    dot1xPortClientReauth       INTEGER
}

dot1xPortConfigIndex OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 1 }

dot1xPortAuthControl OBJECT-TYPE
	SYNTAX      INTEGER {
					auto(1),
					forceAuthorized(2),
					forceUnauthorized(3)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 2 }

dot1xPortReauthentication OBJECT-TYPE
	SYNTAX      INTEGER {
					enable(1),
					disable(2)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 3 }

dot1xPortMaxRequest OBJECT-TYPE
	SYNTAX      INTEGER
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 4 }

dot1xPortGuestVlan OBJECT-TYPE
	SYNTAX      INTEGER
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 5 }

dot1xPortHostMode OBJECT-TYPE
	SYNTAX      INTEGER {    
					single(1),
					multiple(2)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 6 }	

dot1xPortAdminDirection OBJECT-TYPE
	SYNTAX      INTEGER {
					both(1),
					in(2)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 7 }
	
dot1xPortConfigSetDefault OBJECT-TYPE
	SYNTAX      INTEGER {
					apply(1)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 8 }
	
dot1xPortReinitialize OBJECT-TYPE
	SYNTAX      INTEGER {
					apply(1)
				}
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 9 }

dot1xPortClientReauth OBJECT-TYPE
	SYNTAX      INTEGER {
					apply(1)
				}
	MAX-ACCESS  write-only
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortConfigEntry 10 }


-- -----------------------------------------------------------------------------
-- dot1xPortTimeoutConfigTable
-- -----------------------------------------------------------------------------
dot1xPortTimeoutConfigTable OBJECT-TYPE
	SYNTAX      SEQUENCE OF Dot1xPortTimeoutConfigEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1x 6 }

dot1xPortTimeoutConfigEntry OBJECT-TYPE
    SYNTAX      Dot1xPortTimeoutConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "."
    INDEX       { dot1xPortTimeoutIndex }
    ::= { dot1xPortTimeoutConfigTable 1 }

Dot1xPortTimeoutConfigEntry ::= SEQUENCE {
    dot1xPortTimeoutIndex      	Integer32,
    dot1xPortReauthPeriod       Integer32,
    dot1xPortQuietPeriod  		Integer32,
    dot1xPortTxPeriod			Integer32,
    dot1xPortSupplicantTimeout	Integer32,
    dot1xPortServerTimeout		Integer32
}

dot1xPortTimeoutIndex OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  not-accessible          
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortTimeoutConfigEntry 1 }

dot1xPortReauthPeriod OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortTimeoutConfigEntry 2 }

dot1xPortQuietPeriod OBJECT-TYPE
	SYNTAX      Integer32 
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortTimeoutConfigEntry 3 }

dot1xPortTxPeriod OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortTimeoutConfigEntry 4 }

dot1xPortSupplicantTimeout OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortTimeoutConfigEntry 5 }

dot1xPortServerTimeout OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-write
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortTimeoutConfigEntry 6 }

-- -----------------------------------------------------------------------------
-- dot1xPortStatusTable
-- -----------------------------------------------------------------------------
dot1xPortStatusTable OBJECT-TYPE
	SYNTAX      SEQUENCE OF Dot1xPortStatusEntry
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1x 7 }

dot1xPortStatusEntry OBJECT-TYPE
    SYNTAX      Dot1xPortStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "."
    INDEX       { dot1xPortStatusIndex }
    ::= { dot1xPortStatusTable 1 }

Dot1xPortStatusEntry ::= SEQUENCE {
    dot1xPortStatusIndex      	Integer32,
    dot1xPortCtrl				INTEGER,
    dot1xPortAuthStatus  		INTEGER,
    dot1xPortAuthSupplicant		MacAddress,    
    dot1xPortOperDirection      INTEGER
}

dot1xPortStatusIndex OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  not-accessible
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortStatusEntry 1 }

dot1xPortCtrl OBJECT-TYPE
	SYNTAX      INTEGER {
					auto(1),
					forceAuthorized(2),
					forceUnauthorized(3)
				}
	MAX-ACCESS  read-only
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortStatusEntry 2 }

dot1xPortAuthStatus OBJECT-TYPE
	SYNTAX      INTEGER {     
					authorized(1),
					unauthorized(2)
				}
	MAX-ACCESS  read-only
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortStatusEntry 3 }

dot1xPortAuthSupplicant OBJECT-TYPE
	SYNTAX      MacAddress
	MAX-ACCESS  read-only
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortStatusEntry 4 }

dot1xPortOperDirection OBJECT-TYPE
	SYNTAX      INTEGER {
					both(1),
					in(2)
				}
	MAX-ACCESS  read-only
	STATUS      current
	DESCRIPTION "."
	::= { dot1xPortStatusEntry 5 }


--radiusServerSetting     OBJECT IDENTIFIER ::= { ieee8021x 1 }
--portAuthConfiguration   OBJECT IDENTIFIER ::= { ieee8021x 2 }

--radius8021xProtocolStatus OBJECT-TYPE
--        SYNTAX      INTEGER
--                    {
--                        enabled(1),
--                        disabled(2)
--                    }
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "IEEE802.1x protocol function status.
--                     (1) IEEE802.1x protocol function is enabled.
--                     (2) IEEE802.1x protocol function is disabled.
--                     802.1x makes use of the physical access characteristics
--                     of IEEE802 LAN infrastructures in order to provide a
--                     means of authenticating and authorizing devices attached
--                     to a LAN port that has point-to-point connection
--                     characteristics, and of preventing access to that port
--                     in cases in which the authentication and authorization
--                     process fails."
--        ::= { radiusServerSetting 1 }

--radiusServerIP OBJECT-TYPE
--        SYNTAX      IpAddress
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Radius Server IP Address: the ip address of the authentication server."
--        ::= { radiusServerSetting 2 }

--radiusServerPort OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Server Port: The UDP port number used by the authentication server to authenticate."
--        ::= { radiusServerSetting 3 }
--
--radiusAccountingPort OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Accounting Port: The UDP port number used by the authentication server to retrieve
--                     accounting information. "
--        ::= { radiusServerSetting 4 }
--
--radiusSharedKey OBJECT-TYPE
--        SYNTAX      DisplayString (SIZE(0..30))
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Shared Key: A key shared between this switch and authentication server."
--        ::= { radiusServerSetting 5 }
--
--radiusNASIdentifier OBJECT-TYPE
--        SYNTAX      DisplayString (SIZE(0..30))
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "NAS Identifier: A string used to identify this switch."
--        ::= { radiusServerSetting 6 }
--
--radiusMiscQuietPeriod OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Quiet Period: used to define periods of time during
--                     which it will not attempt to acquire a supplicant
--                     (Default time is 60 seconds)."
--        ::= { radiusServerSetting 7 }
--
--radiusMiscTxPeriod OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Tx Period: used to determine when an EAPOL PDU is to
--                     be transmitted(Default value is 30 seconds)."
--        ::= { radiusServerSetting 8 }
--
--radiusMiscSupplicantTimeout OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Supplicant Timeout: used to determine timeout conditions
--                     in the exchanges between the supplicant and
--                     authentication server(Default value is 30 seconds)."
--        ::= { radiusServerSetting 9 }
--
--radiusMiscServerTimeout OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Server Timeout: used to determine timeout conditions
--                     in the exchanges between the authenticator and
--                     authentication server(Default value is 30 seconds)."
--        ::= { radiusServerSetting 10}
--
--radiusMiscReAuthMax OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "ReAuthMax: used to determine the number of
--                     reauthentication attempts that are permitted
--                     before the specific port becomes unauthorized
--                     (Default value is 2 times)."
--        ::= { radiusServerSetting 11}
--
--radiusMiscReauthPeriod OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "Reauth Period: used to determine a nonzero number
--                     of seconds between periodic reauthentication of
--                     the supplications(Default value is 3600 seconds)."
--        ::= { radiusServerSetting 12}
--
--radiusPerPortCfgTable OBJECT-TYPE
--        SYNTAX      SEQUENCE OF RadiusPerPortCfgEntry
--        MAX-ACCESS  not-accessible
--        STATUS      current
--        DESCRIPTION "Table of descriptive information and configuration about
--                     Radius per port configuration."
--        ::= { portAuthConfiguration 1}
--
--radiusPerPortCfgEntry OBJECT-TYPE
--        SYNTAX      RadiusPerPortCfgEntry
--        MAX-ACCESS  not-accessible
--        STATUS      current
--        DESCRIPTION "An entry in the table, containing inforamtion
--                     about Radius per port configuration."
--        INDEX       { radiusPerPortCfgIndex }
--        ::= { radiusPerPortCfgTable 1 }
--
--RadiusPerPortCfgEntry ::= SEQUENCE
--{
--    radiusPerPortCfgIndex    Integer32,
--    radiusPerPortCfgPortName DisplayString,
--    radiusPerPortCfgState    INTEGER
--}
--
--radiusPerPortCfgIndex OBJECT-TYPE
--        SYNTAX      Integer32
--        MAX-ACCESS  not-accessible
--        STATUS      current
--        DESCRIPTION "Index of port."
--        ::= { radiusPerPortCfgEntry 1 }
--
--radiusPerPortCfgPortName OBJECT-TYPE
--        SYNTAX      DisplayString (SIZE(0..16))
--        MAX-ACCESS  read-only
--        STATUS      current
--        DESCRIPTION "The name of port."
--        ::= { radiusPerPortCfgEntry 2 }
--
--radiusPerPortCfgState OBJECT-TYPE
--        SYNTAX      INTEGER
--                    {
--                        reject(1),
--                        accept(2),
--                        authorize(3),
--                        disabled(4)
--                    }
--        MAX-ACCESS  read-write
--        STATUS      current
--        DESCRIPTION "You can select the specific port and configure the
--                     authorization state. Each port can select four kinds
--                     of authorization state :
--                     Reject: force the specific port to be unauthorized.
--                     Accept: force the specific port to be authorized.
--                     Authorize: the state of the specific port was determinied by
--                     the outcome of the authentication.
--                     Disable: the specific port didn't support 802.1x function."
--        ::= { radiusPerPortCfgEntry 3 }


-- -----------------------------------------------------------------------------
-- Warning
-- -----------------------------------------------------------------------------
faultRelay               OBJECT IDENTIFIER ::= { warning 1 }
eventAndEmailWarning     OBJECT IDENTIFIER ::= { warning 2 }
hardwareStatus		 OBJECT IDENTIFIER ::= { warning 3 }

eventSelection           OBJECT IDENTIFIER ::= { eventAndEmailWarning 1 }
sysLogConfiguration      OBJECT IDENTIFIER ::= { eventAndEmailWarning 2 }
smtpConfiguration        OBJECT IDENTIFIER ::= { eventAndEmailWarning 3 }


-- -----------------------------------------------------------------------------
-- Fault Relay
-- -----------------------------------------------------------------------------
faultRelayTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FaultRelayEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of configuration about fault relay.

                A fault relay is able to control an output circuit which is 
                triggered by management defined fault events. There are two
                fault relays in the device, each is controlled by an 
                faultRelayEntry in this table. 

                To configure a fault relay, first select the type of fault 
                event which will trigger the relay in faultSelection, and 
                then configure the related column.

                Set faultRelayEntryStatus to active(1) to set the configuration
                to the device."
    ::= { faultRelay 1 }

faultRelayEntry OBJECT-TYPE
    SYNTAX      FaultRelayEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A entry controlling a fault relay configuration."
    INDEX       { faultRelayId }
    ::= { faultRelayTable 1 }

FaultRelayEntry  ::= SEQUENCE {
    faultRelayId                INTEGER,
    faultSelection              INTEGER,
    diConfig                    INTEGER,
    dryOutputOnPeriodConfig     INTEGER,
    dryOutputOffPeriodConfig    INTEGER,
    powerFailureConfig          INTEGER,
    linkFailureConfig           PortList,
    pingFailureIP               IpAddress,
    pingResetTime               INTEGER,
    pingHoldTime                INTEGER,
    faultRelayEntryStatus       INTEGER
}

faultRelayId OBJECT-TYPE
    SYNTAX      INTEGER {
                    relay1(1),
                    relay2(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Index of fault relay."
    ::= { faultRelayEntry 1 }

faultSelection OBJECT-TYPE
    SYNTAX      INTEGER {
                    diState(1),
                    dryOutput(2),
                    powerFailure(3),
                    linkFailure(4),
                    pingFailure(5),
                    superRingFailure(6)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select the type of fault event that triggers the relay. 
                 To config a fault relay, first select the founction this
                 relay serves for, then configure the condition that 
                 triggers the relay in detail. At last, set the 
                 faultRelayEntryStatus to active(1) or nonActive(3) to
                 enable or disable the setting on the relay."
    ::= { faultRelayEntry 2 }

diConfig OBJECT-TYPE
    SYNTAX      INTEGER {
                    di1Low(1),
                    di1High(2),
                    di2Low(3),
                    di2High(4),
                    disable(5)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The fault relay will be triggered if digital input is low
                or high."
    ::= { faultRelayEntry 3 }

dryOutputOnPeriodConfig OBJECT-TYPE
    SYNTAX      INTEGER(1..1000)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The fault relay will be closed after a period (in seconds).
                Together with dryOutputOffPeriodConfig, the fault relay can
                be configured to continue on and off."
    ::= { faultRelayEntry 4 }

dryOutputOffPeriodConfig OBJECT-TYPE
    SYNTAX      INTEGER(1..1000)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The fault relay will be opened after a period (in seconds).
                Together with dryOutputOnPeriodConfig, the fault relay can
                be configured to continue on and off."
    ::= { faultRelayEntry 5 }


powerFailureConfig OBJECT-TYPE
    SYNTAX      INTEGER {
                    power1(1),
                    power2(2),
                    any(255),
                    disable(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The fault relay will be triggered if the configured 
                power fails. Any means either power 1 or power2 fails"
    ::= { faultRelayEntry 6 }

linkFailureConfig OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The fault relay will be trigger if any of the configured 
                links fails."
    ::= { faultRelayEntry 7 }
        
pingFailureIP OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The fault relay will be trigger if fail to ping the assigned 
                IP address."
    ::= { faultRelayEntry 8 }
 
pingResetTime OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Reset the ping process after pingResetTime, and then wait 
                pingHoldTime to ping again. (optional)"
    ::= { faultRelayEntry 9 } 
    
pingHoldTime OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Reset the ping process after pingResetTime, and then wait 
                pingHoldTime to ping again. (optional)"
    ::= { faultRelayEntry 10 }
 
faultRelayEntryStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    configuring(2),
                    notActive(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Setting this object to active(1) to save the configuration 
                 to the device. Setting this object to notActive(3) disable
                 the configuration.
 
                 The system returns active(1) or notActive when the settings
                 of the entry is enabled or disabled on the relay. And the 
                 status becomes configuring(2) when the settings of the entry 
                 are modified and not set to active(1) yet."
    ::= { faultRelayEntry 11 }


-- -----------------------------------------------------------------------------
-- System Event Table
-- -----------------------------------------------------------------------------

systemEventTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SystemEventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and controls the reactions 
                to system events.

                Three types of reactions will be triggered: (1)logging in the 
                switch or send logs to remote syslog servers, (2)sending an 
                email, or (3)send an snmp trap. Each type of alert is configured 
                in sysLogConfiguration, smtpConfiguration, snmpTrapServerEnable 
                and snmpTrapServerTable."
    ::= { eventSelection 1 }

systemEventEntry OBJECT-TYPE
    SYNTAX      SystemEventEntry
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "An entry containing type of system events."
    INDEX       { eventSystemEventIndex }
    ::= { systemEventTable 1 }

SystemEventEntry ::= SEQUENCE {
    eventSystemEventIndex               Integer32,
    eventDeviceColdStartEvent           AlertType,
    eventDeviceWarmStartEvent           AlertType,
    eventAuthenticationFailureEvent     AlertType,
    eventRingEvent                      AlertType,
    eventPower1FailureEvent             AlertType,
    eventPower2FailureEvent             AlertType,
    eventFaultRelayEvent                AlertType,
    eventTimeSynchronizeEvent			AlertType,
    eventSFPEvent			            AlertType,
    eventDI1ChangeEvent			        AlertType,
    eventDI2ChangeEvent			        AlertType,
    eventLoopDetectionEvent             AlertType,
}

eventSystemEventIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of events."
    ::= { systemEventEntry 1 }

eventDeviceColdStartEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when the device 
                cold starts."
--        DESCRIPTION "Parameter to indicate the event should be logged or should be
--                     sent as an Email alert.
--                     The value can't be log(1) or logandsmtp(3), if syslogStatus
--                     is disabled. The value can't be smtp(2) or logandsmtp(3), if
--                     eventEmailAlertStatus is disabled."
    ::= { systemEventEntry 2 }

eventDeviceWarmStartEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when the device 
                warm starts."
    ::= { systemEventEntry 3 }

eventAuthenticationFailureEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when 
                authentication failure."
    ::= { systemEventEntry 4 }

eventRingEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when ring
                event occured."
    ::= { systemEventEntry 5 }

eventPower1FailureEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when power1 
                failure."
    ::= { systemEventEntry 6 }

eventPower2FailureEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when power2 
                failure."
    ::= { systemEventEntry 7 }

eventFaultRelayEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when a fault 
                relay is triggered."
    ::= { systemEventEntry 8 }

eventTimeSynchronizeEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when time
                synchronizatonn failed."
    ::= { systemEventEntry 9 }

eventSFPEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when SFP
                event occured."
    ::= { systemEventEntry 10 }

eventDI1ChangeEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when DI1
                changed ."
    ::= { systemEventEntry 11 }

eventDI2ChangeEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when DI2
                changed ."
    ::= { systemEventEntry 12 }

eventLoopDetectionEvent OBJECT-TYPE
    SYNTAX      AlertType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select which warning machanism to take place when loop detection
                event occured."
    ::= { systemEventEntry 13 }

-- -----------------------------------------------------------------------------
-- Port Event Table
-- -----------------------------------------------------------------------------
portEventTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortEventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and controls the reactions 
                to port link up, link down, or both link up and down.

                Three types of reactions will be triggered: (1)logging in the 
                switch or send logs to remote syslog servers, (2)sending an 
                email, or (3)send an snmp trap. Each type of alert is configured 
                in sysLogConfiguration, smtpConfiguration, snmpTrapServerEnable 
                and snmpTrapServerTable."
    ::= { eventSelection 2 }

portEventEntry OBJECT-TYPE
    SYNTAX      PortEventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry controlling the type of port events."
    INDEX       { eventPortNumber }
    ::= { portEventTable 1 }

PortEventEntry ::= SEQUENCE {
    eventPortNumber          Integer32,
    eventPortEvent           INTEGER
}

eventPortNumber OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Port number."
    ::= {portEventEntry 1 }

eventPortEvent OBJECT-TYPE
    SYNTAX      INTEGER {
                    linkup(1),
                    linkdown(2),
                    linkupandlinkdown(3),
                    disabled(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Select the port event to react to."
    ::= { portEventEntry 2 }


-- -----------------------------------------------------------------------------
-- System Log 
-- -----------------------------------------------------------------------------

sysLogLocalStatus OBJECT-TYPE
    SYNTAX      INTEGER {
					enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter to configure if the log should to be kept in the 
				device or not." 
    ::= { sysLogConfiguration 1 }
                                                                                                                                               
sysLogRemoteStatus OBJECT-TYPE
    SYNTAX      INTEGER {
					enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter to configure the log should be sent to a syslog 
				server specified in sysLogServerAddr or not. When disabled 
				or sysLogServerAddr is 0, the device will not send 	out or 
				record any log."
    ::= { sysLogConfiguration 2 }

sysLogServerAddr OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of syslog server."
    ::= { sysLogConfiguration 3 }


-- -----------------------------------------------------------------------------
-- Email Alert
-- -----------------------------------------------------------------------------
eventEmailAlertStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Parameter to enable the email alert feature, When enabled,
                the switch will send an email to the address presented in
                emailAlertRcptTable."
    ::= { smtpConfiguration 1 }

eventEmailAlertServer OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The IP address of SMTP server. It can't be modified when
                eventEmailAlertStatus is disabled."
    ::= { smtpConfiguration 2 }

eventEmailAlertAccount OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..70))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The email account for SMTP server. It can't be modified when
                eventEmailAlertAuthentication is disabled."
    ::= { smtpConfiguration 3 }

eventEmailAlertAuthentication OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Set to (1)enabled if it needs authentication to connect to
                the SMTP server. It can't be modified when 
                eventEmailAlertStatus is disabled."
    ::= { smtpConfiguration 4 }

eventEmailAlertUser OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..70))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The email account for SMTP server. It can't be modified when
                 eventEmailAlertAuthentication is disabled."
    ::= { smtpConfiguration 5 }

eventEmailAlertPassword OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..36))
    MAX-ACCESS  write-only
    STATUS      current
    DESCRIPTION "The password of email account. It can't be modified when
                 eventEmailAlertAuthentication is disabled."
    ::= { smtpConfiguration 6 }


-- -----------------------------------------------------------------------------
-- emailAlertReptTable
-- -----------------------------------------------------------------------------

emailAlertRcptTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EmailAlertRcptEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table configuring recipient email addresses."
    ::= { smtpConfiguration 7 }

emailAlertRcptEntry OBJECT-TYPE
    SYNTAX      EmailAlertRcptEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing recipient email address."
    INDEX       { eventEmailAlertRcptIndex }
    ::= { emailAlertRcptTable 1 }

EmailAlertRcptEntry ::= SEQUENCE {
    eventEmailAlertRcptIndex     Integer32,
    eventEmailAlertRcptEmailAddr DisplayString
}

eventEmailAlertRcptIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of recipient Email address."
    ::= { emailAlertRcptEntry 1 }

eventEmailAlertRcptEmailAddr OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..48))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "A recipient email address."
    ::= { emailAlertRcptEntry 2 }

-- -----------------------------------------------------------------------------
-- Hardware Status Table
-- -----------------------------------------------------------------------------

hardwareStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HardwareStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatus 1 }

hardwareStatusEntry OBJECT-TYPE
    SYNTAX      HardwareStatusEntry
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    INDEX       { ledHardwareStatusIndex }
    ::= { hardwareStatusTable 1 }

HardwareStatusEntry ::= SEQUENCE {
    ledHardwareStatusIndex               Integer32,
    ledPower1Status	             	INTEGER,
    ledPower2Status	           	INTEGER,
    ledDO1Status	     		INTEGER,
    ledDO2Status   			INTEGER,
    ledDI1Status            		INTEGER,
    ledDI2Status	             	INTEGER,
    ledRMStatus             		INTEGER
}

ledHardwareStatusIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of leds."
    ::= { hardwareStatusEntry 1 }

ledPower1Status OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 2 }

ledPower2Status OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 3 }

ledDO1Status OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 4 }

ledDO2Status OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 5 }

ledDI1Status OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 6 }

ledDI2Status OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 7 }

ledRMStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    on(1),
                    off(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION ""
    ::= { hardwareStatusEntry 8 }

-- -----------------------------------------------------------------------------
-- Monitor and Diag
-- -----------------------------------------------------------------------------
macAddressTable          OBJECT IDENTIFIER ::= { monitorandDiag 1 }
portStatistic            OBJECT IDENTIFIER ::= { monitorandDiag 2 }
portmirroring            OBJECT IDENTIFIER ::= { monitorandDiag 3 }
eventLog                 OBJECT IDENTIFIER ::= { monitorandDiag 4 }

-- -----------------------------------------------------------------------------
--  macAddressTable
-- -----------------------------------------------------------------------------

macAddrTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MACAddrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table containing information about unicast or multicast 
                MAC addresses that currently learned, configured by management 
                or IGMP snooping."
    ::= { macAddressTable 1 }

macAddrEntry OBJECT-TYPE
    SYNTAX      MACAddrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry containing inforamtion about a MAC address entry."
    INDEX       { macAddressAddr }
    ::= { macAddrTable 1 }

MACAddrEntry ::= SEQUENCE {
    macAddressAddr     MacAddress,
    macAddressType     INTEGER,
    macAddressPortList PortList,
    macAddressVlanId   Integer32,
    macAddressStatus   INTEGER
}

macAddressAddr OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "MAC address of the entry."
    ::= { macAddrEntry 1 }

macAddressType OBJECT-TYPE
    SYNTAX      INTEGER {
                    dynamicUnicast(1),
                    staticUnicast(2),
                    managementUnicast(3),
                    dynamicMulticast(4),
                    staticMulticast(5),
                    managementMulticast(6)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The type of this entry.
                dynamicUnicast(1) - unicast address that learned from source
                    address of ingress frames.
                staticUnicast(2) - unicast address that configured by management
                    and will remain so after the next reset of the device. Upto
                    10 static unicast entries can be configured for each port.
                managementUnicast(3) - unicast address that configured for 
                    management purpose or the MAC address of the device itself. 
                    Management unicast entries are read-only.
                dynamicMulticast(4) - dynamic multicast address that configured
                    by IGMP snooping. These entries are read-only.
                staticMulticast(5) - multicast address that configured by 
                    management and will remain so after the next reset of the 
                    device. 
--                    Upto 10 static multicast entries can be configured.
                managementMulticast(6) - multicast address that configured for 
                    management purpose, such as GVRP and so on. These entries 
                    are read-only.
                Management entries are read-only. Dynamic entries can be read 
                and delete. Only static entries are read-create.
                "
    ::= { macAddrEntry 2 }

macAddressPortList OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The port list, which must be valid when creating a new entry."
    ::= { macAddrEntry 3 }

macAddressVlanId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The VLAN where the mac address learned from or configured to."
    ::= { macAddrEntry 4 }

macAddressStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "This object is used to manage to creation and deletion of 
                a static entry, and is used to indicate the status of an entry.
                
                To Creating a static entry, select a unused value of 
                macAddressIndex and set macAddressStatus to 'createAndWait'. 
                A row will then be created with status set to 'notReady' and 
                its macAddressType, macAddressPortList and macAddressVlanId 
                left unspecified. 
                
                macAddressType, macAddressPortList and macAddressVlanId are 
                mandatory to activate an entry to the device. macAddressStatus 
                remains 'notReady' if any of these three objects are invalid.
                macAddressStatus will be changed to 'notInService' when the 
                three objects are correctly configured. Set macAddressStatus
                to 'active' to activate the MAC entry to the device.

                Static unicast and multicast entries and dynamic unicast entries 
                are removable. To delete a MAC entry, select the macAddressIndex
                set macAddressStatus to 'destory'. The row and the corresponding 
                MAC address configurarion will be removed from the device.
                
                Set macAddressStatus to 'createAndGo', 'notInService', 'notReady' 
                have no effects."
    ::= { macAddrEntry 5 }

macAddrTableClear OBJECT-TYPE
    SYNTAX      INTEGER {
                    clear(1)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Set to clear for cleaning all the dynamic MAC entries in the 
                MAC address table."
    ::= { macAddressTable 2 }


macAddrTableAgingTime OBJECT-TYPE
    SYNTAX      INTEGER(0..3825)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "This value determines the interval that an automatic learned
                MAC address entry remains valid in the forwarding database, 
                since its last access as a source address, before being purged.
                The value should be times of 15 in seconds. The minimum age 
                time is 15 seconds. The maximum age time is 3825 seconds or 
                almost 64 minutes. if the value is set to 0, the aging function
                is disabled and all learned address will remain in the database
                forever."
    DEFVAL      { 300 }
    ::= { macAddressTable 3 }


-- -----------------------------------------------------------------------------
--  portStatistic
-- -----------------------------------------------------------------------------

switchPortStatTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SwitchPortStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive and statistics information about each
                switch ports."
    ::= { portStatistic 1 }


switchPortStatClear OBJECT-TYPE
    SYNTAX      INTEGER {
                    clear(1)
                }
    MAX-ACCESS  write-only
    STATUS      current
    DESCRIPTION "Set to clear(1) to clear all information in the statistics 
                table."
    ::= { portStatistic 2 }


switchPortStatEntry OBJECT-TYPE
    SYNTAX      SwitchPortStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table containing descriptive information
                and statistics of a port."
    INDEX       { swPortStatIndex }
    ::= { switchPortStatTable 1 }

SwitchPortStatEntry ::= SEQUENCE {
    swPortStatIndex            Integer32,
    swPortStatType             INTEGER,
    swPortStatLink             INTEGER,
    swPortStatState            INTEGER,
    swPortStatRXGoodPkt        Integer32,
    swPortStatRXBadPkt         Integer32,
    swPortStatRXAbortPkt       Integer32,
    swPortStatTXGoodPkt        Integer32,
    swPortStatTXBadPkt         Integer32,
    swPortStatPacketCollision  Integer32
}

swPortStatIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of port statistic table."
    ::= { switchPortStatEntry 1 }

swPortStatType OBJECT-TYPE
    SYNTAX      INTEGER {
                    hundredBaseTX(1),
                    thousandBaseT(2),
                    hundredBaseFX(3),
                    thousandBaseSX(4),
                    thousandBaseLX(5),
                    other(6),
                    notPresent(7)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicates the port type."
    ::= { switchPortStatEntry 2 }

swPortStatLink OBJECT-TYPE
    SYNTAX      INTEGER {
                    up(1),
                    down(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicates the link state."
    ::= { switchPortStatEntry 3 }

swPortStatState OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicates the port state."
    ::= { switchPortStatEntry 4 }

swPortStatRXGoodPkt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The count of good frames received, which is the total number 
                of recieved unicast, broadcast, multicast and pause frames."
    ::= { switchPortStatEntry 5 }

swPortStatRXBadPkt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The count of bad frames received, which is the total number of 
                undersize, fragment, oversize, jabber, RXErr and FCSErr frames."
    ::= { switchPortStatEntry 6 }

swPortStatRXAbortPkt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The count of abort frames when receive, which is the total 
                number of discarded and filtered frames."
    ::= { switchPortStatEntry 7 }
    
swPortStatTXGoodPkt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The count of good frames transmitted, which is the total number 
                of transmitted unicast, broadcast, multicast and pause frames."
    ::= { switchPortStatEntry 8 }

swPortStatTXBadPkt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The count of FCSErr frames when transmit."
    ::= { switchPortStatEntry 9 }

swPortStatPacketCollision OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The count of collision."
    ::= { switchPortStatEntry 10 }

-- -----------------------------------------------------------------------------
--  portmirroring
-- -----------------------------------------------------------------------------

portMirrorStatus OBJECT-TYPE
    SYNTAX      Integer32 {
                    enable(1),
                    disable(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "To enable or disable port mirroring.
                Port mirroring is used to send a copy of inbound or outbound 
                network packets seen on one port to another switch port. 
                Administrators may utilized this mechanism to monitor network 
                traffic as well as the performance of a switch."
    ::= { portmirroring 1 }

portMirrorDestinationPortTX OBJECT-TYPE
    SYNTAX      Integer32(0..10)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The TX destination port (sniffer port).

                Destination port can be used to see all monitor port traffic.
                You can connect sniffer port to a LAN analysier or netxray.
                Set to 0 to clear the configuration. A destination port can 
                not be the same as a source port.

                This object can not be modified if portMirrorStatus is 
                disable."
    ::= { portmirroring 2 }

portMirrorDestinationPortRX OBJECT-TYPE
    SYNTAX      Integer32(0..10)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The RX destination port (sniffer port).
    
                Destination port can be used to see all monitor port traffic.
                You can connect sniffer port to a LAN analysier or netxray.
                Set to 0 to clear the configuration. A destination port can 
                not be the same as a source port.
                
                This object can not be modified if portMirrorStatus is 
                disable."
    ::= { portmirroring 3 }

portMirrorSourceTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortMirrorSourceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information and configuration of port 
                 mirroring in this system.
                 Use this table to select monitor port for this switch."
    ::= { portmirroring 4 }

portMirrorSourceEntry OBJECT-TYPE
    SYNTAX      PortMirrorSourceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Information configuring port mirroring on each port."
    INDEX       { portMirrorPortNum }
    ::= { portMirrorSourceTable 1 }

PortMirrorSourceEntry ::= SEQUENCE {
    portMirrorPortNum         Integer32,
    portMirrorSourcePort      INTEGER
}

portMirrorPortNum OBJECT-TYPE
    SYNTAX      Integer32(1..10)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The Port number."
    ::= { portMirrorSourceEntry 1 }

portMirrorSourcePort OBJECT-TYPE
    SYNTAX      INTEGER {
                    txOnly(1),
                    rxOnly(2),
                    rxAndTx(3),
                    disabled(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The mode of source port (monitor port).
                 (1) TX only.
                 (2) RX only.
                 (3) RX and TX.
                 (4) Source port is disabled.
                The ports you want to monitor. All source port traffic
                will be copied to destination port (sniffer port).
                This object can not be modified if portMirrorStatus is 
                disable."
    ::= { portMirrorSourceEntry 2 }

-- -----------------------------------------------------------------------------
-- eventLog
-- -----------------------------------------------------------------------------
eventLogClear OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable(1),
                    disabled(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "clear all event log."
    ::= {eventLog 1 }

eventLogTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EventLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of descriptive information about logs."
    ::= { eventLog 2 }

eventLogEntry OBJECT-TYPE
    SYNTAX      EventLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry in the table containing a log."
    INDEX       { eventLogIndex }
    ::= { eventLogTable 1 }

EventLogEntry ::= SEQUENCE {
    eventLogIndex          Integer32,
    eventLogDescription    DisplayString
}

eventLogIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Index of log."
    ::= {eventLogEntry 1 }

eventLogDescription OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..100))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The description of a log."
    ::= { eventLogEntry 2 }

-- -----------------------------------------------------------------------------
-- save
-- -----------------------------------------------------------------------------

saveCfgMgtAction OBJECT-TYPE
    SYNTAX      INTEGER {
                    active(1),
                    notActive(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Setting this object to active(1) saves current configuration. 
                Setting this object to notActive(2) has no effect. The system 
                always returns the value notActive(2) when this object is read."
    ::= { save 1 }

END
