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

-- Initial revision 

ZYXEL-AclV2-MIB DEFINITIONS ::= BEGIN

    IMPORTS
    OBJECT-TYPE
        FROM SNMPv2-SMI         -- RFC2578  
        
    MODULE-IDENTITY
        FROM SNMPv2-SMI
    
    RowStatus, MacAddress
        FROM SNMPv2-TC          -- RFC2579
    
    DisplayString                                          
        FROM SNMPv2-TC
        
    EnabledStatus
        FROM  P-BRIDGE-MIB
    PortList
        FROM  Q-BRIDGE-MIB
    InetAddress
        FROM INET-ADDRESS-MIB       -- RFC2851
    
    IpAddress
        FROM SNMPv2-SMI

    esMgmt          
        FROM ZYXEL-ES-SMI;

    zyxelAclV2 MODULE-IDENTITY
        LAST-UPDATED    "202310240000Z"
        ORGANIZATION "Enterprise Solution ZyXEL"     
        CONTACT-INFO
            ""     
        DESCRIPTION
            "The subtree for access control list (ACL) version 2"
        ::= { esMgmt 105 }

    zyxelAclV2ClassifierStatus  OBJECT IDENTIFIER ::= { zyxelAclV2 1 }
    zyxelAclV2PolicyStatus      OBJECT IDENTIFIER ::= { zyxelAclV2 2 }    
    zyxelAclV2TrapInfoObjects   OBJECT IDENTIFIER ::= { zyxelAclV2 3 }
    zyxelAclV2Notifications     OBJECT IDENTIFIER ::= { zyxelAclV2 4 }  
-- *******************************************************************
-- *
-- * zyxelAclV2ClassifierStatus
-- *
-- *******************************************************************

-- zyxelAclV2ClassifierTable
    zyxelAclV2ClassifierTable OBJECT-TYPE
    SYNTAX SEQUENCE OF ZyxelAclV2ClassifierEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "The table contains classifier general configuration and information."
    ::= { zyxelAclV2ClassifierStatus 1 }    


    zyxelAclV2ClassifierEntry OBJECT-TYPE
    SYNTAX  ZyxelAclV2ClassifierEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier general configuration and information."
    INDEX { zyAclV2ClassifierName }
    ::= { zyxelAclV2ClassifierTable 1 }
    
    ZyxelAclV2ClassifierEntry ::=
    SEQUENCE {
        zyAclV2ClassifierName                           DisplayString,
        zyAclV2ClassifierState                          EnabledStatus,
        zyAclV2ClassifierWeight                          INTEGER,
        zyAclV2ClassifierCountState                      EnabledStatus,
        zyAclV2ClassifierLogState                        EnabledStatus,  
        zyAclV2ClassifierTimeRange                       DisplayString,
        zyAclV2ClassifierMatchCount                     Counter64
    }   

    zyAclV2ClassifierName OBJECT-TYPE
    SYNTAX  DisplayString
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "The name of classifier rule is used for identifying purposes."
    ::= { zyxelAclV2ClassifierEntry 1 }
    
    zyAclV2ClassifierState OBJECT-TYPE
    SYNTAX  EnabledStatus
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Enable/Disable classifier rule on this switch."
    ::= { zyxelAclV2ClassifierEntry 2 }
    

    zyAclV2ClassifierWeight OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Weght value for classifier rule, 0~65535. Default 32767.
     When the match order is manual, the higher weight the higher priorit
     When the match order is auto, the priority depends on the depth of qualifier."
    ::= { zyxelAclV2ClassifierEntry 3 }

    zyAclV2ClassifierCountState OBJECT-TYPE
    SYNTAX  EnabledStatus
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Enable/disable count on this classifier rule.
     To Enable counting the matched packet number of this rule."
    ::= { zyxelAclV2ClassifierEntry 4 }

    zyAclV2ClassifierLogState OBJECT-TYPE
    SYNTAX  EnabledStatus
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Enable/disable log on this classifier rule.
     To Enable recording the matched packet number of this rule in a configurable time interval."
    ::= { zyxelAclV2ClassifierEntry 5 }

    zyAclV2ClassifierTimeRange OBJECT-TYPE
    SYNTAX  DisplayString
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Time Range Name for classifier rule.
     Bind a time range profile with this rule to active this rule in specific time."
    ::= { zyxelAclV2ClassifierEntry 6 }

    zyAclV2ClassifierMatchCount OBJECT-TYPE
    SYNTAX  Counter64
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Match-Count of this classifier rule.
     It will show the matched packet count of this rule if zyAclV2ClassifierCount is enabled."
    ::= { zyxelAclV2ClassifierEntry 7 }


