DSG-IF-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY, 
    OBJECT-TYPE, 
    Unsigned32, 
    Integer32
        FROM SNMPv2-SMI
    TruthValue,
    MacAddress, 
    RowStatus
        FROM SNMPv2-TC 
    OBJECT-GROUP, 
    MODULE-COMPLIANCE 
        FROM SNMPv2-CONF 
    InetAddressType, 
    InetAddress,
    InetAddressPrefixLength,
    InetPortNumber
        FROM INET-ADDRESS-MIB
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    InterfaceIndex,
    ifIndex
        FROM IF-MIB
    Dsid                     FROM DOCS-IF3-MIB
    Counter64                FROM SNMPv2-SMI -- RFC 2578
    clabProjDocsis
        FROM CLAB-DEF-MIB;

dsgIfMIB MODULE-IDENTITY 
    LAST-UPDATED   "202311220000Z" -- November 22, 2023
    ORGANIZATION   "Cable Television Laboratories, Inc" 
    CONTACT-INFO 
            "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: mibs@cablelabs.com"
    DESCRIPTION 
            "Licensed under the Apache License, Version 2.0 (the 'License');
            you may not use this file except in compliance with the License.
            You may obtain a copy of the License at:
 
                http://www.apache.org/licenses/LICENSE-2.0
 
            Unless required by applicable law or agreed to in writing, software
            distributed under the License is distributed on an 'AS IS' BASIS,
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
            implied.

            See the License for the specific language governing permissions and
            limitations under the License.

            This is the MIB Module for the DOCSIS Set-top Gateway 
            (DSG). The DSG provides a one-way IP datagram transport 
            for Out-Of-Band (OOB) messaging to cable set-top clients.
            The one-way IP datagram transport is called a DSG Tunnel.

            A DSG Tunnel carrying either a broadcast, unicast or
            multicast IP datagram stream originating at the DOCSIS
            Set-top Gateway and carrying Out-Of-Band messages intended
            for set-top clients. It is carried over one or more
            downstream DOCSIS channels.

            Multiple DSG tunnels may exist on a single downstream
            DOCSIS channel.
            Copyright 1999-2023 Cable Television Laboratories, Inc.
            All rights reserved." 
    REVISION "202311220000Z" -- November 22, 2023
    DESCRIPTION
            "Revised per ECN DSG-IF-MIB-N-23.2347-1."
    REVISION "201706150000Z" -- June 15, 2017
    DESCRIPTION
            "Revised per DSG-N-17.1740-1 to add Apache License
            information."
    REVISION "201111170000Z" -- November 17, 2011
    DESCRIPTION
            "This revision is published as part of the CableLabs
             DOCSIS Set-top Gateway (DSG) Interface
             Specification CM-SP-DSG-I19."
    REVISION "200905290000Z" -- May 29, 2009
    DESCRIPTION
            "This revision is published as part of the CableLabs
             DOCSIS Set-top Gateway (DSG) Interface
             Specification CM-SP-DSG-I14."
    REVISION "200806260000Z" -- June 26, 2008
    DESCRIPTION 
            "This revision is published as part of the CableLabs
            DOCSIS Set-top Gateway (DSG) Interface 
            Specification CM-SP-DSG-I12." 
    REVISION "200607280000Z" -- July 28, 2006
    DESCRIPTION 
            "Published as part of DOCSIS Set-top 
             Gateway Specification." 
    ::= { clabProjDocsis 3 } 

dsgIfMIBNotifications    OBJECT IDENTIFIER ::= { dsgIfMIB 0 }
dsgIfMIBObjects          OBJECT IDENTIFIER ::= { dsgIfMIB 1 }
dsgIfMIBConformance      OBJECT IDENTIFIER ::= { dsgIfMIB 2 }

dsgIfClassifier          OBJECT IDENTIFIER ::= { dsgIfMIBObjects 1 }
dsgIfTunnel              OBJECT IDENTIFIER ::= { dsgIfMIBObjects 2 }
dsgIfTunnelGrpToChannel  OBJECT IDENTIFIER ::= { dsgIfMIBObjects 3 }
dsgIfDownstreamChannel   OBJECT IDENTIFIER ::= { dsgIfMIBObjects 4 }

dsgIfDCD                 OBJECT IDENTIFIER ::= { dsgIfMIBObjects 5 }
dsgIfTunnelDsStats       OBJECT IDENTIFIER ::= { dsgIfMIBObjects 6 }


----------------------------------------------------------------------
--The Classifier Table contains objects for classifying packets.
--The DSG Agent applies the DSG classifier parameters to the inbound 
--packets from the DSG server in order to assign the packet to the
--appropriate DSG tunnel.  The DSG Agent must classify incoming 
--packets based upon the objects in this table with the exception of 
--the dsgIfClassDestPortStart and dsgIfClassDestPortEnd objects.
--
--The DSG Agent must also include these encoding in the DCD messages on
--the downstream channels to which the classifiers apply.  
--
--The DSG classifier is unique per DSG Agent.
------------------------------------------------------------------------

dsgIfClassifierTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfClassifierEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
            "The Classifier Table contains attributes use to classify 
            inbound packets into the tunnel and classifiers for the DSG
            clients, encoding in the DCD messages on the downstream
            channels to which the classifiers apply." 
    ::= { dsgIfClassifier 1 } 

dsgIfClassifierEntry OBJECT-TYPE 
    SYNTAX      DsgIfClassifierEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "An entry in the Classifier Table. Rows are created 
            by an SNMP SET request setting the value of 
            dsgIfClassRowStatus to 'createAndGo'. Each entry is created
            for a tunnel, index by dsgTunnelIndex.

            Rows are deleted by an SNMP SET request setting the value
            of dsgIfClassRowStatus to 'destroy'."
    INDEX { dsgIfTunnelIndex, dsgIfClassId }
    ::= { dsgIfClassifierTable 1 } 

DsgIfClassifierEntry ::=  SEQUENCE {
    dsgIfClassId                 Unsigned32,
    dsgIfClassPriority           Unsigned32,
    dsgIfClassSrcIpAddrType      InetAddressType,
    dsgIfClassSrcIpAddr          InetAddress,
    dsgIfClassSrcIpPrefixLength  InetAddressPrefixLength,
    dsgIfClassDestIpAddressType  InetAddressType,
    dsgIfClassDestIpAddress      InetAddress,
    dsgIfClassDestPortStart      InetPortNumber,
    dsgIfClassDestPortEnd        InetPortNumber,
    dsgIfClassRowStatus          RowStatus,
    dsgIfClassIncludeInDCD       TruthValue
    }

dsgIfClassId OBJECT-TYPE 
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index that provides a unique classifier (in a DSG
            Agent). This value corresponds to the Classifier ID TLV
            in the DCD message." 
    ::= { dsgIfClassifierEntry 1 } 

dsgIfClassPriority OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The priority of this classifier.  
            Default value 0 indicates lowest priority." 
    DEFVAL { 0 }
    ::= { dsgIfClassifierEntry 2 } 

dsgIfClassSrcIpAddrType OBJECT-TYPE 
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The type of internet address of dsgIfClassSrcIpAddress. 
            Currently DSG Agents, DSG Client Controllers and DSG eCMs
            are not required to support IPv6 DSG classifiers. "
    DEFVAL { ipv4 }
    ::= { dsgIfClassifierEntry 3 } 

dsgIfClassSrcIpAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The source IP address to be matched for this classifier.
            A value 0 for this object indicates a match of any IP
            address. A value that contains non-zero bits
            outside the range indicated by dsgIfClassSrcIpPrefixLength
            is invalid and should be rejected."
    DEFVAL { '00000000'h }
    ::= { dsgIfClassifierEntry 4 } 

dsgIfClassSrcIpPrefixLength OBJECT-TYPE
    SYNTAX      InetAddressPrefixLength
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The length of the CIDR Prefix carried in
            dsgIfClassSrcIpAddr. In IPv4 addresses, a length of 32 indicates
            a match of a single host address, and a length between
            0 and 32 indicates the use of a CIDR Prefix. A length of
            0 is not allowed. This object is irrelevant and not used
            when dsgIfClassSrcIpAddr value is 0."
    DEFVAL { 32 }
    ::= { dsgIfClassifierEntry 5 } 

dsgIfClassDestIpAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The type of internet address of dsgIfClassDestIpAddress.
            Currently DSG Agents, DSG Client Controllers and DSG eCMs
            are not required to support IPv6 DSG classifiers. "
    DEFVAL { ipv4 }
    ::= { dsgIfClassifierEntry 6 } 

dsgIfClassDestIpAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The destination IP address to be matched for this 
            classifier."
    DEFVAL { '00000000'h }
    ::= { dsgIfClassifierEntry 7 } 

dsgIfClassDestPortStart OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "This is the inclusive lower bound of the transport-layer
            source port range that is to be matched."
    DEFVAL { 0 }
    ::= { dsgIfClassifierEntry 8 }

dsgIfClassDestPortEnd OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "This is the inclusive higher bound of the transport-layer
            source port range that is to be matched."
    DEFVAL { 65535 }
    ::= { dsgIfClassifierEntry 9 } 

dsgIfClassRowStatus OBJECT-TYPE 
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of the row.  A value of active(1) indicates 
            that this classifier is applied to this tunnel.
            A value of notInService(2) indicates that matching of
            the packets are ignored and this classifier parameters
            will not be included in the DCD message."
    ::= { dsgIfClassifierEntry 10 }

