CABH-CAP-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32,
    Integer32           FROM SNMPv2-SMI
    TimeStamp,
    TruthValue,
    RowStatus,
    DateAndTime,
    PhysAddress         FROM SNMPv2-TC
    OBJECT-GROUP,
    MODULE-COMPLIANCE   FROM SNMPv2-CONF
    InetAddressType,
    InetAddress,
    InetPortNumber      FROM INET-ADDRESS-MIB
    clabProjCableHome   FROM CLAB-DEF-MIB
    SnmpAdminString     FROM SNMP-FRAMEWORK-MIB;

cabhCapMib MODULE-IDENTITY
    LAST-UPDATED    "200502110000Z" -- February 11, 2005
    ORGANIZATION    "CableLabs Broadband Access Department"
    CONTACT-INFO
            "Kevin Luehrs
            Postal: Cable Television Laboratories, Inc.
            858 Coal Creek Circle
            Louisville, Colorado 80027
            U.S.A.
            Phone:  +1 303-661-9100
            Fax:    +1 303-661-9199
            E-mail: k.luehrs@cablelabs.com; mibs@cablelabs.com"
    DESCRIPTION
            "This MIB module supplies the basic management objects
            for the CableHome Addressing Portal (CAP) portion of 
            the PS."
    REVISION   "200502110000Z" -- February 11, 2005
    DESCRIPTION 
            "Initial revision, published as part of CableHome  
             Specification." 
    ::=  { clabProjCableHome 3 }


    cabhCapObjects      OBJECT IDENTIFIER ::= { cabhCapMib 1 }
    cabhCapBase         OBJECT IDENTIFIER ::= { cabhCapObjects 1 }
    cabhCapMap          OBJECT IDENTIFIER ::= { cabhCapObjects 2 }


--====================================================================
--
--    General CAP Parameters
--
--====================================================================

cabhCapTcpTimeWait 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 [RFC793]."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    DEFVAL { 300 } 
    ::= { cabhCapBase 1 }

cabhCapUdpTimeWait OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The inactivity time to wait before destroying 
            CAP mappings for UDP."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    DEFVAL { 300 }  -- 5 minutes
    ::={ cabhCapBase 2 }

cabhCapIcmpTimeWait OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The inactivity time to wait before destroying 
            CAP mappings for ICMP."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    DEFVAL { 300 }  --  5 minutes
    ::= { cabhCapBase 3 }

cabhCapPrimaryMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    napt(1),        -- NAT with Port Translation Mode
                    nat(2),         -- Traditional NAT Mode
                    passthrough(3)  -- Passthrough/Bridging Mode
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The Primary Packet-handling Mode of the Portal Services
            logical element (PS) of a CableHome compliant residential
            gateway device. This object configures operation of the PS
            packet handling functions.

            When the value of this object is napt(1), the PS is
            required to support the Network Address and Port
            Translation (NAPT) process in accordance with the NAPT
            requirements defined in IETF RFC 3022. When operating in
            NAPT Primary Packet Handling Mode, the PS supports the
            translation of multiple LAN-Trans IP addresses and their
            TCP/UDP ports into a single WAN-Data IP address and its 
            TCP/UDP ports.

            When the value of this object is nat(2), the PS is required
            to support the Network Address Translation (NAT) process in
            accordance with the NAT equirements defined in IETF RFC
            3022. When operating in NAT Primary Packet Handling Mode,
            the PS supports the translation of multiple LAN-Trans IP
            addresses into the same number of unique WAN-Data IP
            addresses.

            When the value of this object is passthrough(3), the PS is
            required to act as a transparent bridge in accordance with
            IEEE 802.1D. When operating in Passthrough Primary Packet
            Handling Mode, the PS does not translate network addresses,
            and bridges all traffic between its LAN and WAN interfaces.

            The PS MUST delete dynamically-created row entries from
            the cabhCapMappingTable, i.e. those with
            cabhCapMappingMethod = dynamic(2), when the value of
            cabhCapPrimaryMode changes. The PS MUST NOT delete
            statically-created row entries from the cabhCapMappingTable
            where cabhCapMappingMethod = static(1), when the value of
            cabhCapPrimaryMode changes."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    DEFVAL { napt }
    ::= { cabhCapBase 4 }
    