-- classifier ethernet
    zyxelAclV2ClassifierEthernetTable OBJECT-TYPE
    SYNTAX SEQUENCE OF ZyxelAclV2ClassifierEthernetEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "The table contains classifier ethernet configuration."
    ::= { zyxelAclV2ClassifierStatus 2 }    


    zyxelAclV2ClassifierEthernetEntry OBJECT-TYPE
    SYNTAX  ZyxelAclV2ClassifierEthernetEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier ethernet configuration."
    INDEX           { zyAclV2ClassifierName }
    ::= { zyxelAclV2ClassifierEthernetTable 1 }
    
    ZyxelAclV2ClassifierEthernetEntry ::=
    SEQUENCE {
        zyAclV2ClassifierEthernetSourcePorts                    PortList,
        zyAclV2ClassifierEthernetSourceTrunks                   PortList,
        zyAclV2ClassifierEthernetPacketFormat                   INTEGER,
        zyAclV2ClassifierEthernet8021pPriority                  INTEGER,
        zyAclV2ClassifierEthernetInner8021pPriority             INTEGER,
        zyAclV2ClassifierEthernetType                   INTEGER,
        zyAclV2ClassifierEthernetSourceMacAddress               MacAddress,
        zyAclV2ClassifierEthernetSourceMACMask                  MacAddress,
        zyAclV2ClassifierEthernetDestinationMacAddress          MacAddress,
        zyAclV2ClassifierEthernetDestinationMACMask             MacAddress
    }


    zyAclV2ClassifierEthernetSourcePorts OBJECT-TYPE
    SYNTAX  PortList
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source Port List for classifier rule."
    ::= { zyxelAclV2ClassifierEthernetEntry 1 }

    zyAclV2ClassifierEthernetSourceTrunks OBJECT-TYPE
    SYNTAX  PortList
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source Trunk List for classifier rule."
    ::= { zyxelAclV2ClassifierEthernetEntry 2 }

    zyAclV2ClassifierEthernetPacketFormat OBJECT-TYPE
    SYNTAX  INTEGER {
        all(1),
        ethernetIIUntagged(2),
        ethernetIITagged(3),
        ethernet802dot3Untagged(4),
        ethernet802dot3Tagged(5)
        }
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Packet format for classifier rule. A value of 802.3 indicates that the packets are 
     formatted according to the IEEE 802.3 standards. A value of Ethernet II indicates 
     that the packets are formatted according to RFC 894, Ethernet II encapsulation."
    ::= { zyxelAclV2ClassifierEthernetEntry 3 }
    
    zyAclV2ClassifierEthernet8021pPriority OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "802.1p priority for classifier rule. 0~7. The range is 0~7 and value -1 means any priority level."
    ::= { zyxelAclV2ClassifierEthernetEntry 4 }
    
    zyAclV2ClassifierEthernetInner8021pPriority OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Inner 802.1p priority for classifier rule, 0~7. Value -1 means any priority level."
    ::= { zyxelAclV2ClassifierEthernetEntry 5 }
    
    zyAclV2ClassifierEthernetType OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Ethernet type for classifier rule. It is represented in decimal expression and value 65535 means any Ethernet type."
    ::= { zyxelAclV2ClassifierEthernetEntry 6 }
    
    zyAclV2ClassifierEthernetSourceMacAddress OBJECT-TYPE
    SYNTAX  MacAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source MAC address for classifier rule. 00:00:00:00:00:00 means any source MAC address."
    ::= { zyxelAclV2ClassifierEthernetEntry 7 }

    zyAclV2ClassifierEthernetSourceMACMask OBJECT-TYPE
    SYNTAX  MacAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source MAC Mask for classifier rule."
    ::= { zyxelAclV2ClassifierEthernetEntry 8 }

    zyAclV2ClassifierEthernetDestinationMacAddress OBJECT-TYPE
    SYNTAX  MacAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Destination MAC address for classifier rule. 00:00:00:00:00:00 means any destination MAC address."
    ::= { zyxelAclV2ClassifierEthernetEntry 9 }

    zyAclV2ClassifierEthernetDestinationMACMask OBJECT-TYPE
    SYNTAX  MacAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Destination MAC Mask for classifier rule."
    ::= { zyxelAclV2ClassifierEthernetEntry 10 }