dsgIfClassIncludeInDCD OBJECT-TYPE
    SYNTAX      TruthValue 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Indicates whether or not this DSG Classifier will
            be sent in DCD messages for use as a Layer-3 and
            Layer-4 packet filter by the DSG eCM."
    DEFVAL { false }
    ::= { dsgIfClassifierEntry 11 }

------------------------------------------------------------------------
-- The DSG Tunnel Table contains group(s) of DSG Tunnel Indexes.
-- Tunnel Entry is mapped to the destination MAC address and each
-- tunnel is associated to the Qos Service Class Name.  
------------------------------------------------------------------------

dsgIfTunnelTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfTunnelEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "The DSG Tunnel Table contains group(s) of tunnel(s).
            Each tunnel is associated to the destination MAC address."
    ::= { dsgIfTunnel 1 } 

dsgIfTunnelEntry OBJECT-TYPE 
    SYNTAX      DsgIfTunnelEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG Tunnel Table. Rows are created by 
            an SNMP SET request setting the value of
            dsgIfTunnelRowStatus to 'createAndGo'. 

            Each entry associated to a tunnel. A dsgIfTunnelGroupIndex
            represents a group of tunnels that could be associated to
            one or more downstream. Each dsgIfTunnelIndex represents
            a tunnel.

            Rows are deleted by an SNMP SET request setting the 
            value of dsgIfTunnelRowStatus to 'destroy'."
    INDEX { dsgIfTunnelIndex } 
    ::= { dsgIfTunnelTable 1 } 

DsgIfTunnelEntry ::= SEQUENCE {
    dsgIfTunnelIndex             Unsigned32,
    dsgIfTunnelGroupIndex        Unsigned32,
    dsgIfTunnelClientIdListIndex Unsigned32,
    dsgIfTunnelMacAddress        MacAddress, 
    dsgIfTunnelServiceClassName  SnmpAdminString,
    dsgIfTunnelRowStatus         RowStatus
    }

dsgIfTunnelIndex OBJECT-TYPE 
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current 
    DESCRIPTION 
            "The index into the DSG Tunnel table that represent
            a tunnel." 
    ::= { dsgIfTunnelEntry 1 } 

dsgIfTunnelGroupIndex OBJECT-TYPE 
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "This index represents a group of tunnels that could be 
            associated to one or more downstream which mapped
            to dsgIfTunnelGrpIndex." 
    ::= { dsgIfTunnelEntry 2 } 

dsgIfTunnelClientIdListIndex OBJECT-TYPE 
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "This index represents a group of client id(s) 
            which mapped to dsgIfClientIdListIndex." 
    ::= { dsgIfTunnelEntry 3 } 

dsgIfTunnelMacAddress OBJECT-TYPE
    SYNTAX      MacAddress 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The DSG tunnel destination MAC address."
    DEFVAL { '000000000000'h }
    ::= { dsgIfTunnelEntry 4 } 

dsgIfTunnelServiceClassName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "For DOCSIS 2.0 the Service Class Name is associated
            to the docsQosServiceClassName in the DOCS-QOS-MIB. 
            For DOCSIS 3.0 the Service Class Name is associated
            to the docsQosServiceClassName in the DOCS-QOS3-MIB.
            Creation of a Service Class MUST be configured through  
            the docsQosServiceClassTable.  Only partial of the
            docsQosServiceClassTable objects are applicable to the
            DSG service class thus some are ignored.

            If the referenced parameter is not present in the
            corresponding DOCSIS QOS Parameter Set, the default
            value of this object is a zero length string." 
    REFERENCE " CM-SP-RFIv2.0-I12-071206 Appendix C.2.2.3.4;
               CM-SP-MULPIv3.0-I07-080215 Annex C.2.2.3.4;
               CM-SP-OSSIv2.0-I10-070803 Annex J;
               CM-SP-OSSIv3.0-I06-080215 Annex Q.7"
    ::= { dsgIfTunnelEntry 5 } 

dsgIfTunnelRowStatus OBJECT-TYPE 
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of the row. A value of notInService(2)
            indicates that this tunnel is disabled and no OOB traffic
            will be forwarded to DSG clients and this tunnel parameters
            will not be included in the DCD message." 
    ::= { dsgIfTunnelEntry 6}

-----------------------------------------------------------------------
--The DSG Tunnel Group to Channel Table contains the association of  
--groups of tunnels to one or more downstream channels.  This table 
--contains the downstream ifIndex, rule priority, and vendor
--parameter identification(2).
-----------------------------------------------------------------------

dsgIfTunnelGrpToChannelTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfTunnelGrpToChannelEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "The DSG Tunnel Group to Channel Table associates a group
            of tunnels to one or more downstream channel."
    ::= { dsgIfTunnelGrpToChannel 1 } 