cabhCapSetToFactory OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Reading this object always returns false(2). When the
            cabhCapSetToFactory object is set to true(1), the PS must
            take the following actions:

            1. Clear all entries in the cabhCapMappingTable and 
               cabhCapPassthroughTable.
            2. Reset the following objects to their factory default 
               values:
                 cabhCapTcpTimeWait,
                 cabhCapUdpTimeWait,
                 cabhCapIcmpTimeWait,
                 cabhCapPrimaryMode"
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    ::= { cabhCapBase 5 }

cabhCapLastSetToFactory OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The value of sysUpTime when cabhCapSetToFactory was
            last set to true. Zero if never reset."
    ::= { cabhCapBase 6 }

cabhCapUpnpPortForwardingEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This MIB is effective only when the PS is performing NAPT.
            If this MIB object is set to false(2), the PS MUST disable
            the UPnP WANIpConnection Service in the CableHome PS. If 
            this MIB object is set to true(1), the PS MUST enable the
            WANIpConnection service in the PS. When the primary packet
            handling mode of the PS is C-NAT (2) or Passthrough(3), 
            setting this MIB to true(1) MUST return InconsistentValue
            error."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    DEFVAL { 1 }
    ::= { cabhCapBase 7 }

cabhCapUpnpTimeWait OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The inactivity time to wait before destroying 
            CAP mappings created by UPnP control points. The 
            value of 0 indicates inactivity time wait of 
            infinity, i.e. a UPnP entry doesnt get destroyed
            based on inactivity period."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    DEFVAL { 0 }  --  0 seconds, inactivity time wait of infinity.
    ::= { cabhCapBase 8 }


--===================================================================
--
--    cabhCapMappingTable (CAP Mapping Table)
--
--    The cabhCapMappingTable contains information pertaining to all
--    NAPT and NAT mappings in a CableHome(TM) compliant residential
--    gateway device.
--
--===================================================================


cabhCapMappingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CabhCapMappingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains IP address mappings between private
            network addresses, or network addresses and port
            numbers/ICMP Identifiers, assigned to devices on the
            subscriber's home LAN, and network addresses, or network
            addresses and port numbers/ICMP Identifiers on the WAN,
            presumed to be on a separate subnetwork than the private
            IP addresses.  The CAP Mapping Table is used by the
            CableHome Address Portal (CAP) function of the PS to make
            packet forwarding decisions."
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    ::= { cabhCapMap 1 }

cabhCapMappingEntry OBJECT-TYPE
    SYNTAX      CabhCapMappingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "List of the private IP (LAN) address - to - cable 
            operator assigned IP (WAN) address mappings stored
            in the PS and used by the PS to make packet 
            forwarding decisions."
    INDEX { cabhCapMappingIndex }
    ::= { cabhCapMappingTable 1 }

CabhCapMappingEntry ::= SEQUENCE {
    cabhCapMappingIndex              INTEGER,
    cabhCapMappingWanAddrType        InetAddressType,
    cabhCapMappingWanAddr            InetAddress,
    cabhCapMappingWanPort            InetPortNumber,
    cabhCapMappingLanAddrType        InetAddressType,
    cabhCapMappingLanAddr            InetAddress,
    cabhCapMappingLanPort            InetPortNumber,
    cabhCapMappingMethod             INTEGER,
    cabhCapMappingProtocol           INTEGER,
    cabhCapMappingRowStatus          RowStatus,
    cabhCapMappingNumPorts           Unsigned32,
    cabhCapMappingRowDescr           SnmpAdminString,
    cabhCapMappingCreateTime         DateAndTime,
    cabhCapMappingLastUpdateTime     DateAndTime, 
    cabhCapMappingDuration           Integer32,
    cabhCapMappingRemoteHostAddrType InetAddressType,
    cabhCapMappingRemoteHostAddr     InetAddress,
    cabhCapMappingEnable             TruthValue
    }