-- classifier vlan                
    zyxelAclV2ClassifierVlanTable OBJECT-TYPE
    SYNTAX SEQUENCE OF  ZyxelAclV2ClassifierVlanEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier VLAN configuration."
    ::= { zyxelAclV2ClassifierStatus 3 }

    zyxelAclV2ClassifierVlanEntry OBJECT-TYPE
    SYNTAX  ZyxelAclV2ClassifierVlanEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier VLAN configuration."
    INDEX           { zyAclV2ClassifierName }
    ::= { zyxelAclV2ClassifierVlanTable 1 }

    ZyxelAclV2ClassifierVlanEntry ::=
    SEQUENCE {
        zyAclV2ClassifierVlanMap1k                          OCTET STRING,
        zyAclV2ClassifierVlanMap2k                          OCTET STRING,
        zyAclV2ClassifierVlanMap3k                          OCTET STRING,
        zyAclV2ClassifierVlanMap4k                          OCTET STRING
    }          


    zyAclV2ClassifierVlanMap1k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN. The
     first octet corresponds to VLANs with VlanIndex values
     1 through 8; the second octet to VLANs 9 through
     16 etc.  The most significant bit of each octet
     corresponds to the lowest VlanIndex value in that octet.

     For each VLAN that is mapped to the VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierVlanEntry 1 }

    zyAclV2ClassifierVlanMap2k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN for
     VLANS with VlanIndex values 1025 through 2048. The
     first octet corresponds to VLANs with VlanIndex values
     1025 through 1032; the second octet to VLANs 1033
     through 1040 etc.  The most significant bit of each
     octet corresponds to the lowest VlanIndex value in that
     octet.

     For each VLAN that is mapped to the VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierVlanEntry 2 }

    zyAclV2ClassifierVlanMap3k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN for
     VLANS with VlanIndex values 2049 through 3072. The
     first octet corresponds to VLANs with VlanIndex values
     of 2049 through 2056; the second octet to VLANs 2057
     through 2064 etc.  The most significant bit of each
     octet corresponds to the lowest VlanIndex value in that
     octet.

     For each VLAN that is mapped to the VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierVlanEntry 3 }

    zyAclV2ClassifierVlanMap4k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN for
     VLANS with VlanIndex values 3073 through 4094. The
     first octet corresponds to VLANs with VlanIndex values
     3073 through 3080; the second octet to VLANs 3081
     through 3088 etc.  The most significant bit of each
     octet corresponds to the lowest VlanIndex value in that
     octet.

     For each VLAN that is mapped to the VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierVlanEntry 4 }  