dsgIfTunnelGrpToChannelEntry OBJECT-TYPE 
    SYNTAX      DsgIfTunnelGrpToChannelEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG Tunnel Table. Rows are created by 
            an SNMP SET request setting the value of 
            dsgIfTunnelGrpRowStatus to 'createAndGo'.
 
            Rows are deleted by an SNMP SET request setting the 
            value of dsgIfTunnelRowStatus to 'destroy'." 
    INDEX { dsgIfTunnelGrpIndex, dsgIfTunnelGrpChannelIndex } 
    ::= { dsgIfTunnelGrpToChannelTable 1 } 

DsgIfTunnelGrpToChannelEntry ::= SEQUENCE {
    dsgIfTunnelGrpIndex         Unsigned32,
    dsgIfTunnelGrpChannelIndex  Unsigned32,
    dsgIfTunnelGrpDsIfIndex     InterfaceIndex,
    dsgIfTunnelGrpRulePriority  Unsigned32,
    dsgIfTunnelGrpUcidList      OCTET STRING,
    dsgIfTunnelGrpVendorParamId Unsigned32,
    dsgIfTunnelGrpRowStatus     RowStatus
    }

dsgIfTunnelGrpIndex OBJECT-TYPE 
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current 
    DESCRIPTION 
            "The index into this table." 
    ::= { dsgIfTunnelGrpToChannelEntry 1 } 

dsgIfTunnelGrpChannelIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index into this table."
    ::= { dsgIfTunnelGrpToChannelEntry 2 } 

dsgIfTunnelGrpDsIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The downstream ifIndex that will be associated to
            this group of tunnel(s)."
    ::= { dsgIfTunnelGrpToChannelEntry 3 } 

dsgIfTunnelGrpRulePriority OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The DSG rule priority determines the order of which 
            channel and its associated UCIDs should be applied by 
            the DSG client. The default value is 0, which is the lowest
            priority."
    DEFVAL { 0 }
    ::= { dsgIfTunnelGrpToChannelEntry 4 } 

dsgIfTunnelGrpUcidList OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(0..255))
    MAX-ACCESS  read-create
    STATUS      deprecated
    DESCRIPTION
            "The list of Upstream Channel ID (UCID) values (octets)
            for which the DSG rule applies. One octet represents one
            UCID value (0-255). A DSG client matches this 
            parameter if its UCID value is included in the list. The 
            default value of zero length string indicates that this 
            DSG Rule applies to all DSG clients."
    DEFVAL { "" }
    ::= { dsgIfTunnelGrpToChannelEntry 5 }

dsgIfTunnelGrpVendorParamId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The index of vendor parameter, dsgIfVendorParamId in the
            dsgIfVendorParamTable describing the vendor specific DSG
            parameters. If no associated entry in dsgIfVendorParamTable
            exists, this value is 0."
    DEFVAL { 0 }
    ::= { dsgIfTunnelGrpToChannelEntry 6 } 

dsgIfTunnelGrpRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of this row. The value of notInService(2)
            indicates that this tunnel group is disabled and no OOB
            traffic on all the associated tunnel(s) will be forwarded
            to DSG clients and all parameters will not be included in
            the DCD message."
    ::= { dsgIfTunnelGrpToChannelEntry 7 } 

-----------------------------------------------------------------------
--The Downstream Table contains the DSG Tunnel Index, the timer 
--index, specific vendor parameter identification(3) and the
--index to the downstream channel list.
-----------------------------------------------------------------------

dsgIfDownstreamTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfDownstreamEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The DSG Downstream Table contains the associated timers,
            vendor specific parameters index and the channel list
            index to a specific downstream." 
    ::= { dsgIfDownstreamChannel 1 } 

dsgIfDownstreamEntry OBJECT-TYPE 
    SYNTAX      DsgIfDownstreamEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG Downstream Table. 
            An entry in this table exists for each ifEntry with
            an ifType of docsCableDownstream(128)." 
    INDEX { ifIndex }  
    ::= { dsgIfDownstreamTable 1 } 

DsgIfDownstreamEntry ::= SEQUENCE {
    dsgIfDownTimerIndex       Unsigned32,
    dsgIfDownVendorParamId    Unsigned32,
    dsgIfDownChannelListIndex Unsigned32,
    dsgIfDownEnableDCD        TruthValue
    }

dsgIfDownTimerIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
            "The index into the timer table, dsgIfTimerTable providing
            the timers used by the DSG client(s).
            The default value 0 indicates there is no associated 
            timers that need to be sent in the DCD message."
    DEFVAL { 0 }
    ::= { dsgIfDownstreamEntry 1 } 

dsgIfDownVendorParamId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
            "The index of vendor parameter, dsgIfVendorParamId in the
            dsgIfVendorParamTable describing the vendor specific DSG
            parameters. If no associated entry in dsgIfVendorParamTable
            exists, this value is 0."
    DEFVAL { 0 }
    ::= { dsgIfDownstreamEntry 2 } 

dsgIfDownChannelListIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
            "The index of a the downstream frequency channel lists,
            dsgIfChannelListIndex in the dsgIfChannelListTable 
            providing the list of downstream frequencies that
            contain DSG tunnels."
    DEFVAL { 0 }
    ::= { dsgIfDownstreamEntry 3 } 

dsgIfDownEnableDCD OBJECT-TYPE 
    SYNTAX      TruthValue 
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
            "Used to enable or disable DCD messages to be sent on this
            downstream channel. The value is always true(1) for those
            downstreams that contains one or many DSG Tunnels." 
    ::= { dsgIfDownstreamEntry 4 }

-----------------------------------------------------------------------
--The Client Table contains the objects specifies the matching 
--parameters for the DSG clients for which the DSG rules applies.
--The DSG clients recognized that ids may be originated from different
--address space.  The same DSG client id may be used by multiple rules.

-----------------------------------------------------------------------

dsgIfClientIdTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfClientIdEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The Client Identification Table contains the client 
            identification type and value.  It also contains the
            vendor specific parameter identification.  There could
            be multiple client ids associated to a tunnel, grouped
            by the dsgIfClientIdListIndex."
    ::= { dsgIfDCD 1 } 

dsgIfClientIdEntry OBJECT-TYPE 
    SYNTAX      DsgIfClientIdEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the Client Id Table. Rows are created 
            by an SNMP SET request setting the value of 
            dsgIfClientRowStatus to 'createAndGo'. 

            Rows are deleted by an SNMP SET request setting the 
            value of dsgIfClientIdRowStatus to 'destroy'." 
    INDEX { dsgIfClientIdListIndex, dsgIfClientIdIndex }
    ::= { dsgIfClientIdTable 1 } 

DsgIfClientIdEntry ::= SEQUENCE {
    dsgIfClientIdListIndex   Unsigned32,
    dsgIfClientIdIndex       Unsigned32,
    dsgIfClientIdType        INTEGER,
    dsgIfClientIdValue       OCTET STRING,
    dsgIfClientVendorParamId Unsigned32,
    dsgIfClientRowStatus     RowStatus
    }

dsgIfClientIdListIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index to this table." 
    ::= { dsgIfClientIdEntry 1 }

dsgIfClientIdIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index to each entry of the Client Id." 
    ::= { dsgIfClientIdEntry 2 }

dsgIfClientIdType OBJECT-TYPE
    SYNTAX      INTEGER {
        broadcast(1),
        macAddress(2),
        caSystemId(3),
        applicationId(4)
        } 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The Client Identification type.  A DSG client id of type
            broadcast(1) received by all DSG client(s).  A DSG client
            id of type macAddress(2) is received by the DSG client that
            has been assigned with this MAC address where the first 3
            bytes is the Organization Unique Identifier (OUI). A DSG
            client id of type caSystemId(3) is received by the DSG
            client that has been assigned a CA_system_ID.  A DSG client
            id of type applicationId(4) is received by the DSG client
            that has been assigned an application ID." 
    DEFVAL { broadcast }
    ::= { dsgIfClientIdEntry 3 }

dsgIfClientIdValue OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(6))
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The Client Identification Value. The content depends on
            the value of the dsgIfClientIdType. 
            For dsgIfClientIdType of a type broadcast(1), this object 
            will have a 16-bit value whether or not it is a length 0 or
            length 2 broadcast ID. If the value is 0, then the encoded
            TLV in the DCD would be the original, zero length,
            broadcast ID. If the value is specified in Table 5-2, then
            the TLV in the DCD would be a length 2 broadcast ID
            followed by the value.
            For dsgIfClientIdType of a type macAddress(2), this object
            is a well known MAC address. 
            For dsgIfClientIdType of a type caSystemId(3), this object
            is a CA System ID. 
            For dsgIfClientIdType of a type applicationId(4), this 
            object is an application ID.
            Client IDs representing types broadcast(1), caSystemId(3) 
            or applicationId(4) are encoded in DCD messages as Unsigned
            integers and configured in this object as 6 octet string 
            with the 2 LSB for the client ID value, e.g., an 
            applicationId 2048 (0x0800) is encoded as '000000000800'h."
    REFERENCE 
            "DOCSIS Set-top Gateway (DSG) Interface"
    DEFVAL { '000000000000'h }
    ::= { dsgIfClientIdEntry 4 }

dsgIfClientVendorParamId OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The index of the vendor parameter id, dsgIfVendorParamId
            in the dsgIfVendorParamTable describing the vendor specific
            DSG parameters. If no associated entry in
            dsgIfVendorParamTable exists, this value is 0."
    DEFVAL { 0 }
    ::= { dsgIfClientIdEntry 5 }

dsgIfClientRowStatus OBJECT-TYPE
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of the row." 
    ::= { dsgIfClientIdEntry 6 }

