--
-- (c) 2002 Motorola, Inc.
--
--
-- CM Gw MIB
--

CM-GATEWAY-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      enterprises, OBJECT-TYPE, MODULE-IDENTITY, Unsigned32, Integer32, Counter32
         FROM SNMPv2-SMI
      MacAddress, RowStatus, DisplayString, TruthValue, PhysAddress, TimeStamp, DateAndTime
         FROM SNMPv2-TC
      SnmpAdminString
         FROM SNMP-FRAMEWORK-MIB
      InetAddressType, InetAddress, InetPortNumber, InetAddressIPv6
         FROM INET-ADDRESS-MIB; 
--
-- Path to root
--

gi OBJECT IDENTIFIER ::= {enterprises 1166}
giproducts OBJECT IDENTIFIER ::= {gi 1}
cm OBJECT IDENTIFIER ::= {giproducts 19} 

cmGw MODULE-IDENTITY
      LAST-UPDATED "201306070000Z"  -- June 07, 2013
      ORGANIZATION
         "Motorola BCS"
      CONTACT-INFO
         "Author: Greg Nakanishi
          Org:    Motorola BCS
          postal: 6450 Sequence Drive
                  San Diego, CA 92121
          email:  gnakanishi@motorola.com
          phone:  858-404-2366"
      DESCRIPTION
          "This MIB defines additional gateway management objects that are extended
           based on CableHome MIBs."    
      	  REVISION "201306070000Z"  -- June 07, 2013
      DESCRIPTION
      "Edited by Lisa Ruby - OKCABLECPEMIB-424
       - Added MIB object cmGwAdvCfgParentalControl"
	  
	  REVISION "201306070000Z"  -- June 07, 2013
      DESCRIPTION
      "Edited by Lisa Ruby - OKCABLECPEMIB-421
       - Modified MIB object cmGwFirewallProtectEnable"
       
	  REVISION "201306070000Z"  -- June 07, 2013
      DESCRIPTION
      "Edited by Lisa Ruby - OKCABLECPEMIB-420
       - Added MIB object cmGwIPv6FirewallProtectEnable"
       
	  REVISION "201212130000Z"  -- Dec 13, 2012
      DESCRIPTION
      "Edited by Richard DiBenedetto - OKCABLECPEMIB-398.
       - Commented below MIB objects 
	   - cmGwLanPoolStartType
	   - cmGwDhcpServerSubnetMaskType 
	   - cmGwDhcpServerDhcpAddressType. "
	  
	  REVISION "201212120000Z"  -- December 12, 2012
      DESCRIPTION
      "Edited by Lisa Ruby - OKCABLECPEMIB-407
       - Added objects for JIRA JSBG2186 
       - Added MIB object cmGwProvErouterIPv6PassthruMode"
	   
	  REVISION "201212040000Z"  -- December 04, 2012
      DESCRIPTION 
      "Edited by Tang He - OKCABLECPEMIB-407
      - Added object for JIRA JSBG2191
      - Added MIB object cmGwProvErouterMode"
  
      REVISION "201204170000Z"  -- April 17, 2012
      DESCRIPTION
      "Edited by Tang He.
       - Added MIB jira1449 
       - Added MIB object cmGwDsliteEnabled
       - Added MIB object cmGwDsliteAftrAddress
       - Added MIB object cmGwDslitePcpMode
       - Added MIB object cmGwDsliteTcpMssClamping
       - Added MIB object cmGwDsliteIPv4FragEnabled."
		
      REVISION  "201204110000Z"  -- April 11, 2012
      DESCRIPTION
      "Edited by Yangchen Bao - OKCABLECPEMIB-367.
       - Changed description of cmGwVirtualServerEntry 
       - Added MIB object cmGwVirtualServerUSBAppsPort."
	
      REVISION "201112190000Z"
      DESCRIPTION
      "Edited by Sabari and Kokila.
       - Added MIB cqvds00026693
       - Added MIB object cmGwAdvCfgIpsecPassThroughEnable
       - Added MIB object cmGwAdvCfgPptpPassThroughEnable."

      REVISION "201105240000Z"
      DESCRIPTION
      "Edited by Uma and Kokila.
       - Added MIB cqvds00025508
       - Added MIB object cmGwFirewallProtectionLevel."

      REVISION "200911170000Z"
      DESCRIPTION   
      "Edited by P. Rajiv and Mithun.
       - Modified for cqvds00019728
       - cmGwProvDeviceProvisioningMode 
       - cmGwProvDeviceConfigStatus 
       - cmGwProvDeviceConfigFilename."

      REVISION "200906100000Z"
      DESCRIPTION   
      "Edited by Uma.
       - Modified MIB cqvds00016124
       - cmGwPortTriggerRowStatus 
       - cmGwFiltersIpFilterRowStatus 
       - cmGwFiltersPortFilterRowStatus."

      REVISION  "200904280000Z"
      DESCRIPTION
      "Edited by Uma.
        - Added MIB cqvds00015056
        - Added MIB group cmGwFiltersMib
	- Added MIB group cmGwFiltersIpFilter.
    	- Added MIB group cmGwFiltersMacFilter.
        - Added MIB group cmGwFiltersPortFilter.
	- Added MIB group cmGwFirewallMib.
	- Added MIB group cmGwPortTriggerMib.
        - Added MIB object cmGwVirtualServerProtocol
        - Modified Description cmGwAlgPredefinedTable."

        
      REVISION  "200901200000Z"
      DESCRIPTION
      "Edited by Lisa Ruby.   
        - Added MIB cqvds00013177
        - Added cmGwAdvCfgMib
        - Added cmGwAdvCfgObjects
        - Added cmGwAdvCfgUPnP."

      REVISION  "200811180000Z"
      DESCRIPTION
      "Edited by Chen Yang. 
        - Added MIB cqvds00011643
        - Added cmGwAlgPredefinedMib
	    - Added cmGwAlgPredfinedObjects  
        - Added cmGwAlgPredefinedTable
        - Added cmGwAlgPredefinedEntry
        - Added cmGwAlgPredefinedIndex
        - Added cmGwAlgPredefinedName
        - Added cmGwAlgPredefinedEnable."

      REVISION  "200307150000Z"
      DESCRIPTION
        "Edited by Jason Krasnow. 
        Published as cmGateway-40.mib 
        Changed default of cmGwLanDhcpsInterfaceMTU to 0.  Also updated the object's description.
        "
     
      REVISION  "200212090000Z"
      DESCRIPTION
        "Edited by Zheng Fang. 
        Published as cmGateway-28.mib.
        - Per SCR668, remove cmGwNatMappingServerId, cmGwNatMappingEnable and bump
          cmGwNatMappingRowStatus OID to next one of cmGwNatMappingProtocol; add
          cmGwNatMappingWanAddrType and cmGwNatMappingWanAddr per exising GUI.
        - Per SCR669, add cmGwVirtualServerEntry.
        - Per SYS, remove cmGwLanAddrDMZEnable.
        "  
                    
      REVISION  "200210040000Z"
      DESCRIPTION
        "Edited by Zheng Fang. 
        Published as cmGateway-22.mib.
        - Sync with CH ECNs per CW24 requirements:
        - Per CH1-N-02017, update descriptions of cmGwNatMappingRowStatus and cmGwNatPassthroughRowStatus.
        - Per CH1-N-02009, update descriptions of cmGwNatMappingLanAddr, cmGwNatMappingLanAddrType and 
          cmGwLanAddrClientID, and update description and default value for cmGwLanDhcpsLeaseTime;
          change DisplayString to SnmpAdminString; 
          add cmGwLanDhcpsNetworkNumberType and cmGwLanDhcpsNetworkNumber.         
        "  

      ::= {cm 52}

-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
-- BIG NOTES:
-- All objects defined here only accessible when device is in gateway mode. 
-- All writable objects must be maintained non-volatile memory.
-- 
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



-- Administrative assignments ----------------------

cmGwObjects OBJECT IDENTIFIER ::= { cmGw 1 }
cmGwConformance OBJECT IDENTIFIER ::= { cmGw 2 }

--
-- Standard MIB mirror zone
--
cmGwBaseMib    OBJECT IDENTIFIER ::= { cmGwObjects 1 }
cmGwDhcpMib OBJECT IDENTIFIER ::= { cmGwObjects 2 }
cmGwNatMib  OBJECT IDENTIFIER ::= { cmGwObjects 3 }
cmGwLogMib  OBJECT IDENTIFIER ::= { cmGwObjects 4 }
--   
-- End of mirror zone
-- 

cmGwAlgMib  OBJECT IDENTIFIER ::= { cmGwObjects 1000 } 
cmGwVirtualServerMib  OBJECT IDENTIFIER ::= { cmGwObjects 1001 }   
cmGwAlgPredefinedMib  OBJECT IDENTIFIER ::= { cmGwObjects 1002 } 
cmGwAdvCfgMib         OBJECT IDENTIFIER ::= { cmGwObjects 1003 } 
cmGwPortTriggerMib    OBJECT IDENTIFIER ::= { cmGwObjects 1004 } 
cmGwFiltersMib        OBJECT IDENTIFIER ::= { cmGwObjects 1005 } 
cmGwFirewallMib       OBJECT IDENTIFIER ::= { cmGwObjects 1006 } 
cmGwProvisioningMib   OBJECT IDENTIFIER ::= { cmGwObjects 1007 } 
cmGwDsliteMib         OBJECT IDENTIFIER ::= { cmGwObjects 1008 } 


--
-- Object definitions ------------------------------
--

--
-- PS DEV mirror tree
--
cmGwWanMacAddress  OBJECT-TYPE
    SYNTAX      PhysAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The WAN MAC address."
    ::= { cmGwBaseMib 1 }

cmGwWanSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes the WAN default 
            options to be returned back to factory defaults.
            Reading this object always returns false(2).
                            
            The following object values are reset when cmGwWanSetToFactory is set to
            'true'. cmGwWanDhcpcAdminStatus is set to it's default value. The values
            of the remaining objects are all cleared. Strings are set to NULL and
            IP addresses are set to 0.0.0.0.    
            
            cmGwWanDhcpcAdminStatus,
            cmGwWanInetAddressType,
            cmGwWanInetAddress,
            cmGwWanHostName,
            cmGwWanSubnetMaskType,
            cmGwWanSubnetMask,
            cmGwWanRouterType,
            cmGwWanRouter

            All entries in cmGwWanDnsServerTable will be destroyed.  
            
            All reset defaults will not take effect until the unit is rebooted.
            "
    ::= { cmGwBaseMib 2 }

cmGwWanDhcpcAdminStatus OBJECT-TYPE
      SYNTAX INTEGER
             {
              enabled(1),
              disabled(2)
             }
      MAX-ACCESS read-write
      STATUS current
      DESCRIPTION
         "The object controls whether the WAN DHCP client in the device is enabled.
          If enabled, the device attempts to acquire network configuration 
          from the network.  If disabled, the configuration of the device must
          be performed manually."
      DEFVAL { enabled }
      ::= { cmGwBaseMib 3 }


--========================================================================
--
--  cmGwWanAddr
--
--=========================================================================

cmGwWanInetAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The address type assigned to the gateway WAN interface.
       
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwBaseMib 4 }

cmGwWanInetAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The address assigned to the gateway WAN interface.
              
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwBaseMib 5 }
    
cmGwWanHostName OBJECT-TYPE
      SYNTAX SnmpAdminString (SIZE(0..80))
      MAX-ACCESS read-write
      STATUS current
      DESCRIPTION
         "The host name of the gateway WAN interface."
      ::= { cmGwBaseMib 6 }

cmGwWanSubnetMaskType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The subnet mask address type assigned to the gateway WAN interface.
              
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwBaseMib 7 }

cmGwWanSubnetMask OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The subnet mask address assigned to the gateway WAN interface.
              
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwBaseMib 8 }

cmGwWanRouterType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The router address type assigned to the gateway WAN interface.
              
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwBaseMib 9 }

cmGwWanRouter OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The router address assigned to the gateway WAN interface.
              
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwBaseMib 10 }
    
--========================================================================
--
--  cmGwWanDnsServerTable 
--
--  The cmGwWanDnsServerTable contains a table of referral DNS Servers.  
--
--=========================================================================
cmGwWanDnsServerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmGwWanDnsServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "When cmGwWanDhcpcAdminStatus is set to enabled, this contains 
            the IP addresses used for the WAN DNS hosts 
            obtained via the DHCP option 6 during the WAN interface
            configuration process.  A maximum of three entries is supported .

            When cmGwWanDhcpcAdminStatus is set to disabled, this contains 
            the IP addresses set by the GUI or NMS. A maximum of three entries are 
            supported by GUI and NMS." 
    ::= {  cmGwBaseMib 12 }

cmGwWanDnsServerEntry OBJECT-TYPE
    SYNTAX      CmGwWanDnsServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "List of WAN DNS Hosts."
    INDEX {cmGwWanAddrDnsServerOrder}
    ::= { cmGwWanDnsServerTable 1 }

CmGwWanDnsServerEntry ::= SEQUENCE {
    cmGwWanAddrDnsServerOrder INTEGER,
    cmGwWanAddrDnsIpType  InetAddressType,   
    cmGwWanAddrDnsIp        InetAddress,
    cmGwWanAddrDnsRowStatus RowStatus
    }


cmGwWanAddrDnsServerOrder OBJECT-TYPE
    SYNTAX INTEGER {
                    primary(1),
                    secondary(2),
                    tertiary(3)
                    }
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
       "The order of preference for Internet DNS servers, as listed in 
        DHCP option 6 (Domain Server) or entered by a user through the 
        GUI/NMS. Any time valid IP address information is recieved within 
        DHCP Option 6, as part of lease acquisition or 
        renewal of a WAN interface IP, it must update this information
        into this table. As entries in DHCP Option 6 are listed in
        order of preference the highest priority entry in DHCP
        Option 6 must correspond to the row with a
        cmGwWanAddrDnsServerOrder with a value of 1. If DHCP
        Option 6 contains 2 valid IP addresses, the agent must update
        the rows with cmGwWanAddrDnsServerOrder values of 1 and 2.
        If DHCP Option 6 contains 3 valid IP addresses, the agent must
        update rows with cmGwWanAddrDnsServerOrder values of 1, 2,
        and 3. Any DNS server information included in DHCP Option 6
        beyond primary, secondary and tertiary will not be
        represented in this table.  A GUI user will only be able to
        enter 3 IP addresses."
    ::= { cmGwWanDnsServerEntry 1 }

cmGwWanAddrDnsIpType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This parameter indicates the IP address type of a DNS server."
    ::= { cmGwWanDnsServerEntry 2 }


cmGwWanAddrDnsIp OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This parameter indicates the IP address of a DNS server."
    ::= { cmGwWanDnsServerEntry 3 }

cmGwWanAddrDnsRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The RowStatus interlock for creation and deletion.
              
       When cmGwWanDhcpcAdminStatus is enabled, this object is read-only."
    ::= { cmGwWanDnsServerEntry 4 }
--
-- CDP mirror tree
--

-- Textual conventions
CmGwLanClientId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "DHCP option61 information."
    SYNTAX OCTET STRING (SIZE (1..80))


cmGwDhcpObjects         OBJECT IDENTIFIER ::= { cmGwDhcpMib 1 }
cmGwDhcpBase            OBJECT IDENTIFIER ::= { cmGwDhcpObjects 1 }
cmGwDhcpServer          OBJECT IDENTIFIER ::= { cmGwDhcpObjects 2 }
cmGwDhcpAddr            OBJECT IDENTIFIER ::= { cmGwDhcpObjects 3 }


cmGwLanDhcpsSetToFactory    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes the LAN DHCP server default 
            options to be returned back to factory defaults and all 
            current mappings to use the factory default settings at 
            the next lease renewal time.  Reading this object always
            returns false(2).
                            
            The objects set to factory defaults are:      
            
            cmGwLanDhcpsAddressPoolStartType,
            cmGwLanDhcpsAddressPoolStart,
            cmGwLanDhcpsSubnetMaskType,
            cmGwLanDhcpsSubnetMask,
            cmGwLanDhcpsDomainName,
            cmGwLanDhcpsTTL,
            cmGwLanDhcpsInterfaceMTU,
            cmGwLanDhcpsLeaseTime,
            cmGwLanDhcpsInetAddressType,
            cmGwLanDhcpsInetAddress,
            cmGwLanDhcpsMaxAddressCount
            cmGwLanDhcpsControl
            
            All entries in cmGwLanAddrTable will be destroyed and default entries
            will be created if any.
                    
            "
    ::= { cmGwDhcpBase 1 }

--
--  DHCP Server Side Option Values for the LAN-side realm
--
cmGwLanDhcpsAddressPoolStartType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The Address type of the start of range LAN IP Addresses."
    DEFVAL { ipv4 } 
    ::= { cmGwDhcpServer 1 }

cmGwLanDhcpsAddressPoolStart OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The start of the range of LAN-side IP Addresses."
    DEFVAL { 'c0a80002'h }  -- 192.168.0.2 
                     --192.168.0.0 is the network number
                            -- 192.168.0.255 is broadcast 
                            -- address and 192.168.0.1
                            -- is reserved for the router
    ::= { cmGwDhcpServer 2 }

cmGwLanDhcpsNetworkNumberType OBJECT-TYPE
    SYNTAX InetAddressType
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The IP address type of the LAN-Trans network number."
    DEFVAL { ipv4 }
    ::= { cmGwDhcpServer 3 }

cmGwLanDhcpsNetworkNumber OBJECT-TYPE
    SYNTAX InetAddress
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The LAN-Trans network number."
    DEFVAL { 'c0a80000'h } --192.168.0.0
    ::= { cmGwDhcpServer 4 }
         
cmGwLanDhcpsSubnetMaskType OBJECT-TYPE
     SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Type of LAN-side Subnet Mask."
    DEFVAL { ipv4 }
    ::= { cmGwDhcpServer 5 }

cmGwLanDhcpsSubnetMask  OBJECT-TYPE
     SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "DHCP option value 1 - Value of LAN-side Subnet Mask."
    DEFVAL { 'ffffff00'h }  -- 255.255.255.0
    ::= { cmGwDhcpServer 6 }

cmGwLanDhcpsDomainName  OBJECT-TYPE
    SYNTAX      SnmpAdminString(SIZE(0..128))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "DHCP option value 15 - Domain name of LAN-side address realm."
    DEFVAL {""}
    ::= { cmGwDhcpServer 7 }