-- classifier inner vlan    
    zyxelAclV2ClassifierInnerVlanTable OBJECT-TYPE
    SYNTAX SEQUENCE OF  ZyxelAclV2ClassifierInnerVlanEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier inner VLAN configuration."
    ::= { zyxelAclV2ClassifierStatus 4 }

    zyxelAclV2ClassifierInnerVlanEntry OBJECT-TYPE
    SYNTAX  ZyxelAclV2ClassifierInnerVlanEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier inner VLAN configuration."
    INDEX           { zyAclV2ClassifierName }
    ::= { zyxelAclV2ClassifierInnerVlanTable 1 }

    ZyxelAclV2ClassifierInnerVlanEntry ::=
    SEQUENCE {
        zyAclV2ClassifierInnerVlanMap1k                 OCTET STRING,
        zyAclV2ClassifierInnerVlanMap2k                 OCTET STRING,
        zyAclV2ClassifierInnerVlanMap3k                 OCTET STRING,
        zyAclV2ClassifierInnerVlanMap4k                 OCTET STRING
    }          


    zyAclV2ClassifierInnerVlanMap1k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN. The
     first octet corresponds to VLANs with VlanIndex values
     1 through 8; the second octet to VLANs 9 through
     16 etc.  The most significant bit of each octet
     corresponds to the lowest VlanIndex value in that octet.

     For each VLAN that is mapped to the inner VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierInnerVlanEntry 1 }

    zyAclV2ClassifierInnerVlanMap2k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN for
     VLANS with VlanIndex values 1025 through 2048. The
     first octet corresponds to VLANs with VlanIndex values
     1025 through 1032; the second octet to VLANs 1033
     through 1040 etc.  The most significant bit of each
     octet corresponds to the lowest VlanIndex value in that
     octet.

     For each VLAN that is mapped to the inner VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierInnerVlanEntry 2 }

    zyAclV2ClassifierInnerVlanMap3k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN for
     VLANS with VlanIndex values 2049 through 3072. The
     first octet corresponds to VLANs with VlanIndex values
     of 2049 through 2056; the second octet to VLANs 2057
     through 2064 etc.  The most significant bit of each
     octet corresponds to the lowest VlanIndex value in that
     octet.

     For each VLAN that is mapped to the inner VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierInnerVlanEntry 3 }

    zyAclV2ClassifierInnerVlanMap4k OBJECT-TYPE
    SYNTAX  OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "A string of octets containing one bit per VLAN for
     VLANS with VlanIndex values 3073 through 4094. The
     first octet corresponds to VLANs with VlanIndex values
     3073 through 3080; the second octet to VLANs 3081
     through 3088 etc.  The most significant bit of each
     octet corresponds to the lowest VlanIndex value in that
     octet.

     For each VLAN that is mapped to the inner VLAN ID of this classifier,
     the bit corresponding to that VLAN is set to '1'.
     Empty (zero) most significant octes are not mandatory."
    ::= { zyxelAclV2ClassifierInnerVlanEntry 4 }