-----------------------------------------------------------------------
--The Vendor Parameter Table contains vendor specific parameters 
--which allows vendors to send the specific parameters within a
--DSG rule or within the DSG Configuration block in a DCD message.
-----------------------------------------------------------------------

dsgIfVendorParamTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfVendorParamEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The DSG Vendor Parameter Table allows vendors to send
            specific parameters to the DSG clients within a DSG
            rule or within the DSG Configuration block in a
            DCD message."
    ::= { dsgIfDCD 2 } 

dsgIfVendorParamEntry OBJECT-TYPE 
    SYNTAX      DsgIfVendorParamEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG Vendor Parameter Table. Rows are 
            created by an SNMP SET request setting the value of 
            dsgIfVendorRowStatus to 'createAndGo'. Each entry
            represents one or more vendor's specific parameters.
            Rows are deleted by an SNMP SET  request setting the 
            value of dsgIfVendorRowStatus to 'destroy'.

            There are limits to the amount of vendor specific 
            information that can be carried in a DSG Rule or 
            DSG Configuration block. An SNMP SET request which 
            would result in these limits being exceeded should be
            rejected." 
    INDEX { dsgIfVendorParamId, dsgIfVendorIndex }
    ::= { dsgIfVendorParamTable 1 } 

DsgIfVendorParamEntry ::= SEQUENCE {
    dsgIfVendorParamId    Unsigned32,
    dsgIfVendorIndex      Unsigned32,
    dsgIfVendorOUI        OCTET STRING,
    dsgIfVendorValue      OCTET STRING,
    dsgIfVendorRowStatus  RowStatus
    }

dsgIfVendorParamId OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index of the table." 
    ::= { dsgIfVendorParamEntry 1 }

dsgIfVendorIndex OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The Vendor Specific Index." 
    ::= { dsgIfVendorParamEntry 2 }

dsgIfVendorOUI OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(3))
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The Vendor assigned Organization Unique Id (OUI)." 
    DEFVAL { '000000'h }
    ::= { dsgIfVendorParamEntry 3 }

dsgIfVendorValue OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(0..50))
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The Vendor Specific Parameter Value." 
    DEFVAL { "" }
    ::= { dsgIfVendorParamEntry 4 }

dsgIfVendorRowStatus OBJECT-TYPE
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of the row." 
    ::= { dsgIfVendorParamEntry 5 }

-----------------------------------------------------------------------
--The Channel List Table contains lists of one or multiple
--downstream frequencies that are carrying DSG tunnels. The
--appropriate DSG Channel List will be included in the DCD
--message on the associated downstream channel from the
--dsgIfDownstreamTable.
--The DSG Client uses this list to determine which downstream
--frequencies have DSG Tunnels present.
-----------------------------------------------------------------------

dsgIfChannelListTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfChannelListEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The DSG Channel List Table contains list of one or
            multiple downstream frequencies that are carrying DSG
            tunnel(s)." 
    ::= { dsgIfDCD 3 } 

dsgIfChannelListEntry OBJECT-TYPE 
    SYNTAX      DsgIfChannelListEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG Channel List Table. Rows are 
            created by an SNMP SET request setting the value of 
            dsgIfChannelRowStatus to 'createAndGo'.

            Rows are deleted by an SNMP SET  request setting the value
            of dsgIfChannelRowStatus to 'destroy'." 
    INDEX { dsgIfChannelListIndex, dsgIfChannelIndex }
    ::= { dsgIfChannelListTable 1 } 

DsgIfChannelListEntry ::= SEQUENCE {
    dsgIfChannelListIndex  Unsigned32,
    dsgIfChannelIndex      Unsigned32,
    dsgIfChannelDsFreq     Integer32,
    dsgIfChannelRowStatus  RowStatus
    }

dsgIfChannelListIndex OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index to this table." 
    ::= { dsgIfChannelListEntry 1 }

dsgIfChannelIndex OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION 
            "The index for each downstream frequency that
            contains the DSG tunnel(s)." 
    ::= { dsgIfChannelListEntry 2 }

dsgIfChannelDsFreq OBJECT-TYPE
    SYNTAX      Integer32 (0..1000000000)
    UNITS       "hertz"
    MAX-ACCESS  read-create
    STATUS      current 
    DESCRIPTION 
            "The DOCSIS downstream center frequency. The receive 
            frequency MUST be a multiple of 62500Hz."
    DEFVAL { 0 }
    ::= { dsgIfChannelListEntry 3 }

dsgIfChannelRowStatus OBJECT-TYPE
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of the row." 
    ::= { dsgIfChannelListEntry 4 }

-----------------------------------------------------------------------
--The Timer Table contains 4 timeout timers that are sent to the DSG 
--clients via the DCD message. These timers are sent to the DSG clients
--via the DCD message. 
--Each downstream mapped to only one set of timers.
-----------------------------------------------------------------------

dsgIfTimerTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfTimerEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The DSG Timer Table contains timers that are sent to
            the DSG client(s) via the DCD message." 
    ::= { dsgIfDCD 4 } 

dsgIfTimerEntry OBJECT-TYPE 
    SYNTAX      DsgIfTimerEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG Timer Table. Rows are created 
            by an SNMP SET request setting the value of 
            dsgIfTimerRowStatus to 'createAndGo'. 

            Rows are deleted by an SNMP SET request setting the value 
            of dsgIfTimerRowStatus to 'destroy'." 
    INDEX { dsgIfTimerIndex }
    ::= { dsgIfTimerTable 1 } 

DsgIfTimerEntry ::= SEQUENCE {
    dsgIfTimerIndex     Unsigned32,
    dsgIfTimerTdsg1     Unsigned32,
    dsgIfTimerTdsg2     Unsigned32,
    dsgIfTimerTdsg3     Unsigned32,
    dsgIfTimerTdsg4     Unsigned32,
    dsgIfTimerRowStatus RowStatus
    }

dsgIfTimerIndex OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The index to this table." 
    ::= { dsgIfTimerEntry 1 }

dsgIfTimerTdsg1 OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    UNITS       "second" 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "Initialization Timeout.  This is the timeout period 
            for the DSG packets during initialization of the DSG
            client. The default value is 2 seconds."
    DEFVAL { 2 } 
    ::= { dsgIfTimerEntry 2 }

dsgIfTimerTdsg2 OBJECT-TYPE 
    SYNTAX      Unsigned32 (1..65535)
    UNITS       "second"
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "Operational Timeout.  This is the timeout period for 
            the DSG packets during normal operation of the DSG client.
            Default value is 600 seconds."
    DEFVAL { 600 }
    ::= { dsgIfTimerEntry 3 }

dsgIfTimerTdsg3 OBJECT-TYPE 
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "second" 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "Two-way retry timer. This is the retry timer that
            determines when the DSG client attempts to reconnect
            with the DSG Agent and established two-way connectivity.
            Default value is 300 seconds. The value 0 indicates that
            the client will continuously retry two-way operation."
    DEFVAL { 300 }
    ::= { dsgIfTimerEntry 4 }

dsgIfTimerTdsg4 OBJECT-TYPE 
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "second"
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "One-way retry timer.  The retry timer that determines
            when the client attempts to rescan for a DOCSIS
            downstream channel that contains DSG packets after a
            dsgIfTimerTdsg1 or dsgIfTimerTdsg2 timeout. 
            Default value is 1800 seconds. The value 0 indicates that
            the client will immediately begin scanning upon 
           dsgIfTimerTdsg1 or dsgIfTimerTdsg2 timeout."
    DEFVAL { 1800 }
    ::= { dsgIfTimerEntry 5 }

dsgIfTimerRowStatus OBJECT-TYPE
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create 
    STATUS      current 
    DESCRIPTION 
            "The status of the row." 
    ::= { dsgIfTimerEntry 6 }

-----------------------------------------------------------------------
--The IF Tunnel Downstream Stats Table is indexed by the DSG Tunnel 
--Index & the ifIndex of the downstream. It contains the packet and byte 
--counters for each tunnel.  In addition for 3.0 devices it contains the
--DSID used to label the tunnel traffic  
-----------------------------------------------------------------------

dsgIfTunnelDsStatsTable OBJECT-TYPE 
    SYNTAX      SEQUENCE OF DsgIfTunnelDsStatsEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "The IF Tunnel Downstream Stats Table contains 
            the packet and byte counters for the tunnel. It also 
            contains the DSID used by the tunnel traffic." 
    ::= { dsgIfTunnelDsStats 1 } 

dsgIfTunnelDsStatsEntry OBJECT-TYPE 
    SYNTAX      DsgIfTunnelDsStatsEntry
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION
            "An entry in the DSG IF Tunnel Downstream Stats Table. 
            An entry in this table exists for each dsgIfTunnelIndex
            and an ifIndex of docsCableDownstream(128)." 
    INDEX { dsgIfTunnelIndex,             
            ifIndex }  
    ::= { dsgIfTunnelDsStatsTable 1 } 

DsgIfTunnelDsStatsEntry ::= SEQUENCE {
    dsgIfTunnelDsStatsPkts    Counter64,
    dsgIfTunnelDsStatsOctets  Counter64,
    dsgIfTunnelDsStatsDsid    Dsid
    }

dsgIfTunnelDsStatsPkts OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "packets"
    MAX-ACCESS  read-only
    STATUS      current 
    DESCRIPTION 
            "This attribute indicates the count of the number of
             packets transmitted in this tunnel"
        ::= { dsgIfTunnelDsStatsEntry 1 } 

