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
    clabProjDocsis
        FROM CLAB-DEF-MIB;

dsgIfMIB MODULE-IDENTITY
    LAST-UPDATED "200411240000Z" -- November 24, 2004
    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: "
    DESCRIPTION
             "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."
    REVISION "200408040000Z"
    DESCRIPTION
             "Initial revision, 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 }

----------------------------------------------------------------------
--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."
    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."
    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
            "The Service Class Name that associated to the
            docsQosServiceClassName(in DOCS-QOS-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 "SP-RFIv1.1-I10-030730, Appendix C.2.2.3.4"
    ::= { 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, ucid range 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 current
    DESCRIPTION
            "The list of Upstream Channel ID (UCID) values (octets)
            for which the DSG rule applies. 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. The dsgIfClientIdType
            of a type broadcast(1), the value is empty string. The type
            of macAddress(2), the value represents the well known MAC
            address. The type of caSystemId(3) the value represents the
            CA System Id. The type of applicationId(4) the value
            represents the application Id."
    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
            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 10 minutes."
    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 5 minutes. 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 30 minutes. 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 }

--
-- 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 }

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,
            dsgIfTunnelGrpUcidList,
            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
    }
    STATUS      current
    DESCRIPTION
            "A collection of objects providing Timers configuration."
    ::= { dsgIfGroups 3 }
    END