cmGwLanDhcpsTTL OBJECT-TYPE
    SYNTAX      INTEGER (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "DHCP option value 23 - LAN-side Time to Live."
    DEFVAL  { 64 }
    ::= { cmGwDhcpServer 8 }

cmGwLanDhcpsInterfaceMTU    OBJECT-TYPE
    SYNTAX      INTEGER (0 | 68..4096)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "DHCP option value 26 - LAN-side Interface MTU. If the value
             of this object is 0, the DHCP server must not include this 
             option in its DHCP Offer or DHCP Ack message to LAN IP Devices"
    DEFVAL  { 0 }    
    ::= { cmGwDhcpServer 9 }

cmGwLanDhcpsLeaseTime   OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Option value 51 -Lease Time for LAN IP Devices on the LAN side."
    DEFVAL { 3600 }
    ::= { cmGwDhcpServer 10 }

cmGwLanDhcpsInetAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "DHCP option value 54 - Type of LAN-side DHCP server IP address." 
    DEFVAL { ipv4 }
    ::= { cmGwDhcpServer 11 }

cmGwLanDhcpsInetAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "DHCP option value 54 - LAN-side DHCP server IP 
            address."
    DEFVAL { 'c0a80001'h }      --  192.168.0.1
    ::= { cmGwDhcpServer 12 }

cmGwLanDhcpsMaxAddressCount  OBJECT-TYPE
    SYNTAX      Unsigned32 (1..253)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The maximum number of LAN-side leased IP addresses."
    DEFVAL { 253 }
    ::= { cmGwDhcpServer 13 }

cmGwLanDhcpsCurrentLeaseCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The current number of LAN-side leased IP addresses.
            This is a count of LAN side addresses."
    ::= { cmGwDhcpServer 14 }

cmGwLanDhcpsControl OBJECT-TYPE
    SYNTAX INTEGER {
        restoreConfig(1),
        commitConfig(2)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
         "The control for the DHCP Server configuration.  All changes to the cmGwDhcpServer mib objects
          are reflected when reading the value of the mib objects; however, those changes are NOT applied to the
          running configuration of the DHCP Server until they are successfully committed via use of the 
          cwGwLanDhcpsControl object.
          
          If changes are made to the cmGwDhcpServer mib objects which are not successfully committed to the
          DHCP Server, the cmGwLanDhcpsControl object can be used to rollback all changes to the last 
            valid DHCP Server configuration and discard all intermediate changes.
            
          restoreConfig -  Setting cmGwLanDhcpsControl to this value will cause any changes to the
          cmGwDhcpServer objects not yet committed to be reset to the values from the current running 
          configuration of the DHCP Server.
          
          commitConfig -   Setting cmGwLanDhcpsControl to this value will cause the DHCP Server to 
              validate and apply the valid cmGwDhcpServer mib settings to its running configuration.  The 
          cmGwLanDhcpsCommitStatus object will detail the status of this operation."
    DEFVAL { restoreConfig }
    ::= { cmGwDhcpServer 15 }
    
cmGwLanDhcpsCommitStatus OBJECT-TYPE
    SYNTAX INTEGER {
        commitSucceeded(1),
        commitNeeded(2),
        commitFailed(3)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Indicates the status of the commiting the current cmGwDhcpServer mib object values to the running 
             configuration of the DHCP Server.
              
               commitSucceeded -  indicates the current cmGwDhcpServer mib object values are valid
           and have been successfully committed to the running configuration of the DHCP Server.
           
           commitNeeded -  indicates that the value of one or more objects in cmGwDhcpServer
           mib group have been changed but not yet committed to the running configuration
           of the DHCP Server.
           
           commitFailed -  indicates the PS was unable to commit the cabhCdpServer mib
           object values to the running configuration of the DHCP Server due to conflicts in those
           values."
    DEFVAL { commitSucceeded }
    ::= { cmGwDhcpServer 16 }
    

--
--  CDP Address Management Tables
--
--========================================================================
--
--  cmGwLanAddrTable 
--
--  This table contains a list of entries for the LAN side DHCP parameters. 
--  These parameters can be set either by the NMS or the GUI.
--
--=========================================================================

cmGwLanAddrTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmGwLanAddrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table is a list of LAN-side realm parameters." 
    ::= {  cmGwDhcpAddr 1 }

cmGwLanAddrEntry OBJECT-TYPE
    SYNTAX      CmGwLanAddrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "List of general parameters for DHCP mappings."
    INDEX { cmGwLanAddrIpType, cmGwLanAddrIp }
    ::= { cmGwLanAddrTable 1 }

CmGwLanAddrEntry ::= SEQUENCE {
    cmGwLanAddrIpType       InetAddressType,
    cmGwLanAddrIp             InetAddress,
    cmGwLanAddrClientID     CmGwLanClientId,
    cmGwLanAddrLeaseCreateTime  DateAndTime,    
    cmGwLanAddrLeaseExpireTime  DateAndTime,
    cmGwLanAddrMethod       INTEGER,
    cmGwLanAddrHostName     SnmpAdminString, 
    cmGwLanAddrRowStatus        RowStatus
    }

cmGwLanAddrIpType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "The address type assigned on the LAN side for the DHCP Address
       Table."
    ::= { cmGwLanAddrEntry 1 }

cmGwLanAddrIp OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "The address assigned on the LAN side for the DHCP Address
       Table."
    ::= { cmGwLanAddrEntry 2 }

cmGwLanAddrClientID OBJECT-TYPE
    SYNTAX      CmGwLanClientId
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The client ID as indicated in Option 61 of the DHCP Discover. 
       There is a one-to-one relationship between the Client ID and 
       the assigned LAN address. This parameter is entered by the DHCP server 
       when it grants a lease to a LAN IP Device on the LAN side 
       and creates a row in this table. Alternatively, this parameter 
       can be created by the NMS, when the NMS creates 
       a new DHCP address reservation by accessing the cmGwLanAddrRowStatus 
       object with an index comprised of a new cmGwLanAddrIp and its IP type and 
       setting a new cmGwLanAddrClientID."
    ::= { cmGwLanAddrEntry 3 }

cmGwLanAddrLeaseCreateTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "This value is only set when the cmGwLanAddrTable
       entry is created and the entry does not already exist.  In
       other words, this value is not overwritten at lease renewal
       time."
    ::= { cmGwLanAddrEntry 4 }

cmGwLanAddrLeaseExpireTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "This is the time that the LAN side lease expires.  When
       the lease expires this entry will be deleted from the table."
    ::= { cmGwLanAddrEntry 5 }

cmGwLanAddrMethod OBJECT-TYPE
    SYNTAX      INTEGER {
                    staticInactive (1),
                    staticActive(2),
                    dynamicInactive (3),
                    dynamicActive (4)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The method that created this Address Entry and the status of the
        lease.  staticInactive(1) indicates that configuration through the NMS/GUI 
        established this row (entry) and the IP has not yet been reserved or the lease
        has expired.  staticActive(2) indicates that configuration through the NMS/GUI 
        established this row (entry) and the IP lease is currently active. 
        dynamicInactive(3) indicates that a DHCP discover established this row (entry) and 
        that it is currently an expired IP lease.  dynamicActive(4) indicates that a DHCP 
        discover established this row (entry) and the IP lease is currently active."
    ::= { cmGwLanAddrEntry 6 }  
    
cmGwLanAddrHostName OBJECT-TYPE
    SYNTAX      SnmpAdminString(SIZE(0..80))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "This is the Host Name of the LAN IP address, based on DCHP option 12."
    ::= { cmGwLanAddrEntry 7 }

cmGwLanAddrRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The RowStatus interlock for creation and deletion."
    ::= { cmGwLanAddrEntry 8 }


--
-- CAP mirror tree
--
-- Textual conventions

CmGwNatPacketMode ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "The mapping type established when
        a binding/mapping is established."
    SYNTAX  INTEGER {
                napt        (1),    -- NAT with port translation
                --nat           (2),    Basic NAT is not available in the gateway mode 
                passthrough (3) -- Pass Through External Address
                }


cmGwNatObjects      OBJECT IDENTIFIER ::= { cmGwNatMib 1 }
cmGwNatBase         OBJECT IDENTIFIER ::= { cmGwNatObjects 1 }
cmGwNatMap          OBJECT IDENTIFIER ::= { cmGwNatObjects 2 }


--====================================================================
--
--  General NAPT Parameters
--
--====================================================================
cmGwNatSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all the NAPT tables
            to be cleared, and all NAPT objects with defaults to be reset back to
            their default values.
            
            The objects set to factory defaults are:  
            
            cmGwNatTcpTimeWait,
            cmGwNatUdpTimeWait,
            cmGwNatIcmpTimeWait,
            cmGwNatPrimaryMode,
            cmGwNatGamingDMZIpAddrType,
            cmGwNatGamingDMZIpAddr
            
            All entries in cmGwNatPassthroughTable
            will be destroyed. The default entries will be created if any.
            
            " 
    ::= { cmGwNatBase 1 }

cmGwNatTcpTimeWait OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This object is the maximum inactivity time to wait before assuming TCP
            session is terminated. It has no relation to the TCP session TIME_WAIT
            state referred to in [FC793]"
    DEFVAL { 86400 }       -- 24 hours     
    ::= { cmGwNatBase 2 }

cmGwNatUdpTimeWait OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The maximum time to wait before assuming UDP
            session is terminated."
    DEFVAL { 300 }     -- 5 minutes
    ::= { cmGwNatBase 3 }

cmGwNatIcmpTimeWait OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The inactivity time to wait before destroying mappings for ICMP."
    DEFVAL { 300 }        -- 5 minutes
    ::= { cmGwNatBase 4 }
                    
cmGwNatPrimaryMode OBJECT-TYPE
    SYNTAX      CmGwNatPacketMode
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The Primary Packet Handling Mode to be used."
    DEFVAL { napt }
    ::= { cmGwNatBase 5 }
                      
cmGwNatGamingDMZIpAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The address type assigned to cmGwNatGamingDMZIpAddr."      
    DEFVAL { ipv4 }       
    ::= { cmGwNatBase 6 }
               
cmGwNatGamingDMZIpAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The Ip address of the NAT'd Gaming DMZ host which is the default port 
            forwarder and bypasses the firewall."
    DEFVAL { '00000000'h }        
    ::= { cmGwNatBase 7 }

--========================================================================
--
--  cmGwNatMappingTable 
--
--  The cmGwNatMappingTable contains the mappings for all NAPT mappings.     
--
--=========================================================================

cmGwNatMappingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmGwNatMappingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains IP address and port translation information
            for all address translation mappings."
    ::= {  cmGwNatMap 1 }

cmGwNatMappingEntry OBJECT-TYPE
    SYNTAX      CmGwNatMappingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "List of IP address translation and port translation mappings."
    INDEX { cmGwNatMappingIndex }
    ::= { cmGwNatMappingTable 1 }

CmGwNatMappingEntry ::= SEQUENCE {
    cmGwNatMappingIndex             INTEGER,
    cmGwNatMappingWanAddrType       InetAddressType,
    cmGwNatMappingWanAddr           InetAddress,
    cmGwNatMappingWanPort           InetPortNumber,
    cmGwNatMappingLanAddrType       InetAddressType,
    cmGwNatMappingLanAddr           InetAddress,
    cmGwNatMappingLanPort           InetPortNumber,
    cmGwNatMappingMethod            INTEGER,
    cmGwNatMappingProtocol          INTEGER,
    cmGwNatMappingRowStatus         RowStatus
    }

cmGwNatMappingIndex    OBJECT-TYPE
    SYNTAX              INTEGER   (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "The Index into the Mapping Table."
    ::= { cmGwNatMappingEntry 1 }
                      
cmGwNatMappingWanAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The IP address type assigned on the WAN side.  IP version
          4 is typically used."
    DEFVAL { ipv4 }
    ::= { cmGwNatMappingEntry 2 }

cmGwNatMappingWanAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The IP address assigned on the WAN side.  IP version 4
       is typically used."
    ::= { cmGwNatMappingEntry 3 }
                      
cmGwNatMappingWanPort OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The TCP/UDP port number on the WAN side."
    DEFVAL { 0 }
    ::= { cmGwNatMappingEntry 4 }

cmGwNatMappingLanAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The IP address type assigned on the LAN side."
    DEFVAL { ipv4 }
    ::= { cmGwNatMappingEntry 5 }

cmGwNatMappingLanAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The IP address assigned on the LAN side.
       This parameter is entered by the DHCP server when it grants a lease to a 
       LAN IP Device on the LAN side and creates a row in this table. 
       Alternatively, this parameter can be created by the NMS, 
       when the NMS creates a new DHCP address reservation by accessing the 
       cmGwNatMappingRowStatus object with an index comprised of a new 
       cmGwNatMappingLanAddr and its Type."
    ::= { cmGwNatMappingEntry 6 }

cmGwNatMappingLanPort OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The TCP/UDP port number on the LAN side."
    DEFVAL { 0 }
    ::= { cmGwNatMappingEntry 7 }

cmGwNatMappingMethod OBJECT-TYPE
    SYNTAX      INTEGER {
        static   (1),   
        dynamic (2)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "Indicates how this mapping was created.  Static means that it was provisioned, and dynamic
       means that it was handled by the gateway itself."
    ::= { cmGwNatMappingEntry 8 }
    
cmGwNatMappingProtocol OBJECT-TYPE
    SYNTAX      INTEGER {
        other       (1),    -- not specified
        icmp        (2),
        udp     (3),
        tcp     (4)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The protocol for this mapping."
    ::= { cmGwNatMappingEntry 9 }

cmGwNatMappingRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The RowStatus interlock for the creation and deletion of a cmGwNatMappingTable entry.
        Changing the value of the IP address or port number columns of the Gateway NAT Mapping
        Table may have an effect on active traffic, so the SNMP entity will prevent modification of this
        table's columns when the cmGwNatMappingRowStatus object is in the active state."
    ::={ cmGwNatMappingEntry 10 }


--========================================================================
--
--  cmGwNatPassthroughTable 
--
--  The cmGwNatPassthroughTable contains the MAC Addresses for all LAN-IP Devices
--  which will be configured as passthrough.     
--
--=========================================================================

cmGwNatPassthroughTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmGwNatPassthroughEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains MAC addresses for LAN-IP Devices which are configured
         as passthrough mode." 
    ::= {  cmGwNatMap 2 }

cmGwNatPassthroughEntry OBJECT-TYPE
    SYNTAX      CmGwNatPassthroughEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "List of hardware addresses for LAN IP Devices which are configured as passthrough mode."
    INDEX {cmGwNatPassthroughIndex }
    ::= { cmGwNatPassthroughTable 1 }
    
CmGwNatPassthroughEntry ::= SEQUENCE {
    cmGwNatPassthroughIndex         INTEGER,
    cmGwNatPassthroughMACAddr       PhysAddress,
    cmGwNatPassthroughDMZEnable     TruthValue,
    cmGwNatPassthroughRowStatus     RowStatus
    }

cmGwNatPassthroughIndex OBJECT-TYPE
    SYNTAX  INTEGER (1..65535)
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
         "The index into the passthrough table."
    ::= {cmGwNatPassthroughEntry 1 }

cmGwNatPassthroughMACAddr OBJECT-TYPE
    SYNTAX  PhysAddress
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION
         "MAC Address of LAN-IP Device to be configured as passthrough mode."
    ::= {cmGwNatPassthroughEntry 2 }

cmGwNatPassthroughDMZEnable OBJECT-TYPE
    SYNTAX  TruthValue
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION
         "When this value is set to true, traffic for this device will not be firewalled."
    ::= {cmGwNatPassthroughEntry 3 }

cmGwNatPassthroughRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The RowStatus interlock for the creation and deletion
        of a cmGwNatPassthroughTable entry. There are no
        restrictions on setting the read-create column of this table
        (i.e., cmGwNatPassthroughMACAddr ) when the status
        of cabhCapPassthroughRowStatus is active."
    ::= { cmGwNatPassthroughEntry 4 }

--
-- DOCSIS DEV mirror tree
--

--
--  Event Reporting
--

cmGwDevEvent OBJECT IDENTIFIER ::= { cmGwLogMib 1 }

cmGwDevEvControl OBJECT-TYPE
        SYNTAX INTEGER {
            resetLog(1)
        }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Setting this object to resetLog(1) empties the event log.
             All data is deleted. Reading this object always returns
             resetLog(1)."
        ::= { cmGwDevEvent 1 }

cmGwDevEventTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF CmGwDevEventEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Contains a log of network and device events that may be
             of interest in fault isolation and troubleshooting."
        ::= {  cmGwDevEvent 2 }

cmGwDevEventEntry OBJECT-TYPE
        SYNTAX      CmGwDevEventEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes a network or device event that may be of
             interest in fault isolation and troubleshooting. Multiple
             sequential identical events are represented by
             incrementing cmGwDevEvCounts and setting
             cmGwDevEvLastTime to the current time rather than creating
             multiple rows.

             Entries are created with the first occurrance of an event.
             cmGwDevEvControl can be used to clear the table.
             Individual events can not be deleted."
        INDEX { cmGwDevEvIndex }

        ::= { cmGwDevEventTable 1 }

CmGwDevEventEntry ::= SEQUENCE {
            cmGwDevEvIndex           Integer32,
            cmGwDevEvFirstTime       DateAndTime,
            cmGwDevEvLastTime        DateAndTime,
            cmGwDevEvCounts          Counter32,
            cmGwDevEvLevel           INTEGER,
            cmGwDevEvId              Unsigned32,
            cmGwDevEvText            SnmpAdminString
        }

cmGwDevEvIndex OBJECT-TYPE
        SYNTAX      Integer32 (1..2147483647)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Provides relative ordering of the objects in the event
             log. This object will always increase except when
             (a) the log is reset via cmGwDevEvControl,
             (b) the device reboots and does not implement non-volatile
             storage for this log, or (c) it reaches the value 2^31.
             The next entry for all the above cases is 1."
        ::= { cmGwDevEventEntry 1 }

cmGwDevEvFirstTime OBJECT-TYPE
        SYNTAX      DateAndTime
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The time that this entry was created."
        ::= { cmGwDevEventEntry 2 }

cmGwDevEvLastTime OBJECT-TYPE
        SYNTAX      DateAndTime
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "If multiple events are reported via the same entry, the
             time that the last event for this entry occurred,
             otherwise this should have the same value as
             cmGwDevEvFirstTime. "
        ::= { cmGwDevEventEntry 3 }

-- This object was renamed from cmGwDevEvCount to meet naming
-- requirements for Counter32
cmGwDevEvCounts OBJECT-TYPE
        SYNTAX      Counter32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of consecutive event instances reported by
             this entry.  This starts at 1 with the creation of this
             row and increments by 1 for each subsequent duplicate
             event."
        ::= { cmGwDevEventEntry 4 }

cmGwDevEvLevel OBJECT-TYPE
        SYNTAX INTEGER {
            emergency(1),
            alert(2),
            critical(3),
            error(4),
            warning(5),
            notice(6),
            information(7),
            debug(8)
        }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The priority level of this event as defined by the
             vendor.  These are ordered from most serious (emergency)
             to least serious (debug)."
        ::= { cmGwDevEventEntry 5 }

--
-- Gateway DS lite information
--
cmGwDsliteObjects  OBJECT IDENTIFIER ::= { cmGwDsliteMib 1 }

cmGwDsliteEnabled OBJECT-TYPE     
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Enables or disable DS-lite support in the device."
    ::= { cmGwDsliteObjects 1 }

cmGwDsliteAftrAddress OBJECT-TYPE
    SYNTAX     InetAddressIPv6 
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "IPv6 address of the AFTR endpoint of the DS-lite tunnel."
    ::= { cmGwDsliteObjects 2 }

cmGwDslitePcpMode OBJECT-TYPE
    SYNTAX      INTEGER {
                plain(1),
                encapsulation(2)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "PCP (Port Control Protocol) operational mode"
    DEFVAL { plain }
    ::= { cmGwDsliteObjects 3 }

cmGwDsliteTcpMssClamping OBJECT-TYPE
    SYNTAX      INTEGER (0..1420)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Specifies  whether TCP MSS clamping is enabled on the interface. 
         0 disables clamping, 1 clamps the MSS depending on the 
         interface MTU. A value > 1 will be used as clamping size."
    DEFVAL { 0 }
    ::= { cmGwDsliteObjects 4 }

cmGwDsliteIPv4FragEnabled OBJECT-TYPE     
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Enables or disable IPv4 fragmentation in DS-Lite"
    ::= { cmGwDsliteObjects 5 }
    
--
-- Vendors will provide their own enumerations for the following.
-- The interpretation of the enumeration is unambiguous for a
-- particular value of the vendor's enterprise number in sysObjectID.
--

cmGwDevEvId OBJECT-TYPE
        SYNTAX      Unsigned32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "For this product, uniquely identifies the type of event
             that is reported by this entry."
        ::= { cmGwDevEventEntry 6 }

cmGwDevEvText OBJECT-TYPE
        SYNTAX      SnmpAdminString
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Provides a human-readable description of the event,
             including all relevant context (interface numbers,
             etc.)."
        ::= { cmGwDevEventEntry 7 }
           
--           
-- Application Level Gw information
--
cmGwAlgObjects  OBJECT IDENTIFIER ::= { cmGwAlgMib 1 }

cmGwAlgSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all Port Trigger entries to be cleared to default values.
            Reading this object always returns false(2).
            " 
    ::= { cmGwAlgObjects 1 }

cmGwAlgTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwAlgEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of ALGs (Port Triggers) supported by this device.
         This table currently supports up to 47 configureable entries.
         
         The first 15 entries are predefined and only cmGwAlgEnable field can be modified
         by NMS/GUI. 
                                    
         The rest of additional 32 entries along with writable field objects are user configureable.
         "
      ::= { cmGwAlgObjects 2 }

cmGwAlgEntry OBJECT-TYPE
      SYNTAX CmGwAlgEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies parameters about an ALG (Port Trigger) ."
      INDEX { cmGwAlgIndex }
      ::= { cmGwAlgTable 1 }

CmGwAlgEntry ::=
      SEQUENCE {
         cmGwAlgIndex
            Unsigned32,      
         cmGwAlgName
            SnmpAdminString,
         cmGwAlgProtocol
            INTEGER,
         cmGwAlgPortFrom
            InetPortNumber,
         cmGwAlgPortTo
            InetPortNumber,
         cmGwAlgSessionChaining
            INTEGER,
         cmGwAlgSessionInterval
            Unsigned32,
         cmGwAlgAddressReplacement
            INTEGER,
         cmGwAlgMultipleHostEnable
            TruthValue,        
         cmGwAlgEnable
            TruthValue,
         cmGwAlgStatus
            RowStatus  
         }

cmGwAlgIndex OBJECT-TYPE 
      SYNTAX      Unsigned32 (1..47) 
      MAX-ACCESS  not-accessible 
      STATUS      current 
      DESCRIPTION 
         "The index for this ALG (Port Trigger)."
      ::= { cmGwAlgEntry 1 }
      
cmGwAlgName OBJECT-TYPE 
      SYNTAX      SnmpAdminString (SIZE(0..20)) 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Unique name for this ALG (Port Trigger)." 
      DEFVAL { "" }
      ::= { cmGwAlgEntry 2 }
 
cmGwAlgProtocol OBJECT-TYPE 
      SYNTAX      INTEGER 
                  {
                     tcp(1),
                     udp(2)
                  }       
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Protocol type for this ALG (Port Trigger)."
      DEFVAL { udp }           
      ::= { cmGwAlgEntry 3 }
      
cmGwAlgPortFrom OBJECT-TYPE 
      SYNTAX      InetPortNumber 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Start port for this ALG (Port Trigger)."           
      ::= { cmGwAlgEntry 4 } 
      
cmGwAlgPortTo OBJECT-TYPE 
      SYNTAX      InetPortNumber 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "End port for this ALG (Port Trigger)."           
      ::= { cmGwAlgEntry 5 }
      
cmGwAlgSessionChaining OBJECT-TYPE 
      SYNTAX      INTEGER
                  { 
                    disabled(1),
                    tcp(2),
                    tcpAndUdp(3)
                  } 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Control session chaining for this ALG (Port Trigger)."
      DEFVAL { disabled }           
      ::= { cmGwAlgEntry 6 }
      
cmGwAlgSessionInterval OBJECT-TYPE 
      SYNTAX      Unsigned32 (0..30000)
      UNITS       "seconds" 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Control session interval in seconds for this ALG (Port Trigger)."
      DEFVAL { 3600 }           
      ::= { cmGwAlgEntry 7 }
      
cmGwAlgAddressReplacement OBJECT-TYPE 
      SYNTAX      INTEGER
                  { 
                    disabled(1),
                    tcp(2),
                    udp(3),
                    tcpAndUdp(4)
                  } 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Controls the type of address replacement to be performed for this ALG (Port Trigger)."
      DEFVAL { tcpAndUdp }           
      ::= { cmGwAlgEntry 8 }
      
cmGwAlgMultipleHostEnable OBJECT-TYPE 
      SYNTAX      TruthValue
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Set to true to only allow new Port Trigger session initiated from/to the same remote host.
         Set to false to allow new session initated from/to different remote hosts."
       DEFVAL { false }           
      ::= { cmGwAlgEntry 9 }

cmGwAlgEnable OBJECT-TYPE 
      SYNTAX      TruthValue 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Set to true to enable this Alg (Port Trigger).
         Set to false to disable this Alg (Port Trigger)."
       DEFVAL { true }           
      ::= { cmGwAlgEntry 10 }

cmGwAlgStatus OBJECT-TYPE
      SYNTAX RowStatus
      MAX-ACCESS read-create
      STATUS current
      DESCRIPTION
         "Controls the creation and modification of Port Trigger entries in this table.
         To change any ALG(Port Trigger) MIB objects will require cmGwAlgStatus to set to 
         'not-in-service' and reset back to 'active' in order to populate Port Trigger entry 
         correctly with the latest Port Trigger data."
                  
      ::= { cmGwAlgEntry 11 }
                        
                        
--           
-- Virtual Server Gw information
--
cmGwVirtualServerObjects  OBJECT IDENTIFIER ::= { cmGwVirtualServerMib 1 }

cmGwVirtualServerSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all Port Forwarding entries to be cleared 
            to default values. Reading this object always returns false(2)." 
    ::= { cmGwVirtualServerObjects 1 }

cmGwVirtualServerTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwVirtualServerEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of virtual server (Port Forwarding) entry supported by this device.
         This table currently supports 32 configureable entries.
         "
      ::= { cmGwVirtualServerObjects 2 }

cmGwVirtualServerEntry OBJECT-TYPE
      SYNTAX CmGwVirtualServerEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies parameters about a virtual server (Port Forwarding).
          Note: For products that support USB applications, the first entry in this table is 
          reserved for internal use and may not be replaced, modified, or deleted."
      INDEX { cmGwVirtualServerIndex }
      ::= { cmGwVirtualServerTable 1 }

CmGwVirtualServerEntry ::= SEQUENCE {
    cmGwVirtualServerIndex              INTEGER,
    cmGwVirtualServerName               SnmpAdminString,
    cmGwVirtualServerType               INTEGER,    
    cmGwVirtualServerPort1              InetPortNumber,
    cmGwVirtualServerPort2              InetPortNumber, 
    cmGwVirtualServerLanAddrType        InetAddressType,
    cmGwVirtualServerLanAddr            InetAddress,
    cmGwVirtualServerEnable             TruthValue,
    cmGwVirtualServerRowStatus          RowStatus,
    cmGwVirtualServerProtocol           INTEGER
    }

cmGwVirtualServerIndex    OBJECT-TYPE
    SYNTAX              INTEGER   (1..32)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "The Index into the virtual server (Port Forwarding) Table."
    ::= { cmGwVirtualServerEntry 1 }
           
cmGwVirtualServerName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(0..10))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The server name for this virtual server (Port Forwarding) entry.
       The server name can be empty string."
    DEFVAL { "" }
    ::= { cmGwVirtualServerEntry 2 } 
                
cmGwVirtualServerType OBJECT-TYPE
    SYNTAX      INTEGER {
        wanPortRange(1) 
-- portTranslation(2)
        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "Indicates how cmGwVirtualServerPort1 and cmGwVirtualServerPort2 used.  
       wanPortRange(1) means that cmGwVirtualServerPort1 is the starting WAN port range 
       and cmGwVirtualServerPort2 is the ending WAN port range."  
    DEFVAL { wanPortRange }       
    ::= { cmGwVirtualServerEntry 3 }
                    
cmGwVirtualServerPort1 OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The TCP/UDP port number 1."
    DEFVAL { 0 }
    ::= { cmGwVirtualServerEntry 4 }
    
cmGwVirtualServerPort2 OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The TCP/UDP port number 2."
    DEFVAL { 0 }
    ::= { cmGwVirtualServerEntry 5 }
    
cmGwVirtualServerLanAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The IP address type assigned on the LAN side."
    DEFVAL { ipv4 }
    ::= { cmGwVirtualServerEntry 6 }

cmGwVirtualServerLanAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The IP address assigned on the LAN side.
          The first 3 octets default value should be the LAN Private IP Address (192.168.0) 
          and 0 for the last octet.

          The last octet has to be changed to some value within the configured range 
          other than 0 when the entry is set to active."
    DEFVAL {"192.168.0.0"}
    ::= { cmGwVirtualServerEntry 7 }
   
cmGwVirtualServerEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "Set to true to enable this virtual server (Port Forwarding) entry.
       Set to false to disable this virtual server (Port Forwarding) entry."
    DEFVAL { true }
    ::= { cmGwVirtualServerEntry 8 }

cmGwVirtualServerRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The RowStatus interlock for the creation and deletion of a cmGwVirtualServerTable entry.
        The SNMP entity will prevent modification of this table's columns when the cmGwVirtualServerRowStatus 
        object is in the active state.
        To change any Virtual Server(Port Forwarding) MIB objects will require cmGwVirtualServerRowStatus to set to 
        'not-in-service' and reset back to 'active' in order to populate Port Forwarding entry 
         correctly with the latest Port Forwarding data."

    ::={ cmGwVirtualServerEntry 9 }
                        
cmGwVirtualServerProtocol OBJECT-TYPE
    SYNTAX      INTEGER 
                {
                   tcp(1),
                   udp(2),
                   both(3)
                }       
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
         "Protocol type for this virtual server (Port Forwarding) entry."
    
    ::={ cmGwVirtualServerEntry 10 }

cmGwVirtualServerUSBAppsPort OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The TCP/UDP port number used to create a port forwarding table entry to allow 
             users access to the internal USB_Apps GUI pages from the internet." 
    DEFVAL { 9880 }
    ::= { cmGwVirtualServerObjects 3 }
                        
--           
-- Application Level Gateway Predefined information
--
cmGwAlgPredfinedObjects  OBJECT IDENTIFIER ::= { cmGwAlgPredefinedMib 1 }

cmGwAlgPredefinedTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwAlgPredefinedEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of predefined ALGs supported by this device.
          Note: This table contains predefined entries for true NAT ALGs (Application Level
          Gateways) for protocols that embed the host IP address inside the protocol data of 
          the IP packet. The cmGwPortTriggeTable that is also in this MIB handles NAT Port Triggers, 
          not the types of ALGs supported by this table. This table only allows for the 
          enabling/disabling of the predefined ALGs. It does not allow for the creation of 
          new ALGs."
      ::= { cmGwAlgPredfinedObjects 1 }

cmGwAlgPredefinedEntry OBJECT-TYPE
      SYNTAX CmGwAlgPredefinedEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies parameters about a predefined ALG."
      INDEX { cmGwAlgPredefinedIndex }
      ::= { cmGwAlgPredefinedTable 1 }

CmGwAlgPredefinedEntry ::=
      SEQUENCE {
         cmGwAlgPredefinedIndex
            Unsigned32,      
         cmGwAlgPredefinedName
            SnmpAdminString, 
         cmGwAlgPredefinedEnable
            TruthValue
         }

cmGwAlgPredefinedIndex OBJECT-TYPE 
      SYNTAX      Unsigned32
      MAX-ACCESS  not-accessible 
      STATUS      current 
      DESCRIPTION 
         "The index for this predefined ALG."
      ::= { cmGwAlgPredefinedEntry 1 }
      
cmGwAlgPredefinedName OBJECT-TYPE 
      SYNTAX      SnmpAdminString
      MAX-ACCESS  read-only 
      STATUS      current 
      DESCRIPTION 
         "Unique name for this predefined ALG." 
      ::= { cmGwAlgPredefinedEntry 2 }
 
cmGwAlgPredefinedEnable OBJECT-TYPE 
      SYNTAX      TruthValue 
      MAX-ACCESS  read-write 
      STATUS      current 
      DESCRIPTION 
         "Set to true to enable this predefined ALG.
         Set to false to disable this predefined ALG."         
      ::= { cmGwAlgPredefinedEntry 3 }
          

--           
-- Advanced Config Objects Predefined information
--

cmGwAdvCfgObjects  OBJECT IDENTIFIER ::= { cmGwAdvCfgMib 1 }

cmGwAdvCfgUPnPEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) enables UPnP on the Gateway device.
             Setting this object to false(2) disables UPnP on the Gateway device."
     ::= { cmGwAdvCfgObjects 1 }

cmGwAdvCfgIpsecPassThroughEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) enables Internet Protocol Security (Ipsec) 
             passthrough on the Gateway device.
             Setting this object to false(2) disables Internet Protocol Security (Ipsec) 
             passthrough on the Gateway device."
     ::= { cmGwAdvCfgObjects 2 }

cmGwAdvCfgPptpPassThroughEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) enables Point-to-Point Tunneling  
             Protocol (PPTP) passthrough on the Gateway device.
             Setting this object to false(2) disables Point-to-Point Tunneling 
             Protocol (PPTP) passthrough on the Gateway device."
     ::= { cmGwAdvCfgObjects 3 }

cmGwAdvCfgParentalControl OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This is the status mib of the current state of the Parental Control Settings
             that are stored in NonVol. The format will be delimited by a ;.
             The first value will be if the parental control is Enabled or Disabled,
             then it will display the number of rules, and lastly display the number
             of users if there are any users in the Parental Control.
             For example: Enabled; 5 rules; 3 users"
     ::= { cmGwAdvCfgObjects 4 }       
     
--           
-- Port Trigger information
--
cmGwPortTriggerObjects  OBJECT IDENTIFIER ::= { cmGwPortTriggerMib 1 }

cmGwPortTriggerSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all Port Trigger entries to be cleared.
             Reading this object always returns false(2)." 
    ::= { cmGwPortTriggerObjects 1 }

cmGwPortTriggerTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwPortTriggerEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of Port Triggers supported by this device."         
      ::= { cmGwPortTriggerObjects 2 }

cmGwPortTriggerEntry OBJECT-TYPE
      SYNTAX CmGwPortTriggerEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies parameters for a Port Trigger."
      INDEX { cmGwPortTriggerIndex }
      ::= { cmGwPortTriggerTable 1 }

CmGwPortTriggerEntry ::=
      SEQUENCE {
         cmGwPortTriggerIndex
            Unsigned32,      
         cmGwPortTriggerStartPortTriggerRange
            InetPortNumber,
         cmGwPortTriggerEndPortTriggerRange
            InetPortNumber,
         cmGwPortTriggerStartPortTargetRange
            InetPortNumber,
         cmGwPortTriggerEndPortTargetRange
            InetPortNumber,
         cmGwPortTriggerProtocol
            INTEGER,
         cmGwPortTriggerEnable
            TruthValue,
         cmGwPortTriggerRowStatus
            RowStatus  
         }

cmGwPortTriggerIndex OBJECT-TYPE 
      SYNTAX      Unsigned32 
      MAX-ACCESS  not-accessible 
      STATUS      current 
      DESCRIPTION 
         "The index for this Port Trigger."
      ::= { cmGwPortTriggerEntry 1 }
  
cmGwPortTriggerStartPortTriggerRange OBJECT-TYPE 
      SYNTAX      InetPortNumber 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Start port of Trigger Range for this Port Trigger. Trigger Range defines the range of ports
          that will act as a trigger to open the ports set by Target Range."           
      ::= { cmGwPortTriggerEntry 2 } 
      
cmGwPortTriggerEndPortTriggerRange OBJECT-TYPE 
      SYNTAX      InetPortNumber 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "End port of Trigger Range for this Port Trigger. Trigger Range defines the range of ports 
          that will act as a trigger to open the ports set by Target Range."           
      ::= { cmGwPortTriggerEntry 3 }

cmGwPortTriggerStartPortTargetRange OBJECT-TYPE 
      SYNTAX      InetPortNumber 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Start port of Target Range for this Port Trigger. When the gateway detects outgoing data on 
          a specific port number set in the Trigger Range(cmGwPortTriggerStartPortTriggerRange - cmGwPortTriggerEndPortTriggerRange),
          the resulting ports set in Target Range(cmGwPortTriggerStartPortTargetRange - cmGwPortTriggerEndPortTargetRange)
          are opened for incoming data."           
      ::= { cmGwPortTriggerEntry 4 } 
      
cmGwPortTriggerEndPortTargetRange OBJECT-TYPE 
      SYNTAX      InetPortNumber 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "End port of Target Range for this Port Trigger. When the gateway detects outgoing data on a 
          specific port number set in the Trigger Range(cmGwPortTriggerStartPortTriggerRange - cmGwPortTriggerEndPortTriggerRange),
          the resulting ports set in Target Range(cmGwPortTriggerStartPortTargetRange - cmGwPortTriggerEndPortTargetRange)
          are opened for incoming data."           
      ::= { cmGwPortTriggerEntry 5 }
      
cmGwPortTriggerProtocol OBJECT-TYPE 
      SYNTAX      INTEGER 
                  {
                     tcp(1),
                     udp(2),
                     both(3)
                  }       
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Protocol type for this Port Trigger."
      ::= { cmGwPortTriggerEntry 6 }

cmGwPortTriggerEnable OBJECT-TYPE 
      SYNTAX      TruthValue 
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Set to true to enable this Port Trigger.
          Set to false to disable this Port Trigger."
       DEFVAL { true }           
      ::= { cmGwPortTriggerEntry 7 }

cmGwPortTriggerRowStatus OBJECT-TYPE
      SYNTAX RowStatus
      MAX-ACCESS read-create
      STATUS current
      DESCRIPTION
         "The RowStatus interlock for the creation and deletion of a cmGwPortTriggerTable entry.
          The SNMP entity will prevent modification of this table's columns when cmGwPortTriggerRowStatus 
          object is in the active state.
          To change any columns of this table, cmGwPortTriggerRowStatus must be set to 
          'not-in-service' and then set back to 'active' in order to populate Port Trigger entry 
          correctly with the latest Port Trigger data."              
      ::= { cmGwPortTriggerEntry 8 }
                        

cmGwFiltersObjects    OBJECT IDENTIFIER ::= { cmGwFiltersMib 1 }
cmGwFiltersIpFilter   OBJECT IDENTIFIER ::= { cmGwFiltersObjects 1 } 
               
--           
-- IP Filtering information
--

cmGwFiltersIpFilterSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all IP Filter entries in cmGwIpFilterTable to be 
             cleared.
             Reading this object always returns false(2)." 
    ::= { cmGwFiltersIpFilter 1 }

cmGwFiltersIpFilterTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwFiltersIpFilterEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of IP address filters used to block internet traffic to specific network devices
          on the LAN."
      ::= { cmGwFiltersIpFilter 2 }

cmGwFiltersIpFilterEntry OBJECT-TYPE
      SYNTAX CmGwFiltersIpFilterEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies parameters for an IP address filter."
      INDEX { cmGwFiltersIpFilterIndex }
      ::= { cmGwFiltersIpFilterTable 1 }

CmGwFiltersIpFilterEntry ::=
      SEQUENCE {
         cmGwFiltersIpFilterIndex
            Unsigned32,
         cmGwFiltersIpFilterAddressType      
            InetAddressType,
         cmGwFiltersIpFilterStartAddress
            InetAddress,
         cmGwFiltersIpFilterEndAddress
            InetAddress,
         cmGwFiltersIpFilterEnable
            TruthValue,
         cmGwFiltersIpFilterRowStatus
            RowStatus  
         }

cmGwFiltersIpFilterIndex OBJECT-TYPE 
      SYNTAX      Unsigned32 
      MAX-ACCESS  not-accessible 
      STATUS      current 
      DESCRIPTION 
         "The index for this IP address filter."
      ::= { cmGwFiltersIpFilterEntry 1 } 
      
cmGwFiltersIpFilterAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The IP address type assigned on the LAN side."
    DEFVAL { ipv4 }
    ::= { cmGwFiltersIpFilterEntry 2 }

cmGwFiltersIpFilterStartAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The Start IP address for this IP address filter. This address must be within the range of 
        LAN side IP addresses."
    ::= { cmGwFiltersIpFilterEntry 3 }   
    
cmGwFiltersIpFilterEndAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The End IP address for this IP filter. This address must be within the range of 
        LAN side IP addresses."
    ::= { cmGwFiltersIpFilterEntry 4 }
   
cmGwFiltersIpFilterEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "Set to true to enable this IP Filter.
        Set to false to disable this IP Filter."
    DEFVAL { true }
    ::= { cmGwFiltersIpFilterEntry 5 }

cmGwFiltersIpFilterRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The RowStatus interlock for the creation and deletion of a cmGwFiltersIpFilterTable entry.
        The SNMP entity will prevent modification of this table's columns when cmGwFiltersIpFilterRowStatus 
        object is in the active state.
        To change any columns of this table, cmGwFiltersIpFilterRowStatus must be set to 
        'not-in-service' and then set back to 'active' in order to populate IP Filter entry 
        correctly with the latest IP Filter data."
    ::={ cmGwFiltersIpFilterEntry 6 } 
    
--           
-- MAC Filtering information
--
cmGwFiltersMacFilter  OBJECT IDENTIFIER ::= { cmGwFiltersObjects 2 }

cmGwFiltersMacFilterSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all MAC Filter entries in cmGwMacFilterTable to be 
             cleared.
             Reading this object always returns false(2)." 
    ::= { cmGwFiltersMacFilter 1 }

cmGwFiltersMacFilterTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwFiltersMacFilterEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of MAC address filters used to block internet traffic to specific network devices
          on the LAN."
      ::= { cmGwFiltersMacFilter 2 }

cmGwFiltersMacFilterEntry OBJECT-TYPE
      SYNTAX CmGwFiltersMacFilterEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies MAC address of the network device to be blocked from internet access."
      INDEX { cmGwFiltersMacFilterIndex }
      ::= { cmGwFiltersMacFilterTable 1 }

CmGwFiltersMacFilterEntry ::=
      SEQUENCE {
         cmGwFiltersMacFilterIndex
            Unsigned32,
         cmGwFiltersMacFilterMacAddress    
            PhysAddress,
         cmGwFiltersMacFilterRowStatus
            RowStatus  
         }

cmGwFiltersMacFilterIndex OBJECT-TYPE 
      SYNTAX      Unsigned32 
      MAX-ACCESS  not-accessible 
      STATUS      current 
      DESCRIPTION 
         "The index for this MAC address filter."
      ::= { cmGwFiltersMacFilterEntry 1 } 

cmGwFiltersMacFilterMacAddress  OBJECT-TYPE
    SYNTAX      PhysAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "MAC address of the network device to be blocked from internet access."
    ::= { cmGwFiltersMacFilterEntry 2 }      

cmGwFiltersMacFilterRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "There are no restrictions on setting the read-create columns of this table
         when the status of cmGwMacFilterRowStatus is 'active'."
    ::={ cmGwFiltersMacFilterEntry 3 } 
                    
 
--           
-- Port Filtering information
--
cmGwFiltersPortFilter  OBJECT IDENTIFIER ::= { cmGwFiltersObjects 3 }

cmGwFiltersPortFilterSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) causes all Port Filter entries in cmGwPortFilterTable to be 
             cleared.
             Reading this object always returns false(2)." 
    ::= { cmGwFiltersPortFilter 1 }

cmGwFiltersPortFilterTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CmGwFiltersPortFilterEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Table of Port filters used to block specific internet services to all devices on the LAN. 
          These are outbound Port Filters that prevent LAN devices from sending outgoing traffic 
          to the WAN on specified port numbers."
      ::= { cmGwFiltersPortFilter 2 }

cmGwFiltersPortFilterEntry OBJECT-TYPE
      SYNTAX CmGwFiltersPortFilterEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "Each entry specifies parameters about a Port filtering rule."
      INDEX { cmGwFiltersPortFilterIndex }
      ::= { cmGwFiltersPortFilterTable 1 }

CmGwFiltersPortFilterEntry ::=
      SEQUENCE {
         cmGwFiltersPortFilterIndex
            Unsigned32,
         cmGwFiltersPortFilterStartPort    
            InetPortNumber,
         cmGwFiltersPortFilterEndPort
            InetPortNumber, 
         cmGwFiltersPortFilterProtocol
            INTEGER,
         cmGwFiltersPortFilterEnable
            TruthValue,
         cmGwFiltersPortFilterRowStatus
            RowStatus  
         }

cmGwFiltersPortFilterIndex OBJECT-TYPE 
      SYNTAX      Unsigned32 
      MAX-ACCESS  not-accessible 
      STATUS      current 
      DESCRIPTION 
         "The index for this Port Filter."
      ::= { cmGwFiltersPortFilterEntry 1 } 

cmGwFiltersPortFilterStartPort  OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Start Port Number for this Port Filter."
    ::= { cmGwFiltersPortFilterEntry 2 }      
               
cmGwFiltersPortFilterEndPort  OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "End Port Number for this Port Filter."
    ::= { cmGwFiltersPortFilterEntry 3 }
    
cmGwFiltersPortFilterProtocol OBJECT-TYPE 
      SYNTAX      INTEGER 
                  {
                     tcp(1),
                     udp(2),
                     both(3)
                  }       
      MAX-ACCESS  read-create 
      STATUS      current 
      DESCRIPTION 
         "Protocol type for this Port Filter."
      ::= { cmGwFiltersPortFilterEntry 4 }
     
cmGwFiltersPortFilterEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "Set to true to enable this Port Filter.
        Set to false to disable this Port Filter."
    DEFVAL { true }
    ::= { cmGwFiltersPortFilterEntry 5 }
    
cmGwFiltersPortFilterRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The RowStatus interlock for the creation and deletion of a cmGwFiltersPortFilterTable entry.
        The SNMP entity will prevent modification of this table's columns when cmGwFiltersPortFilterRowStatus 
        object is in the active state.
        To change any columns of this table, cmGwFiltersPortFilterRowStatus must be set to 
        'not-in-service' and then set back to 'active' in order to populate Port Filter entry 
        correctly with the latest Port Filter data."

    ::={ cmGwFiltersPortFilterEntry 6 }    
    
--           
-- Firewall information
--
cmGwFirewallObjects  OBJECT IDENTIFIER ::= { cmGwFirewallMib 1 }

cmGwFirewallProtectEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) enables the IPV4 Firewall features. 
             Setting this object to false(2) disables the IPV4 Firewall features." 
    ::= { cmGwFirewallObjects 1 }
    
cmGwFirewallIpFloodDetectEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) enables IP Flood detection. If enabled, the gateway 
             detects and blocks packet floods originating from both the LAN and WAN. 
             Setting this object to false(2) disables IP Flood detection."
    ::= { cmGwFirewallObjects 2 }
 
cmGwFirewallPortScanDetectEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) enables Port Scan detection. If enabled, the gateway 
             detects and blocks port scan activity originating from both the LAN and WAN. 
             Setting this object to false(2) disables Port Scan detection."
    ::= { cmGwFirewallObjects 3 }
    
cmGwFirewallBlockFragIpEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Setting this object to true(1) prevents all fragmented IP packets from passing through
             the firewall. 
             Setting this object to false(2) allows fragmented IP Packets to pass through the firewall.
             Note: If Multicast is enabled, setting this object to True will not block Multicast fragments."
    ::= { cmGwFirewallObjects 4 }                 
                           
cmGwFirewallProtectionLevel OBJECT-TYPE
    SYNTAX      INTEGER {
                low(1),
                medium(2),
                high(3)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This object can be used to select the firewall protection level 
             if cmGwFirewallProtectEnable is set to true. 
		 Set on this object would fail if cmGwFirewallProtectEnable is false."
    ::= { cmGwFirewallObjects 5 }
                         
cmGwIPv6FirewallProtectEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
          "Setting this object to true(1) enables the IPv6 Firewall.
           Setting this object to false(2) disables the IPv6 Firewall."
   ::= { cmGwFirewallObjects 6 }        
--           
-- Gateway and eRouter Provisioning information
--
cmGwProvisioningObjects  OBJECT IDENTIFIER ::= { cmGwProvisioningMib 1 }

cmGwProvDeviceProvisioningMode OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is used to specify the method by which the Gateway is
        provisioned. The default method is via TLV settings in the CM
        configuration file. MSOs may use other alternate methods of configuring
        Gateway parameters, such as downloading a separate XML configuration
        file. This object may be used by the MSO (in the CM config file) 
        to select an alternate method of provisioning the Gateway.
        A value of 0 selects the default provisioning mode. Other mode values are product
        and customer-specific and will be provided in customer release notes."
    REFERENCE 
        "SURFboard Cable Device FCI Enumerations Specification."
    ::= { cmGwProvisioningObjects 1 }
    
cmGwProvDeviceConfigStatus OBJECT-TYPE
    SYNTAX      INTEGER 
    {
        notSpecified(1),
        inProgress(2),
        success(3),
        errorServerUnavailable(4),
        errorFileNotFound(5),
        errorBadFile(6),
        download(7)
    }       
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "For products that download a separate Gateway config file this object
        is used to retrieve the configuration status of the Gateway. If set to
        notSpecified(1), then the Gateway will not attempt to download the 
        Gateway config file. If set to download(7), the Gateway will restart the
        Provisioning process and download the Gateway config file."
    ::= { cmGwProvisioningObjects 2 }
    
cmGwProvDeviceConfigFilename OBJECT-TYPE
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is used to specify the location of the Gateway 
        configuration file."
    ::= { cmGwProvisioningObjects 3 }   
    
cmGwProvErouterMode OBJECT-TYPE
    SYNTAX    INTEGER
    {
        disabled(1), 
        ipv4(2), 
        ipv6(3), 
        dual(4),
        ipv4RG(5) 
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Toggles IP Provisioning Modes for eRouter.
         disabled(1) disables the eRouter and places the device in bridge mode. 
         ipv4(2) places the eRouter in IPv4Only mode. In this mode,
                 IPv4 traffic will be NAPT'd and IPv6 traffic will be dropped. 
         ipv6(3) places the eRouter in IPv6Only mode. In this mode, IPv6 traffic
                 will be forwarded and IPv4 traffic will be dropped.
         dual(4) places the eRouter in dual stack mode. IPv4 traffic will be NAPT'd
                 and IPv6 traffic will be forwarded.
         ipv4RG(5) places the device in ipv4 Legacy Gateway mode. IPv4 traffic will
                   be NAPT'd. IPv6 traffic will be dropped."
    ::= { cmGwProvisioningObjects 4 }

cmGwProvErouterIPv6PassthruMode OBJECT-TYPE
    SYNTAX    INTEGER
    {
        disabled(0),
        ipv6Only(1),
        dualStack(2)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION 
        " The value of this object controls the eRouter IPv6 passthrough feature
          on product deployments that support it. 
          When the value of this object is set to disabled(0), eRouter provisioning 
          and CPE traffic handling will behave as specified in the eRouter 
          Specification. When the value of this object is set to ipv6Only(1), 
          the eRouter will not provision its WAN interface with an IP address 
          (no IPv4 address, no  IPv6 address). It will drop all IPv4 CPE traffic, 
          and will bridge all IPv6 traffic. When the value of this object is 
          set to dualStack(2), the eRouter will provision its WAN interface with 
          only an IPv4 address (no provisioning of an IPv6 address). It will NAPT 
          IPv4 traffic and bridge IPv6 traffic. 
          NOTE: A change to the value of this object will cause an automatic reboot
                of the device."    
    ::= { cmGwProvisioningObjects 5 }

--  Conformance -------------------------------------------------------------

cmGwCompliances OBJECT IDENTIFIER ::= { cmGwConformance 1 }
cmGwGroups      OBJECT IDENTIFIER ::= { cmGwConformance 2 }
                                 
-- Compliance statements
cmGwCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION 
        "The compliance statement for devices that implement Gateway MIB"
    MODULE       -- this module
        MANDATORY-GROUPS { cmGwBaseGroup }            

    OBJECT  cmGwLanAddrIpType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."

    OBJECT  cmGwWanInetAddressType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."

    OBJECT  cmGwWanSubnetMaskType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."
          
    OBJECT  cmGwWanRouterType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."
          
    OBJECT  cmGwWanAddrDnsIpType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."

--    OBJECT  cmGwLanPoolStartType
--       WRITE-SYNTAX INTEGER { ipv4(1) } 
--       MIN-ACCESS  read-only 
--       DESCRIPTION 
--         "Only IPv4 address type is required to be supported.  This can be
--          done by making this object read-only or only allowing the value
--          of ipv4 to be written."

--    OBJECT  cmGwDhcpServerSubnetMaskType
--       WRITE-SYNTAX INTEGER { ipv4(1) } 
--       MIN-ACCESS  read-only 
--       DESCRIPTION 
--         "Only IPv4 address type is required to be supported.  This can be
--          done by making this object read-only or only allowing the value
--          of ipv4 to be written."

--    OBJECT  cmGwDhcpServerDhcpAddressType
--       WRITE-SYNTAX INTEGER { ipv4(1) } 
--       MIN-ACCESS  read-only 
--       DESCRIPTION 
--         "Only IPv4 address type is required to be supported.  This can be
--          done by making this object read-only or only allowing the value
--          of ipv4 to be written."
      
    OBJECT  cmGwVirtualServerLanAddrType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."
                       
    OBJECT  cmGwNatGamingDMZIpAddrType
       WRITE-SYNTAX INTEGER { ipv4(1) } 
       MIN-ACCESS  read-only 
       DESCRIPTION 
         "Only IPv4 address type is required to be supported.  This can be
          done by making this object read-only or only allowing the value
          of ipv4 to be written."	                                      
    ::= { cmGwCompliances 1 }    
    
-- Units of compliance
cmGwBaseGroup OBJECT-GROUP
    OBJECTS     {
                cmGwWanMacAddress,              
                cmGwWanSetToFactory,
                cmGwWanDhcpcAdminStatus,
                cmGwWanInetAddressType,
                cmGwWanInetAddress,     
                cmGwWanHostName, 
                cmGwWanSubnetMaskType, 
                cmGwWanSubnetMask, 
                cmGwWanRouterType, 
                cmGwWanRouter,     
                --cmGwWanAddrDnsIpType, 
                --cmGwWanAddrDnsIp, 
                cmGwWanAddrDnsRowStatus, 

                cmGwLanDhcpsSetToFactory,
                cmGwLanDhcpsAddressPoolStartType,
                cmGwLanDhcpsAddressPoolStart, 
                cmGwLanDhcpsNetworkNumberType,
                cmGwLanDhcpsNetworkNumber,
                cmGwLanDhcpsSubnetMaskType,
                cmGwLanDhcpsSubnetMask,
                cmGwLanDhcpsDomainName,
                cmGwLanDhcpsTTL,
                cmGwLanDhcpsInterfaceMTU,
                cmGwLanDhcpsLeaseTime,
                cmGwLanDhcpsInetAddressType,
                cmGwLanDhcpsInetAddress,
                cmGwLanDhcpsMaxAddressCount,
                cmGwLanDhcpsCurrentLeaseCount,
                
                --cmGwLanAddrIpType,
                --cmGwLanAddrIp, 
                cmGwLanAddrClientID,
                cmGwLanAddrLeaseCreateTime, 
                cmGwLanAddrLeaseExpireTime,
                cmGwLanAddrMethod,
                cmGwLanAddrHostName, 
                cmGwLanAddrRowStatus,
                  
                cmGwNatSetToFactory,  
                cmGwNatTcpTimeWait, 
                cmGwNatUdpTimeWait, 
                cmGwNatIcmpTimeWait, 
                cmGwNatPrimaryMode,
                cmGwNatGamingDMZIpAddrType,  
                cmGwNatGamingDMZIpAddr,   

                --cmGwNatMappingIndex, 
                cmGwNatMappingWanAddrType,
                cmGwNatMappingWanAddr,
                cmGwNatMappingWanPort, 
                cmGwNatMappingLanAddrType, 
                cmGwNatMappingLanAddr, 
                cmGwNatMappingLanPort, 
                cmGwNatMappingMethod,     
                cmGwNatMappingProtocol, 
                cmGwNatMappingRowStatus,

                --cmGwNatPassthroughIndex,
                cmGwNatPassthroughMACAddr, 
                cmGwNatPassthroughDMZEnable,
                cmGwNatPassthroughRowStatus, 

                cmGwDevEvControl, 
                -- cmGwDevEvIndex, 
                cmGwDevEvFirstTime, 
                cmGwDevEvLastTime, 
                cmGwDevEvCounts, 
                cmGwDevEvLevel, 
                cmGwDevEvId, 
                cmGwDevEvText, 
                    
                cmGwAlgSetToFactory,    
                cmGwAlgName,  
                cmGwAlgProtocol,       
                cmGwAlgPortFrom, 
                cmGwAlgPortTo,       
                cmGwAlgSessionChaining,       
                cmGwAlgSessionInterval,       
                cmGwAlgAddressReplacement,       
                cmGwAlgMultipleHostEnable, 
                cmGwAlgEnable, 
                cmGwAlgStatus,
                                   
                cmGwVirtualServerSetToFactory,                                 
                -- cmGwVirtualServerIndex,
                cmGwVirtualServerName,
                cmGwVirtualServerType,  
                cmGwVirtualServerPort1,
                cmGwVirtualServerPort2, 
                cmGwVirtualServerLanAddrType,
                cmGwVirtualServerLanAddr,
                cmGwVirtualServerEnable,
                cmGwVirtualServerRowStatus
                }    
    STATUS       current
    DESCRIPTION "A collection of objects for configuring gateway."
    ::= { cmGwGroups 1 }

   
END