dsgIfTunnelDsStatsOctets OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "bytes"
    MAX-ACCESS  read-only
    STATUS      current 
    DESCRIPTION 
            "This attribute indicates the count of the number of
             octets transmitted in this tunnel "
        ::= { dsgIfTunnelDsStatsEntry 2 } 

dsgIfTunnelDsStatsDsid OBJECT-TYPE
    SYNTAX      Dsid 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "When operating with Multicast DSID Forwarding (MDF)
            enabled, this object contains the DSID value with which the 
            CMTS labels the DSG Tunnel traffic. If no DSID has been         
            created for this tunnel then this object returns 0. 
            When MDF is disabled this object returns 0. Pre-3.0 DOCSIS 
            devices are not required to instantiate this object."
    ::= { dsgIfTunnelDsStatsEntry 3 }

-- 
-- Conformance definitions 
-- 
dsgIfConformance  OBJECT IDENTIFIER ::= { dsgIfMIB 4 } 
dsgIfGroups       OBJECT IDENTIFIER ::= { dsgIfConformance 1 } 
dsgIfCompliances  OBJECT IDENTIFIER ::= { dsgIfConformance 2 } 

dsgIfBasicCompliance MODULE-COMPLIANCE 
    STATUS      current 
    DESCRIPTION 
            "The compliance statement for DOCSIS Set-top Gateway 
            systems."

MODULE -- dsgIfMIB

-- conditionally mandatory groups 

GROUP dsgIfClassifierGroup
    DESCRIPTION 
            "Mandatory in DOCSIS Set-top Gateway systems." 

GROUP dsgIfBaseGroup 
    DESCRIPTION 
            "Mandatory in DOCSIS Set-top Gateway systems."

GROUP dsgIfDCDGroup 
    DESCRIPTION
            "Mandatory in DOCSIS Set-top Gateway systems." 

    ::= { dsgIfCompliances 1 }

dsgIfDeprecatedCompliance MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "The compliance statement for deprecated objects of the IF3 MIB."

    MODULE -- this module
    MANDATORY-GROUPS {
     dsgIfDeprecatedGroup
     }

    ::= { dsgIfCompliances 2 }

dsgIfClassifierGroup OBJECT-GROUP 
    OBJECTS {
            dsgIfClassPriority,
            dsgIfClassSrcIpAddrType,
            dsgIfClassSrcIpAddr,
            dsgIfClassSrcIpPrefixLength,
            dsgIfClassDestIpAddressType,
            dsgIfClassDestIpAddress,
            dsgIfClassDestPortStart,
            dsgIfClassDestPortEnd,
            dsgIfClassRowStatus,
            dsgIfClassIncludeInDCD
            }
    STATUS      current
    DESCRIPTION 
            "A collection of objects providing the classifier
            configuration." 
    ::= { dsgIfGroups 1 } 

dsgIfBaseGroup OBJECT-GROUP 
    OBJECTS {
            dsgIfTunnelGroupIndex,
            dsgIfTunnelClientIdListIndex,
            dsgIfTunnelMacAddress,
            dsgIfTunnelServiceClassName,
            dsgIfTunnelRowStatus,
            dsgIfTunnelGrpDsIfIndex,
            dsgIfTunnelGrpRulePriority,
            dsgIfTunnelGrpVendorParamId,
            dsgIfTunnelGrpRowStatus,
            dsgIfDownTimerIndex,
            dsgIfDownVendorParamId,
            dsgIfDownChannelListIndex,
            dsgIfDownEnableDCD
            }
    STATUS      current 
    DESCRIPTION 
            "A collection of objects providing DSG Tunnel and Channel
            configuration." 
    ::= { dsgIfGroups 2 } 

dsgIfDCDGroup OBJECT-GROUP 
    OBJECTS {
            dsgIfClientIdType,
            dsgIfClientIdValue,
            dsgIfClientVendorParamId,
            dsgIfClientRowStatus,
            dsgIfVendorOUI,
            dsgIfVendorValue,
            dsgIfVendorRowStatus,
            dsgIfChannelDsFreq,
            dsgIfChannelRowStatus,
            dsgIfTimerTdsg1,
            dsgIfTimerTdsg2,
            dsgIfTimerTdsg3,
            dsgIfTimerTdsg4,
            dsgIfTimerRowStatus,
            dsgIfTunnelDsStatsPkts,
            dsgIfTunnelDsStatsOctets,
            dsgIfTunnelDsStatsDsid
            }
    STATUS      current 
    DESCRIPTION 
            "A collection of objects providing Timers configuration."
    ::= { dsgIfGroups 3 } 

dsgIfDeprecatedGroup OBJECT-GROUP
    OBJECTS {
            dsgIfTunnelGrpUcidList
            }
    STATUS      deprecated
    DESCRIPTION
         "A collection deprecated objects no longer required by this 
         Specification."
    ::= { dsgIfGroups 4 }

END
