-- *****************************************************************
-- DOCS-DSG-IF-MIB.my:
--   
-- Mar 2005 Jun Yan
--   
-- Initial Version:
-- Mar 2005: DSG-InterfaceSpecification-CM-SP-DSG-I03-041124.pdf
--   
-- Copyright (c) 2005-2006, 2008-2009 by cisco Systems Inc.
-- All rights reserved.
-- *****************************************************************

DSG-IF-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32,
    Integer32
        FROM SNMPv2-SMI
    OBJECT-GROUP,
    MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    TruthValue,
    MacAddress,
    RowStatus
        FROM SNMPv2-TC
    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    "200903230000Z"
    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        "200903230000Z"
    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          { ''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          { ''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??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 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          -- this module
    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