--Classifier IP
    zyxelAclV2ClassifierIpTable OBJECT-TYPE
    SYNTAX SEQUENCE OF ZyxelAclV2ClassifierIpEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "The table contains classifier IP configuration."
    ::= { zyxelAclV2ClassifierStatus 5 }    
    
    zyxelAclV2ClassifierIpEntry OBJECT-TYPE
    SYNTAX  ZyxelAclV2ClassifierIpEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "An entry contains classifier IP configuration."
    INDEX { zyAclV2ClassifierName }
    ::= { zyxelAclV2ClassifierIpTable 1 }

    ZyxelAclV2ClassifierIpEntry ::=
    SEQUENCE {
        zyAclV2ClassifierIpPacketLenRangeStart           INTEGER,
        zyAclV2ClassifierIpPacketLenRangeEnd             INTEGER,
        zyAclV2ClassifierIpDSCP                         INTEGER,
        zyAclV2ClassifierIpPrecedence                      INTEGER,
        zyAclV2ClassifierIpToS                             INTEGER,
        zyAclV2ClassifierIpProtocol                     INTEGER,
        zyAclV2ClassifierIpEstablishOnly                    EnabledStatus,
        zyAclV2ClassifierIpSourceIpAddress                  IpAddress,
        zyAclV2ClassifierIpSourceIpMaskBits             INTEGER,
        zyAclV2ClassifierIpDestinationIpAddress         IpAddress,
        zyAclV2ClassifierIpDestinationIpMaskBits            INTEGER,
        zyAclV2ClassifierIpSourceSocketRangeStart          INTEGER,
        zyAclV2ClassifierIpSourceSocketRangeEnd          INTEGER,
        zyAclV2ClassifierIpDestinationSocketRangeStart     INTEGER,         
        zyAclV2ClassifierIpDestinationSocketRangeEnd     INTEGER
    }   


    zyAclV2ClassifierIpPacketLenRangeStart OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "The Start value of IP packet length range, 0~65535. 
    And it must smaller then the zyAclV2ClassifierIpPacketLenRangeEnd. 
    Value -1 means any start value. "
    ::= { zyxelAclV2ClassifierIpEntry 1 }

    zyAclV2ClassifierIpPacketLenRangeEnd OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "The End value of IP packet length range, 0~65535. 
    And it must larger then the zyAclV2ClassifierIpPacketLenRangeStart. 
    Value -1 means any start value. "
    ::= { zyxelAclV2ClassifierIpEntry 2 }

    zyAclV2ClassifierIpDSCP OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "DSCP (DiffServ Code Point) for classifier rule. The range is 0~63 and value -1 means any DSCP."
    ::= { zyxelAclV2ClassifierIpEntry 3 }
    
    zyAclV2ClassifierIpPrecedence OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Precedence for calssifier rule, 0~7. Value -1 means any Precedence."
    ::= { zyxelAclV2ClassifierIpEntry 4 }

    zyAclV2ClassifierIpToS OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "ToS for calssifier rule, 0~127. Value -1 means any ToS."
    ::= { zyxelAclV2ClassifierIpEntry 5 }

    zyAclV2ClassifierIpProtocol OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "IP Protocol for classifier rule. Value 255 means any IP protocol."
    ::= { zyxelAclV2ClassifierIpEntry 6 }
    
    zyAclV2ClassifierIpEstablishOnly OBJECT-TYPE
    SYNTAX  EnabledStatus
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Establish Only for TCP protocol type in classifier rule. 
     This means that the switch will pick out the packets that are sent to establish TCP connections."
    ::= { zyxelAclV2ClassifierIpEntry 7 }
    
    zyAclV2ClassifierIpSourceIpAddress OBJECT-TYPE
    SYNTAX  IpAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source IP address for classifier rule. 0.0.0.0 means any source IP address."
    ::= { zyxelAclV2ClassifierIpEntry 8 }
    
    zyAclV2ClassifierIpSourceIpMaskBits OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source IP mask bits for classifier rule."
    ::= { zyxelAclV2ClassifierIpEntry 9 }
    
    zyAclV2ClassifierIpDestinationIpAddress OBJECT-TYPE
    SYNTAX  IpAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Destination IP address for classifier rule. 0.0.0.0 means any destination IP address."
    ::= { zyxelAclV2ClassifierIpEntry 10 }
    
    zyAclV2ClassifierIpDestinationIpMaskBits OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Destination IP mask bits for classifier rule."
    ::= { zyxelAclV2ClassifierIpEntry 11 }
    
    zyAclV2ClassifierIpSourceSocketRangeStart OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source Socket Number range start for classifier rule, 0~65535.
     If not qualifying a range of socket numbers,
     the zyAclV2ClassifierSourceSocketRangeEnd is no need to configure. "
    ::= { zyxelAclV2ClassifierIpEntry 12 }

    zyAclV2ClassifierIpSourceSocketRangeEnd OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Destination Socket Number range end for classifier rule.
     This object is not necessary. "
    ::= { zyxelAclV2ClassifierIpEntry 13 }

    zyAclV2ClassifierIpDestinationSocketRangeStart OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Source Socket Number range start for classifier rule, 0~65535.
     If not qualifying a range of socket numbers,
     the zyAclV2ClassifierDestinationSocketRangeEnd is no need to configure."
    ::= { zyxelAclV2ClassifierIpEntry 14 }

    zyAclV2ClassifierIpDestinationSocketRangeEnd OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Destination Socket Number range end for classifier rule.
     This object is not necessary."
    ::= { zyxelAclV2ClassifierIpEntry 15 }


