DOCS-SUBMGT-MIB  DEFINITIONS ::= BEGIN

   IMPORTS
           MODULE-IDENTITY,
           OBJECT-TYPE,
           experimental,
           Counter32,
           Integer32
           -- BITS
                   FROM SNMPv2-SMI
           TEXTUAL-CONVENTION,
           RowStatus,
           TruthValue
                   FROM SNMPv2-TC
           OBJECT-GROUP,
           MODULE-COMPLIANCE
                   FROM SNMPv2-CONF
   --        docsDev
   --                FROM DOCS-CABLE-DEVICE-MIB
           docsIfCmtsCmStatusIndex,
           docsIfCmtsCmStatusEntry
                   FROM DOCS-IF-MIB;  -- RFC2670

   experimental83 MODULE-IDENTITY
           LAST-UPDATED    "200007120000Z" -- July 12, 2000
           ORGANIZATION    "IETF IPCDN Working Group"
           CONTACT-INFO
               "        Wilson Sawyer
                Postal: Arris Interactive
                        6 Riverside Drive
                        Andover, MA 01810
                        U.S.A.
                Phone:  +1 978 946 4711
                E-mail: wsawyer@ieee.org"
           DESCRIPTION
               "This is the CMTS centric subscriber management MIB for
           DOCSIS compliant CMTS.  This will be rooted in experimental
           space with a future transition to be incorporated into the
           cable device MIB."
     -- temporary: the following to be assigned by RFC editor
           ::= { experimental 83 }
     --    ::= { docsDev 4 }

   docsSubMgt        OBJECT IDENTIFIER ::= { experimental83 4 }
   docsSubMgtObjects OBJECT IDENTIFIER ::= { docsSubMgt   1 }


   IpV4orV6Addr  ::= TEXTUAL-CONVENTION
       STATUS current
       DESCRIPTION
           "An IP V4 or V6 address expressed as an octet string.  The
       zero length string is equal to both 0.0.0.0 and the IPv6 :0
       address."
       SYNTAX      OCTET STRING (SIZE (0 | 4 | 16))



   docsSubMgtCpeControlTable OBJECT-TYPE
       SYNTAX  SEQUENCE OF DocsSubMgtCpeControlEntry
       MAX-ACCESS not-accessible
       STATUS  current
       DESCRIPTION
           "This table extends the docsIfCmtsCmStatusTable and adds 4
       objects which reflect the state of subscriber management on a
       particular CM."
       ::= { docsSubMgtObjects 1 }

   docsSubMgtCpeControlEntry OBJECT-TYPE
       SYNTAX  DocsSubMgtCpeControlEntry
       MAX-ACCESS not-accessible
       STATUS  current
       DESCRIPTION
           "A row in the docsSubMgtCpeControlTable.  All the values
       are either set from the system default, or are set from objects
       included in the DOCSIS registration request sent upstream to
       the CMTS from the CM."
       AUGMENTS { docsIfCmtsCmStatusEntry }
       ::= {docsSubMgtCpeControlTable 1 }

   DocsSubMgtCpeControlEntry ::= SEQUENCE
       {
       docsSubMgtCpeControlMaxCpeIp        Integer32,
       docsSubMgtCpeControlActive          TruthValue,
       docsSubMgtCpeControlLearnable       TruthValue,
       docsSubMgtCpeControlReset           TruthValue
       }


   docsSubMgtCpeControlMaxCpeIp OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The number of simultaneous IP addresses permitted behind
       the CM. If this is set to zero, all CPE traffic from the CM is
       dropped.  If the provisioning object corresponding to
       docsSubMgtCpeIpTable includes more CPE IP address entries for
       this modem than the value of this object, then this object is
       set to the count of the number of rows in docsSubMgtCpeIpTable
       that have the same docsIfCmtsCmStatusIndex value. (E.g. if the
       CM has 5 IP addresses specified for it, this value is 5). This
       limit applies to learned and docsis-provisioned entries, but
       does not limit entries added through some administrative
       process at the CMTS. If not set through DOCSIS provisioning,
       this object defaults to docsSubMgtCpeMaxIpDefault. Note that
       this object is only meaningful if docsSubMgtCpeControlActive
       is true."
       ::= { docsSubMgtCpeControlEntry 1 }

   docsSubMgtCpeControlActive OBJECT-TYPE
       SYNTAX  TruthValue
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "If this is set to true, CMTS based CPE control is active and
       all the actions required by the various filter tables and
       controls apply at the CMTS.  If this is set to false, no
       subscriber management filtering is done at the CMTS (but other
       filters may apply). If not set through DOCSIS provisioning,
       this object defaults to docsSubMgtCpeActiveDefault."
       ::= { docsSubMgtCpeControlEntry 2 }


   docsSubMgtCpeControlLearnable OBJECT-TYPE
       SYNTAX  TruthValue
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "If this is set to true, the CMTS may learn up to
       docsSubMgtMaxCpeIp addresses (less any DOCSIS-provisioned
       entries) related to this CM.  Those IP addresses are added (by
       internal process) to the docsSubMgtCpeIpTable. The nature of the
       learning mechanism is not specified here. If not set through
       DOCSIS provisioning, this object defaults to
       docsSubMgtCpeLearnableDefault. Note that this object is only
       meaningful if docsSubMgtCpeControlActive is true."
       ::= { docsSubMgtCpeControlEntry 3 }

   docsSubMgtCpeControlReset OBJECT-TYPE
       SYNTAX  TruthValue
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "This object always returns false on read.  If this object is
       set to true, the rows with  'learned' addresses in
       docsSubMgtCpeIpTable for this CM are deleted from that table."
       ::= { docsSubMgtCpeControlEntry 4 }

   docsSubMgtCpeMaxIpDefault OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The default value for docsSubMgtCpeControlMaxCpeIp if not
       signaled in the DOCSIS Registration request. Upon initial CMTS
       initialization, this defaults to 16."
       ::= { docsSubMgtObjects 2 }

   docsSubMgtCpeActiveDefault OBJECT-TYPE
       SYNTAX  TruthValue
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The default value for docsSubMgtCpeControlActive if not
       signaled in the DOCSIS Registration request. Upon initial CMTS
       initialization, this defaults to false."
       ::= { docsSubMgtObjects 3 }

   docsSubMgtCpeLearnableDefault OBJECT-TYPE
       SYNTAX  TruthValue
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The default value for docsSubMgtCpeControlLearnable if not
       signaled in the DOCSIS Registration request. Upon initial CMTS
       initialization, this defaults to true."
       ::= { docsSubMgtObjects 4 }

   docsSubMgtCpeIpTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF DocsSubMgtCpeIpEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "A table of CPE IP addresses known on a per CM basis."
       ::= { docsSubMgtObjects 5 }

   docsSubMgtCpeIpEntry OBJECT-TYPE
       SYNTAX      DocsSubMgtCpeIpEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry in the docsSubMgtCpeIpTable.  The first index is
       the specific modem we're referring to, the second index is the
       specific CPE IP entry."
       INDEX   { docsIfCmtsCmStatusIndex,
                 docsSubMgtCpeIpIndex }
       ::= {docsSubMgtCpeIpTable 1 }

   DocsSubMgtCpeIpEntry ::= SEQUENCE
       {
       docsSubMgtCpeIpIndex        Integer32,
       docsSubMgtCpeIpAddr         IpV4orV6Addr,
       docsSubMgtCpeIpLearned      TruthValue
       }


   docsSubMgtCpeIpIndex OBJECT-TYPE
       SYNTAX      Integer32(1..1024)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The index of this CPE IP address relative to the indexed CM.
       An entry is created either through the included CPE IP addresses
       in the provisioning object, or via learning.  If a CMTS receives
       an IP packet from a CM that contains a source IP address which
       does not match one of the docsSubMgtCpeIpAddr entries for this
       CM, one of two things occurs.  If the number of entries is less
       than docsSubMgtCpeControlMaxCpeIp, the source address is added to
       the table and the packet is forwarded.  If the number of entries
       equals the docsSubMgtCpeControlMaxCpeIp, AND
       docsSubMgtCpeControlActive is true, then the packet is dropped.
       Otherwise the packet is forwarded. "
       ::= { docsSubMgtCpeIpEntry 1 }

   docsSubMgtCpeIpAddr OBJECT-TYPE
       SYNTAX      IpV4orV6Addr
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The IP address either set from provisioning or learned via
       wiretapping. See docsSubMgtCpeIpIndex for the mechanism."
       ::= { docsSubMgtCpeIpEntry 2 }

   docsSubMgtCpeIpLearned OBJECT-TYPE
       SYNTAX  TruthValue
       MAX-ACCESS read-only
       STATUS  current
       DESCRIPTION
           "If true, this entry was learned from IP packets sent
       upstream rather than from the provisioning objects."
       ::= { docsSubMgtCpeIpEntry 3 }



   -- The generic packet filter table.  Note that this just defines the
   -- match criteria.  The docsSubMgtCmFilterTable links this table to
   -- the specific modems.

   docsSubMgtPktFilterTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF DocsSubMgtPktFilterEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "A table of filter or classifier criteria. Classifiers are
       assigned by group to the individual CMs.  That assignment is made
       via the configuration objects sent upstream from the CM to the
       CMTS during registration."
       ::= { docsSubMgtObjects 6 }

   docsSubMgtPktFilterEntry OBJECT-TYPE
       SYNTAX      DocsSubMgtPktFilterEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry in the docsSubMgtPktFilterTable."
       INDEX   { docsSubMgtPktFilterGroup,
                 docsSubMgtPktFilterIndex }
       ::= {docsSubMgtPktFilterTable 1 }

   DocsSubMgtPktFilterEntry ::= SEQUENCE
       {
       docsSubMgtPktFilterGroup    Integer32,
       docsSubMgtPktFilterIndex    Integer32,
       docsSubMgtPktFilterSrcAddr  IpV4orV6Addr,
       docsSubMgtPktFilterSrcMask  IpV4orV6Addr,
       docsSubMgtPktFilterDstAddr  IpV4orV6Addr,
       docsSubMgtPktFilterDstMask  IpV4orV6Addr,
       docsSubMgtPktFilterUlp      Integer32,
       docsSubMgtPktFilterTosValue OCTET STRING,
       docsSubMgtPktFilterTosMask  OCTET STRING,
       docsSubMgtPktFilterAction   INTEGER,
       docsSubMgtPktFilterMatches  Counter32,
       docsSubMgtPktFilterStatus   RowStatus
       }


   docsSubMgtPktFilterGroup OBJECT-TYPE
       SYNTAX      Integer32(1..1024)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Identifies an ordered group of filters. Each modem may be
       associated with a filter group for its upstream traffic
       (docsSubMgtCmFilterUpstream) and a filter group for its
       downstream traffic (docsSubMgtCmFilterDownstream). Typically,
       many modems will use the same filter group."
       ::= { docsSubMgtPktFilterEntry 1 }


   docsSubMgtPktFilterIndex OBJECT-TYPE
       SYNTAX      Integer32(1..1024)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An index which describes the ordering of a set of filter
       specifications within the group.  Filters are applied in index
       order."
       ::= { docsSubMgtPktFilterEntry 2 }

   docsSubMgtPktFilterSrcAddr OBJECT-TYPE
       SYNTAX      IpV4orV6Addr
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The source IP address to match in the packet to be
       classified.  By default, this is the all-zero's IP v4 and v6
       address. A packet matches the SrcAddr filter if the following is
       true:
            AND (FilterSrcAddr, FilterSrcMask) ==
            AND (Packet SrcAddr, FilterSrcMask).
       The mask value is applied to both the match value in this table
       and to the packet IP address."
       DEFVAL { ''h }
       ::= { docsSubMgtPktFilterEntry 3 }

   docsSubMgtPktFilterSrcMask OBJECT-TYPE
       SYNTAX      IpV4orV6Addr
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "A bit mask that is to be applied to the source address
       prior to matching. This, taken with the SrcAddr specifies a
       matching criteria.  By default, the pair specifies a filter
       which matches all source addresses. This mask is not
       necessarily the same as a subnet mask, but for IPv4 addresses
       the 1's bits must be leftmost and contiguous. IPv6 masks have
       no such restriction."
       DEFVAL { ''h  }
       ::= { docsSubMgtPktFilterEntry 4 }

   docsSubMgtPktFilterDstAddr OBJECT-TYPE
       SYNTAX      IpV4orV6Addr
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The destination IP address to match in the packet to be
       classified.  By default, this is the all-zero's IP v4 and v6
       address. A packet matches the DstAddr filter if the following is
       true:
            AND (FilterDstAddr, FilterDstMask) ==
            AND (Packet DstAddr, FilterDstMask).
       The mask value is applied to both the match value in this table
       and to the packet IP address."
       DEFVAL { ''h }
       ::= { docsSubMgtPktFilterEntry 5 }

   docsSubMgtPktFilterDstMask OBJECT-TYPE
       SYNTAX      IpV4orV6Addr
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "A bit mask that is to be applied to the destination
       address prior to matching. This, taken with the DstAddr
       specifies a matching criteria.  By default, the pair specifies
       a filter which matches all destination addresses. This mask is
       not necessarily the same as a subnet mask, but for IPv4
       addresses the 1's bits must be leftmost and contiguous. IPv6
       masks have no such restriction."
       DEFVAL { ''h  }
       ::= { docsSubMgtPktFilterEntry 6 }

   docsSubMgtPktFilterUlp OBJECT-TYPE
       SYNTAX      Integer32 (0..257)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "Upper level protocol to match.  If this value is 256,
       matches ALL ULP values.  If this value is 257, it matches 2 and
       and only 2 UPL values : TCP and UDP. Otherwise, this matches the
       specific protocol value.  Note that if the packet ULP is either
       6 (tcp), 17 (udp), or 257 (tcp and udp), then
       docsSubMgtPktTcpUdpFilterTable must also be consulted (if its
       entry exists) to see if this entry matches. Obviously, if this
       value is neither tcp, udp, 256, nor 257, then that table need
       not be matched against."
       DEFVAL { 256 }
       ::= { docsSubMgtPktFilterEntry 7 }

   docsSubMgtPktFilterTosValue OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE(1))
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The TOS value to match in the IP packet."
       ::= { docsSubMgtPktFilterEntry 8 }

   docsSubMgtPktFilterTosMask OBJECT-TYPE
       SYNTAX      OCTET STRING(SIZE(1))
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The mask to apply against the TOS value to be matched in the
       IP packet.  The default for both these objects taken together
       matches all TOS values. A packet matches this filter if the
       following is true:
           AND (FilterTosValue, FilterTosMask) ==
           AND (Packet TOS Value, FilterTosMask)."
       ::= { docsSubMgtPktFilterEntry 9 }

   docsSubMgtPktFilterAction OBJECT-TYPE
       SYNTAX      INTEGER
                      {
                      accept(1),
                      drop(2)
                      }
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The action to take upon this filter matching.  Accept means
       to accept the packet for further processing.  Drop means to drop
       the packet."
       DEFVAL { accept }
       ::= { docsSubMgtPktFilterEntry 10 }

   docsSubMgtPktFilterMatches OBJECT-TYPE
       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object counts the number of times this specific rule
       has been matched.  This is incremented any time this rule is
       encountered and all components match. It is only incremented for
       the first (lowest-indexed) filter matching a packet."
       ::= { docsSubMgtPktFilterEntry 11 }

   docsSubMgtPktFilterStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "Standard rowStatus object for creating this row.  Any object
       in this row which is writable may be changed at any time while
       the row is active."
       ::= { docsSubMgtPktFilterEntry 12 }


   docsSubMgtTcpUdpFilterTable OBJECT-TYPE
       SYNTAX  SEQUENCE OF DocsSubMgtTcpUdpFilterEntry
       MAX-ACCESS not-accessible
       STATUS  current
       DESCRIPTION
           "This is an adjunct to docsSubMgtPktFilterTable. It provides
            optional filtering based on elements in TCP or UDP headers.
            This table is separate from docsSubMgtPktFilterTable only
            because it is expected to be used more rarely. This table
            is not consulted unless the upper-layer protocol is TCP,
            UDP, or 'any'."
       ::= { docsSubMgtObjects 7 }

   docsSubMgtTcpUdpFilterEntry OBJECT-TYPE
       SYNTAX  DocsSubMgtTcpUdpFilterEntry
       MAX-ACCESS not-accessible
       STATUS  current
       DESCRIPTION
           "Defines filtering criteria for TCP and UDP headers."
       INDEX   { docsSubMgtPktFilterGroup, docsSubMgtPktFilterIndex }
       ::= {docsSubMgtTcpUdpFilterTable 1 }

   DocsSubMgtTcpUdpFilterEntry ::= SEQUENCE
       {
       docsSubMgtTcpUdpSrcPort     Integer32,
       docsSubMgtTcpUdpDstPort     Integer32,
       docsSubMgtTcpFlagValues     BITS,
       docsSubMgtTcpFlagMask       BITS,
       docsSubMgtTcpUdpStatus      RowStatus
       }

   docsSubMgtTcpUdpSrcPort OBJECT-TYPE
       SYNTAX  Integer32(0..65536)
       MAX-ACCESS read-create
       STATUS  current
       DESCRIPTION
           "The source port to match.  65536 matches any value in the
       TCP or UDP source port field."
       DEFVAL { 65536 }
       ::= { docsSubMgtTcpUdpFilterEntry 1 }

   docsSubMgtTcpUdpDstPort OBJECT-TYPE
       SYNTAX  Integer32(0..65536)
       MAX-ACCESS read-create
       STATUS  current
       DESCRIPTION
           "The destination port to match.  65536 matches any value in
       the TCP or UDP destination port field."
       DEFVAL { 65536 }
       ::= { docsSubMgtTcpUdpFilterEntry 2 }


   docsSubMgtTcpFlagValues OBJECT-TYPE
       SYNTAX  BITS
                   {
                   urgent(0),
                   ack(1),
                   push(2),
                   reset(3),
                   syn(4),
                   fin(5)
                   }
       MAX-ACCESS read-create
       STATUS  current
       DESCRIPTION
           "The value of the flags of interest.  The value of this
       object MUST always be a subset (proper or otherwise) of
       docsSubMgtTcpFlagMask.  An attempt to violate this constraint
       returns an inconsistentValue error for an SNMPv2 or v3 agent
       and a badValue error for an SNMPv1 agent."
       DEFVAL { {} }
       ::= { docsSubMgtTcpUdpFilterEntry 3 }


   docsSubMgtTcpFlagMask OBJECT-TYPE
       SYNTAX  BITS
                   {
                   urgent(0),
                   ack(1),
                   push(2),
                   reset(3),
                   syn(4),
                   fin(5)
                   }
       MAX-ACCESS read-create
       STATUS  current
       DESCRIPTION
           "This bit set indicates the flags of interest in the TCP
       header for the packet to be matched.  For example to match all
       packets where the urgent bit is set, but that are not either syn
       or fin, the value of docsSubMgtTcpFlagValues would be { urgent },
       and the value of this object would be { urgent, syn, fin }"
       DEFVAL { {} }
       ::= { docsSubMgtTcpUdpFilterEntry 4 }

   docsSubMgtTcpUdpStatus OBJECT-TYPE
       SYNTAX  RowStatus
       MAX-ACCESS read-create
       STATUS  current
       DESCRIPTION
           "Standard row object for this table.  Any object in the
       conceptual row may be modified regardless of whether this row is
       active or not."
       ::= { docsSubMgtTcpUdpFilterEntry 5 }



   docsSubMgtCmFilterTable OBJECT-TYPE
       SYNTAX  SEQUENCE OF DocsSubMgtCmFilterEntry
       MAX-ACCESS not-accessible
       STATUS  current
       DESCRIPTION
           "Binds filter groups to modems. This table identifies for
       each modem the upstream and downstream filter groups that apply
       to packets for that modem. Zero is used as a distinguished value
       to mean no filter group."
       ::= { docsSubMgtObjects 8 }

   docsSubMgtCmFilterEntry OBJECT-TYPE
       SYNTAX  DocsSubMgtCmFilterEntry
       MAX-ACCESS not-accessible
       STATUS  current
       DESCRIPTION
           "Binds a filter group to each direction of traffic for a
       modem."
       AUGMENTS { docsIfCmtsCmStatusEntry }
       ::= {docsSubMgtCmFilterTable 1 }

   DocsSubMgtCmFilterEntry ::= SEQUENCE
       {
       docsSubMgtSubFilterDownstream        Integer32,
       docsSubMgtSubFilterUpstream          Integer32,
       docsSubMgtCmFilterDownstream         Integer32,
       docsSubMgtCmFilterUpstream           Integer32
   }

   docsSubMgtSubFilterDownstream OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The filter group applied to traffic destined for subscribers
       attached to the referenced CM.  This is set upon row creation to
       either the default (docsSubMgtSubFilterDownDefault), or to the
       value in the provisioning object sent upstream from the CM to the
       CMTS during registration. The value of this object is a pointer
       into the docsSubMgtPktFilterTable and refers to all filter rows
       with matching docsSubMgtPktFilterGroup indices. If there are no
       matching filter rows in that table, or if this object is set to
       zero, no filtering is applied to traffic destined to hosts
       attached to this CM."
       ::= { docsSubMgtCmFilterEntry 1 }

   docsSubMgtSubFilterUpstream OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The filter group applied to traffic originating from
       subscribers attached to the referenced CM.  This is set upon row
       creation to either the default (docsSubMgtSubFilterUpDefault), or
       to the value in the provisioning object sent upstream from the CM
       to the CMTS. The value of this object is a pointer into the
       docsSubMgtPktFilterTable and refers to all filter rows with
       matching docsSubMgtPktFilterGroup indices. If there are no
       matching filter rows in that table, or if this object is set to
       zero, no filtering is applied to traffic originating from
       hosts attached to this CM."
       ::= { docsSubMgtCmFilterEntry 2 }


   docsSubMgtCmFilterDownstream OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The filter group applied to traffic destined for the
       referenced CM itself.  This is set upon row creation to either
       the default (docsSubMgtCmFilterDownDefault), or to the value in
       the provisioning object sent upstream from the CM to the CMTS
       during registration. The value of this object is a pointer into
       the docsSubMgtPktFilterTable and refers to all filter rows with
       matching docsSubMgtPktFilterGroup indices. If there are no
       matching filter rows in that table, or if this object is set to
       zero, no filtering is applied to traffic destined to this CM."
       ::= { docsSubMgtCmFilterEntry 3 }

   docsSubMgtCmFilterUpstream OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "The filter group applied to traffic originating from the
       referenced CM itself.  This is set upon row creation to either
       the default (docsSubMgtCmFilterUpDefault), or to the value in
       the provisioning object sent upstream from the CM to the CMTS.
       The value of this object is a pointer into the
       docsSubMgtPktFilterTable and refers to all filter rows with
       matching docsSubMgtPktFilterGroup indices. If there are no
       matching filter rows in that table, or if this object is set
       to zero, no filtering is applied to traffic originating from
       this CM."
       ::= { docsSubMgtCmFilterEntry 4 }

   docsSubMgtSubFilterDownDefault OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "Upon a row creation in docsSubMgtCmFilterTable,
       docsSubMgtSubFilterDownstream is set to this value if no
       provisioning object is present to override it.  This object is
       persistent across CMTS reboots.  Upon initial CMTS
       initialization, this defaults to 0."
       ::= { docsSubMgtObjects 9 }

   docsSubMgtSubFilterUpDefault OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "Upon a row creation in docsSubMgtCmFilterTable,
       docsSubMgtSubFilterUpstream is set to this value if no
       provisioning object is present to override it.  This object is
       persistent across CMTS reboots.  Upon initial CMTS
       initialization, this defaults to 0."
       ::= { docsSubMgtObjects 10 }

   docsSubMgtCmFilterDownDefault OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "Upon a row creation in docsSubMgtCmFilterTable,
       docsSubMgtCmFilterDownstream is set to this value if no
       provisioning object is present to override it.  This object is
       persistent across CMTS reboots.  Upon initial CMTS
       initialization, this defaults to 0."
       ::= { docsSubMgtObjects 11 }

   docsSubMgtCmFilterUpDefault OBJECT-TYPE
       SYNTAX  Integer32(0..1024)
       MAX-ACCESS read-write
       STATUS  current
       DESCRIPTION
           "Upon a row creation in docsSubMgtCmFilterTable,
       docsSubMgtCmFilterUpstream is set to this value if no
       provisioning object is present to override it.  This object is
       persistent across CMTS reboots.  Upon initial CMTS
       initialization, this defaults to 0."
       ::= { docsSubMgtObjects 12 }

   docsSubMgtNotification OBJECT IDENTIFIER        ::= { docsSubMgt 2 }

   docsSubMgtConformance OBJECT IDENTIFIER ::= { docsSubMgt 3 }
   docsSubMgtCompliances OBJECT IDENTIFIER ::=
                                           { docsSubMgtConformance 1 }
   docsSubMgtGroups OBJECT IDENTIFIER      ::=
                                           { docsSubMgtConformance 2 }

   docsSubMgtBasicCompliance MODULE-COMPLIANCE
       STATUS      current
       DESCRIPTION
           "The compliance statement for CMTS devices that implement
       CMTS centric subscriber management."

   MODULE

   MANDATORY-GROUPS {
           docsSubMgtGroup
           }

           ::= { docsSubMgtCompliances 1 }


   docsSubMgtGroup OBJECT-GROUP
           OBJECTS {
               docsSubMgtCpeControlMaxCpeIp,
               docsSubMgtCpeControlActive,
               docsSubMgtCpeControlLearnable,
               docsSubMgtCpeControlReset,
               docsSubMgtCpeMaxIpDefault,
               docsSubMgtCpeActiveDefault,
               docsSubMgtCpeLearnableDefault,
               docsSubMgtCpeIpAddr,
               docsSubMgtCpeIpLearned,
               docsSubMgtPktFilterSrcAddr,
               docsSubMgtPktFilterSrcMask,
               docsSubMgtPktFilterDstAddr,
               docsSubMgtPktFilterDstMask,
               docsSubMgtPktFilterUlp,
               docsSubMgtPktFilterTosValue,
               docsSubMgtPktFilterTosMask,
               docsSubMgtPktFilterAction,
               docsSubMgtPktFilterMatches,
               docsSubMgtPktFilterStatus,
               docsSubMgtTcpUdpSrcPort,
               docsSubMgtTcpUdpDstPort,
               docsSubMgtTcpFlagValues,
               docsSubMgtTcpFlagMask,
               docsSubMgtTcpUdpStatus,
               docsSubMgtSubFilterDownstream,
               docsSubMgtSubFilterUpstream,
               docsSubMgtCmFilterDownstream,
               docsSubMgtCmFilterUpstream,
               docsSubMgtSubFilterDownDefault,
               docsSubMgtSubFilterUpDefault,
               docsSubMgtCmFilterDownDefault,
               docsSubMgtCmFilterUpDefault
               }
               STATUS      current
               DESCRIPTION
                   "The objects use to managed host-based cable modems
                   via a set of CMTS enforced controls."
               ::= {  docsSubMgtGroups 1 }
   END