cabhCapMappingIndex OBJECT-TYPE
    SYNTAX      INTEGER   (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Index into the CAP Mapping Table."
    ::= { cabhCapMappingEntry 1 }

cabhCapMappingWanAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The IP address type assigned on the WAN side."
    DEFVAL { ipv4 }
    ::= { cabhCapMappingEntry 2 }

cabhCapMappingWanAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The IP address assigned by the cable operator's address
            (DHCP) server, and comprising the WAN-side IP address 
            of the CAP Mapping tuple. This object is populated 
            either dynamically by LAN-to-WAN outbound traffic or 
            statically by the cable operator."
    ::= { cabhCapMappingEntry 3 }

cabhCapMappingWanPort OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The TCP/UDP port number or ICMP Identifier
            on the WAN side. A port number/Identifier of
            0 indicates either a NAT or a DMZ mapping.
            A non-zero port number/Identifier indicates 
            a NAPT mapping. If the value of 
            cabhCapMappingNumPorts MIB object is non-zero
            this MIB represents a starting TCP/UDP port
            number on the WAN side for which a mapping 
            entry is created."
    DEFVAL { 0 }
    ::= { cabhCapMappingEntry 4 }

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

cabhCapMappingLanAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The IP address of the LAN-Trans IP Device. This object is
            populated either dynamically as a result of LAN-to-WAN
            outbound traffic or statically by the cable operator."
    ::= { cabhCapMappingEntry 6 }

cabhCapMappingLanPort OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The TCP/UDP port number or ICMP Identifier
            on the LAN side. A port number/Identifier
            of 0 indicates either a DMZ mapping or a NAT
            mapping. A non-zero port number/Identifier
            indicates a NAPT mapping. If the value of 
            cabhCapMappingNumPorts MIB object is non-zero
            then this MIB represents a starting TCP/UDP port
            number on the LAN side for which a mapping
            entry is created."
    DEFVAL { 0 }
    ::= { cabhCapMappingEntry 7 }

cabhCapMappingMethod OBJECT-TYPE
    SYNTAX      INTEGER {
                    static(1),    
                    dynamic(2),
                    upnp(3)
                }
    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 PS itself. upnp (3) means that the 
            CAP mapping entry was created by some UPnP compliant
            application."
    ::= { cabhCapMappingEntry 8 }
    
cabhCapMappingProtocol OBJECT-TYPE
    SYNTAX      INTEGER {
                    other(1),    -- any other protocol; e.g. IGMP
                    icmp(2),
                    udp(3),
                    tcp(4),
                    all(255)     -- covers all the protocols
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The protocol for this mapping entry. The value
            of other(1) represents a protocol other
            than ICMP, TCP, and UDP. Thus, when the value
            other(1) is specified for the cabhCapMappingProtocol
            value of a CAP Mapping Table entry, 
            TCP, UDP or ICMP packets MUST NOT be forwarded even
            if the WAN and LAN IP address and port tuple
            of the packet matches with mapping entry. 
            The value of all(255) represents all protocol types. Thus,
            when the cabhCapMappingProtocol value
            all(255) is specified for an entry in the CAP Mapping 
            Table, traffic of all protocol types MUST be forwarded
            accordingly f the WAN and LAN IP address and port tuple
            in the packet matches the mapping entry."
    ::= { cabhCapMappingEntry 9 }

cabhCapMappingRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The RowStatus interlock for the creation and deletion 
            of a cabhCapMappingTable entry. Changing the value of
            the IP address or port number columns of the CAP 
            Mapping Table may have an effect on active traffic, 
            so the PS will prevent modification of this table's
            columns and return an inconsistentValue error when
            cabhCapMappingRowStatus object is active(1). 

            The PS must not allow RowStatus to be set to 
            notInService(2) by a manager. 

            A newly created row cannot be set to active(1) until
            the corresponding instances of cabhCapMappingWanAddr,
            cabhCapMappingLanAddr, and cabhCapMappingProtocol have
            been set.

            If the manager attempts to populate a row entry in
            the table with a non-unique value for the combination
            of cabhCapMappingWanAddr and range of WAN port(s)
            (identified by cabhCapMappingWanPort to
            cabhCapMappingWanPort + cabhCapMappingNumPorts 1),
            or a non-unique value for the combination of
            cabhCapMappingLanAddr and range of LAN port(s)
            (identified by cabhCapMappingLanPort to
            cabhCapMappingLanPort + cabhCapMappingNumPorts - 1),
            the PS MUST prevent the creation of this row and return
            an inconsistentValue error. This prevents creation of
            entries with overlapping port ranges in the CAP table.
            
            If the manager attempts to populate a row entry with
            a zero value for cabhCapMappingWanPort and a non-zero
            value for cabhCapMappingLanPort or a row entry with a
            zero value for cabhCapMappingLanPort and a non-zero value
            for cabhCapMappingWanPort, the PS MUST prevent the
            creation of this row and return an inconsistentValue
            error. This prevents creation of invalid NAT or NAPT entries.
            
            If the manager attempts to populate a row entry with non-zero
            values for both cabhCapMappingWanPort and
            cabhCapMappingLanPort, but a zero value for
            cabhCapMappingNumPorts, the PS MUST prevent
            the creation of this row and return an inconsistentValue
            error. This prevents creation of NAPT entries.

            When Primary Packet-handling Mode is NAPT
            (cabhCapPrimaryMode is napt(1)), provisioned rows can be
            set to active(1) regardless of whether the value to which
            cabhCapMappingWanPort, cabhCapMappingLanPort, and 
            cabhCapMappingNumPorts have been set is zero or nonzero.

            When Primary Packet-handling Mode is NAT
            (cabhCapPrimaryMode is nat(2)), a newly created row can
            not be set to active(1) if a non-zero value have been set
            for cabhCapMappingWanPort, cabhCapMappingLanPort and 
            cabhCapMappingNumPorts.

            In NAPT Primary Packet-handling mode, a row
            entry with zero values for cabhCapMappingWanPort,
            cabhCapMappingLanPort, and cabhCapMappingNumPorts
            objects represents a DMZ entry."
    ::={ cabhCapMappingEntry 10 }

cabhCapMappingNumPorts OBJECT-TYPE
    SYNTAX      Unsigned32(1..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "This object represents number of ports
            available for port translation
            on both LAN and WAN side. 
            
            When both cabhCapMappingWanPort and 
            cabhCapMappingLanPort are set to zero,
            the PS MUST ignore this MIB object, and
            such a row entry represents either a DMZ entry
            (when primary packet handling mode is NAPT) or 
            a NAT entry (when primary packet handling mode is
            NAT). 
            
            When a row entry is created with non-zero
            values for cabhCapMappingWanPort,
            cabhCapMappingLanPort, and cabhCapMappingNumPorts
            the PS MUST translate range of ports on
            the WAN side (identified by cabhCapMappingWanPort
            to cabhCapMappingWanPort + cabhCapMappingNumPorts-1)
            to range of ports on the LAN side (identified by
            cabhCapMappingLanPort to cabhCapMappingLanPort + 
            cabhCapMappingNumPorts-1).
            
            The PS MUST ignore this MIB for a CAP mapping
            entry with the value of cabhCapMappingProtocol
            equal to icmp(2)."
    DEFVAL { 1 }
    ::= { cabhCapMappingEntry 11 }

cabhCapMappingRowDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "A string value that can be used to describe
             the purpose or attributes of the CAP Mapping
             entry."
    DEFVAL { "" }
    ::= { cabhCapMappingEntry 12 }

cabhCapMappingCreateTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "For dynamic(2) and upnp(3) CAP mapping entries the PS MUST
             set this MIB with date and time when the entry is created.
             The PS MUST set the value of this MIB to zero valued 
             11-byte string for static CAP mapping entries. This MIB
             object MUST NOT persist across the PS reboot."
    ::= { cabhCapMappingEntry 13 }

cabhCapMappingLastUpdateTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The PS MUST set the value of this MIB 
             to zero valued 11 byte string for static
             CAP mapping entries. For dynamic(2) CAP 
             Mapping entries, the PS MUST set the value 
             of this MIB to the value of cabhCapMappingCreateTime
             For upnp(3) CAP mapping entries the PS MUST
             set this MIB with date and time when the entry
             is last updated. When the upnp(3)entry is first
             created the PS MUST set this MIB with the value
             of cabhCapMappingCreateTime MIB. This MIB object
             MUST NOT persist across the PS reboot."
    ::= { cabhCapMappingEntry 14 }

cabhCapMappingDuration OBJECT-TYPE
    SYNTAX      Integer32 (-1|0..2147483647)
    UNITS       "seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "When a value greater than zero
             is assigned to this object, the PS MUST 
             remove the CAP entry after the time
             duration, represented by
             this object, elapses starting from
             cabhCapMappingLastUpdateTime.
           
             When a value of 0 is assigned to this object,
             the PS MUST retain the CAP mapping entry
             until reboot or reset. The PS MUST retain
             a CAP mapping entry with cabhCapMappingDuration
             MIB set to 0 and cabhCapMappingMethod set
             to static(1) across the reboots. The PS MUST
             NOT retain a CAP mapping entry with
             cabhCapMappingDuration MIB set to 0 and 
             cabhCapMappingMethod set to upnp(3) across
             the reboots.

             When a value of 1 is assigned for this 
             MIB the PS MUST ignore this MIB and 
             MUST remove the CAP mapping entries 
             based on TCP, UDP and ICMP inactivity
             time-wait depending upon their protocol
             type.
        
             When the cabhCapMappingMethod object is 
             static(1), the default value for this object
             is 0.
             
             When the cabhCapMappingMethod object is 
             dynamic(2), the PS MUST set the value of
             this object to 1.
             
             When the cabhCapMappingMethod object is 
             upnp(3), the default value for this object
             is -1."

    ::= { cabhCapMappingEntry 15 }

cabhCapMappingRemoteHostAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The IP address type for a remote host on the WAN side."
    DEFVAL { ipv4 }
    ::= { cabhCapMappingEntry 16 }

cabhCapMappingRemoteHostAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The IP address of the remote host for
            a CAP mapping entry. The packet traversing
            through the PS is either originated 
            from or is destined to this remote host.
            The value of all zeros for this MIB object
            indicates any IP address for a remote host."
    DEFVAL { '00000000'h }
    ::= { cabhCapMappingEntry 17 }

cabhCapMappingEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This MIB allows the PS to enable or disable
            a particular CAP mapping entry. When this MIB
            is set to true(1) for a CAP mapping entry, the
            PS MUST correctly route the traffic that
            matches this entry. When this MIB is set to
            false(2) for a CAP mapping entry, the PS MUST
            NOT route the traffic that matches this entry."
    DEFVAL { true }
    ::= { cabhCapMappingEntry 18 }

--====================================================================
--
--    cabhCapPassthroughTable (CAP Passthrough Table)
--
--    The cabhCapPassthroughTable contains the hardware addresses
--    for all LAN IP Devices for which the PS will bridge traffic at
--    OSI Layer 2 when the PS's cabhCapPrimaryMode is set to forward
--    traffic at OSI Layer 3 (NAPT/NAT) for all other hardware
--    addresses. 
--
--====================================================================

cabhCapPassthroughTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CabhCapPassthroughEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains hardware addresses of LAN IP Devices
            for which the PS will bridge traffic at OSI Layer 2." 
    REFERENCE
            "CableHome 1.1 Specification, Packet Handling & Address
            Translation section."
    ::= {  cabhCapMap 2 }

cabhCapPassthroughEntry OBJECT-TYPE
    SYNTAX      CabhCapPassthroughEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "List of hardware addresses of LAN IP Devices for which
            the PS will bridge traffic at OSI Layer 2."
    INDEX { cabhCapPassthroughIndex }
::= { cabhCapPassthroughTable 1 }

CabhCapPassthroughEntry::=SEQUENCE {
    cabhCapPassthroughIndex         INTEGER,
    cabhCapPassthroughMacAddr       PhysAddress,
    cabhCapPassthroughRowStatus     RowStatus
    }

cabhCapPassthroughIndex OBJECT-TYPE
    SYNTAX      INTEGER (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The index into the CAP Passthrough Table."
    ::= { cabhCapPassthroughEntry 1 }

cabhCapPassthroughMacAddr OBJECT-TYPE
    SYNTAX      PhysAddress (SIZE(0..16))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Hardware address of the LAN IP Device for which the PS
            MUST bridge traffic at OSI Layer 2."
    ::={ cabhCapPassthroughEntry 2 }

cabhCapPassthroughRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION 
            "The RowStatus interlock for the creation and
            deletion of a cabhCapPassthroughTable entry.
            Any writable object in each row can be modified
            at any time while the row is active(1)."
    ::= { cabhCapPassthroughEntry 3 }
--
-- notification group is for future extension.
-- 

cabhCapNotification    OBJECT IDENTIFIER ::= { 
    cabhCapMib 2 0 }
cabhCapConformance     OBJECT IDENTIFIER ::= { 
    cabhCapMib 3 }
cabhCapCompliances     OBJECT IDENTIFIER ::= { 
    cabhCapConformance 1 }
cabhCapGroups          OBJECT IDENTIFIER ::= { 
    cabhCapConformance 2 }

--
--    Notification Group
--


-- compliance statements

cabhCapBasicCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
            "The compliance statement for devices that implement
            the CableHome Portal Services functionality."
    MODULE   --cabhCapMib

-- unconditionally mandatory groups

MANDATORY-GROUPS {
    cabhCapGroup
    }

OBJECT cabhCapMappingProtocol 
    SYNTAX      INTEGER { icmp(2) }
    WRITE-SYNTAX  INTEGER { other(1), udp(3), tcp(4), all(255) }
    DESCRIPTION
            "icmp(2) applies only to dynamic entries."

    ::= { cabhCapCompliances 1 }


cabhCapGroup OBJECT-GROUP
    OBJECTS {
    cabhCapTcpTimeWait,
    cabhCapUdpTimeWait,
    cabhCapIcmpTimeWait,
    cabhCapPrimaryMode,
    cabhCapSetToFactory,
    cabhCapLastSetToFactory,
    cabhCapMappingWanAddrType,
    cabhCapMappingWanAddr,
    cabhCapMappingWanPort,
    cabhCapMappingLanAddrType,
    cabhCapMappingLanAddr,
    cabhCapMappingLanPort,
    cabhCapMappingMethod,
    cabhCapMappingProtocol,
    cabhCapMappingRowStatus,
    cabhCapPassthroughMacAddr,
    cabhCapPassthroughRowStatus,
    cabhCapMappingNumPorts,
    cabhCapMappingRowDescr,
    cabhCapMappingCreateTime,
    cabhCapMappingLastUpdateTime,
    cabhCapMappingDuration,
    cabhCapUpnpPortForwardingEnable,
    cabhCapUpnpTimeWait,
    cabhCapMappingRemoteHostAddrType,
    cabhCapMappingRemoteHostAddr,
    cabhCapMappingEnable
    }
    STATUS      current
    DESCRIPTION
            "Group of objects for CableHome CAP MIB."
    ::= { cabhCapGroups 1 }

END