-- zyxelAclV2ClassifierIpv6Table
    zyxelAclV2ClassifierIpv6Table OBJECT-TYPE
    SYNTAX SEQUENCE OF ZyxelAclV2ClassifierIpv6Entry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
    "The table contains classifier IPv6 configuration."
    ::= { zyxelAclV2ClassifierStatus 6 }    


    zyxelAclV2ClassifierIpv6Entry OBJECT-TYPE
    SYNTAX  ZyxelAclV2ClassifierIpv6Entry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "An entry contains classifier IPv6 configuration."
    INDEX { zyAclV2ClassifierName }
    ::= { zyxelAclV2ClassifierIpv6Table 1 }
    
    ZyxelAclV2ClassifierIpv6Entry ::=
    SEQUENCE {
        zyAclV2ClassifierIPv6DSCP                       INTEGER,
        zyAclV2ClassifierIPv6NextHeader                 INTEGER,
        zyAclV2ClassifierIPv6EstablishOnly              EnabledStatus,
        zyAclV2ClassifierIPv6SourceIpAddress            InetAddress,
        zyAclV2ClassifierIPv6SourceIpPrefixLength       INTEGER,
        zyAclV2ClassifierIPv6DestinationIpAddress       InetAddress,
        zyAclV2ClassifierIPv6DestinationIpPrefixLength  INTEGER
    }   
    

    zyAclV2ClassifierIPv6DSCP OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "DSCP (DiffServ Code Point) for classifier rule. The range is 0~63 and value -1 means any DSCP."
    ::= { zyxelAclV2ClassifierIpv6Entry 1 }
    
    zyAclV2ClassifierIPv6NextHeader OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "IPv6 next header protocol type for classifier rule. Value 255 means any protocol type."
    ::= { zyxelAclV2ClassifierIpv6Entry 2 }
    
    zyAclV2ClassifierIPv6EstablishOnly OBJECT-TYPE
    SYNTAX  EnabledStatus
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Establish Only for TCP protocol type in classifier rule. 
     This means that the switch will pick out the packets that are sent to establish TCP connections."
    ::= { zyxelAclV2ClassifierIpv6Entry 3 }
    
    zyAclV2ClassifierIPv6SourceIpAddress OBJECT-TYPE
    SYNTAX  InetAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
     "IPv6 source address for classifier rule. :: means any IPv6 source ip address."
    ::= { zyxelAclV2ClassifierIpv6Entry 4 }
    
    zyAclV2ClassifierIPv6SourceIpPrefixLength OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "IPv6 source address prefix length for classifier rule."
    ::= { zyxelAclV2ClassifierIpv6Entry 5 }
    
    zyAclV2ClassifierIPv6DestinationIpAddress OBJECT-TYPE
    SYNTAX  InetAddress
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "IPv6 destination address for classifier rule. :: means any IPv6 destination ip address."
    ::= { zyxelAclV2ClassifierIpv6Entry 6 }
    
    zyAclV2ClassifierIPv6DestinationIpPrefixLength OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "IPv6 destination address prefix length for classifier rule."
    ::= { zyxelAclV2ClassifierIpv6Entry 7 }


            
    zyxelAclV2ClassifierMatchOrder OBJECT-TYPE
    SYNTAX  INTEGER{        
        auto(1),
        manual(2)       
    }
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Manual or Auto to determine the rule ordering. When the match order is manual,
     the higher weight the higher priority. 
     When the match order is auto, the priority is depended on the depth of the qualifier."
    ::= { zyxelAclV2ClassifierStatus 7 }
  
    zyxelAclV2ClassifierLoggingState OBJECT-TYPE
    SYNTAX  EnabledStatus
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Enable/disable Logging for classifier."
    ::= { zyxelAclV2ClassifierStatus 8 }
    
    zyxelAclV2ClassifierLoggingInterval OBJECT-TYPE
    SYNTAX  INTEGER
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Logging Interval for classifier, 0~65535."
    ::= { zyxelAclV2ClassifierStatus 9 }       


-- *******************************************************************
-- *
-- * zyxelAclV2PolicyStatus
-- *
-- *******************************************************************

-- zyxelAclV2PolicyTable
        zyxelAclV2PolicyTable OBJECT-TYPE
        SYNTAX SEQUENCE OF ZyxelAclV2PolicyEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        "The table contains policy configuration."
        ::= { zyxelAclV2PolicyStatus 1 }
        
        zyxelAclV2PolicyEntry OBJECT-TYPE
        SYNTAX  ZyxelAclV2PolicyEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        "An entry contains policy configuration."
        INDEX           { zyAclV2PolicyName }
        ::= { zyxelAclV2PolicyTable 1 }

        ZyxelAclV2PolicyEntry ::=
        SEQUENCE {
            zyAclV2PolicyName               DisplayString,
            zyAclV2PolicyState              EnabledStatus,
            zyAclV2PolicyClassifier         DisplayString,
            zyAclV2PolicyVid                    INTEGER,
            zyAclV2PolicyEgressPort         INTEGER,
            zyAclV2Policy8021pPriority      INTEGER,
            zyAclV2PolicyDSCP               INTEGER,
            zyAclV2PolicyTOS                    INTEGER,
            zyAclV2PolicyBandwidth          INTEGER,
            zyAclV2PolicyOutOfProfileDSCP   INTEGER,
            zyAclV2PolicyForwardingAction   INTEGER,
            zyAclV2PolicyPriorityAction     INTEGER,
            zyAclV2PolicyDiffServAction     INTEGER,
            zyAclV2PolicyOutgoingAction     BITS,
            zyAclV2PolicyMeteringState      INTEGER,
            zyAclV2PolicyOutOfProfileAction BITS,
            zyAclV2PolicyRowstatus          RowStatus,
            zyAclV2PolicyQueueAction            INTEGER
        }
        
        zyAclV2PolicyName OBJECT-TYPE
        SYNTAX  DisplayString
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        "The name of policy rule is used for identifying purposes."
        ::= { zyxelAclV2PolicyEntry 1 }
        
        zyAclV2PolicyState OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Enable/Disable policy rule on this switch."
        ::= { zyxelAclV2PolicyEntry 2 }
        
        zyAclV2PolicyClassifier OBJECT-TYPE
        SYNTAX  DisplayString
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "The classifier(s) applies in this policy rule."
        ::= { zyxelAclV2PolicyEntry 3 }
        
        zyAclV2PolicyVid OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "VLAN ID for policy rule."
        ::= { zyxelAclV2PolicyEntry 4 }
        
        zyAclV2PolicyEgressPort OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "The outgoing port number in this policy rule."
        ::= { zyxelAclV2PolicyEntry 5 }
        
        zyAclV2Policy8021pPriority OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Specify a 802.1p priority level for policy rule. The value of 802.1p is between 0 and 7."
        ::= { zyxelAclV2PolicyEntry 6 }
        
        zyAclV2PolicyDSCP OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Specify a DSCP (DiffServ Code Point) for policy rule. DSCP number is between 0 and 63."
        ::= { zyxelAclV2PolicyEntry 7 }
        
        zyAclV2PolicyTOS OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Specify the type of service (TOS) priority level for policy rule. The value of TOS is between 0 and 7."
        ::= { zyxelAclV2PolicyEntry 8 }
        
        zyAclV2PolicyBandwidth OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Specify the bandwidth for policy rule in kilobit per second (Kbps)."
        ::= { zyxelAclV2PolicyEntry 9 }
        
        zyAclV2PolicyOutOfProfileDSCP OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Specify a new DSCP number (between 0 and 63) for policy rule if you want to replace or remark the DSCP number for out-of-profile traffic."
        ::= { zyxelAclV2PolicyEntry 10 }
        
        zyAclV2PolicyForwardingAction OBJECT-TYPE
        SYNTAX  INTEGER {
            noChange(1),
            discardThePacket(2),
            doNotDropTheMatchingFramePreviouslyMarkedForDropping(3)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "There are three forwarding actions for policy rule. 'No change' is forward the packets. 'Discard the packet' is drop the packets.  
        'Do not drop the matching frame previously marked for dropping' is retain the frames that were marked to be dropped before."
        ::= { zyxelAclV2PolicyEntry 11 }
        
        zyAclV2PolicyPriorityAction OBJECT-TYPE
        SYNTAX  INTEGER {
            noChange(1),
            setThePackets802dot1Priority(2),
            sendThePacketToPriorityQueue(3),
            replaceThe802dot1PriorityFieldWithTheIpTosValue(4),
            replaceThe802dot1PriorityByInner802dot1Priority(5)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "There are four priority actions for policy rule. 'No change' is keep the priority setting of the frames.
         'Set the packet's 802.1 priority' is replace the packet's 802.1 priority field with the value you set in the Priority field. 
         'Send the packet to priority queue' is put the packets in the designated queue. 
         'Replace the 802.1 priority field with the IP TOS value' to replace the packet's 802.1 priority field with the value you set in the TOS field.
         'Replace the 802.1p priority by inner 802.1p priority' to replace 802.1p priority by inner 802.1p priority if there is an inner vlan tag."
        ::= { zyxelAclV2PolicyEntry 12 }
        
        zyAclV2PolicyDiffServAction OBJECT-TYPE
        SYNTAX  INTEGER {
            noChange(1),
            setThePacketsTosField(2),
            replaceTheIpTosFieldWithThe802dot1PriorityValue(3),
            setTheDiffservCodepointFieldInTheFrame(4) 
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "There are four DiffServ actions for policy rule. 
         'No change' is keeping the TOS and/or DSCP fields in the packets. 
         'Set the packet's TOS field' is set the TOS field with the value you configure in the TOS field. 
         'Replace the IP TOS with the 802.1 priority value' is replace the TOS field with the value you configure in the Priority field. 
         'Set the Diffserv Codepoint field in the frame' to set the DSCP field with the value you configure in the DSCP field."
        ::= { zyxelAclV2PolicyEntry 13 }
        
        zyAclV2PolicyOutgoingAction OBJECT-TYPE
        SYNTAX  BITS {
            sendThePacketToTheMirrorPort(0),
            sendThePacketToTheEgressPort(1),
            sendTheMatchingFramesToTheEgressPort(2),
            setThePacketVlanId(3)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "There are four outgoing actions for policy rule. 
        'Send the packet to the mirror port' is sent the packet to the mirror port. 
        'Send the packet to the egress port' is sent the packet to the egress port. 
        'Send the matching frames to the egress port' is sent the matching policy rule frames to the egress port. 
        'Set the packets VLAN ID' is set packet with tag."
        ::= { zyxelAclV2PolicyEntry 14 }
        
        zyAclV2PolicyMeteringState OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "Enable/Disable bandwidth limitation on the traffic flow(s) then set the actions to be taken on out-of-profile packets."
        ::= { zyxelAclV2PolicyEntry 15 }
        
        zyAclV2PolicyOutOfProfileAction OBJECT-TYPE
        SYNTAX  BITS {
            dropThePacket(0),
            changeTheDscpValue(1),
            setOutDropPrecedence(2),
            doNotDropTheMatchingFramePreviouslyMarkedForDropping(3)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "There are four out of profile actions for policy rule. 
         'Drop the packet' is discard the out-of-profile traffic. 
         'Change the DSCP value' is replace the DSCP field with the value specified in the Out of profile DSCP field. 
         'Set Out-Drop Precedence' is mark out-of-profile traffic and drop it when network is congested. 
         'Do not drop the matching frame previously marked for dropping' to queue the frames that are marked to be dropped."
        ::= { zyxelAclV2PolicyEntry 16 }
            
        zyAclV2PolicyRowstatus OBJECT-TYPE
        SYNTAX  RowStatus
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "This object shows the entry of policy rule status."
        ::= { zyxelAclV2PolicyEntry 17 }
      
        zyAclV2PolicyQueueAction OBJECT-TYPE
        SYNTAX  INTEGER {
            noChange(1),
            sendThePacketToPriorityQueue(2)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
        "There are two queue actions for policy rule. 'No change' is keep the priority setting of the frames.
         'Send the packet to priority queue' is put the packets in the designated queue. "
        ::= { zyxelAclV2PolicyEntry 18 }

-- *******************************************************************
-- *
-- * zyxelAclV2TrapInfoObjects
-- *
-- *******************************************************************
       
        zyAclV2TrapClassifierLogMatchCount OBJECT-TYPE
        SYNTAX  INTEGER
        MAX-ACCESS  not-accessible
        STATUS  current  
        DESCRIPTION
        "display log match count of specific classifier rule."
        ::= { zyxelAclV2TrapInfoObjects 1 }  
        
-- *******************************************************************
-- *
-- * zyxelAclV2Notifications
-- *
-- *******************************************************************
    
        zyAclV2ClassifierLogNotification NOTIFICATION-TYPE
        OBJECTS {
                zyAclV2ClassifierName,
                zyAclV2TrapClassifierLogMatchCount
         }       
        STATUS  current
        DESCRIPTION
        "classifier log information."
        ::= { zyxelAclV2Notifications 1 }  

END                              
