-- MIB module extracted from ITU-T J.126 (12/2007)
ESAFE-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY,
    Unsigned32,
    OBJECT-TYPE             FROM SNMPv2-SMI  --RFC 2578
    OBJECT-GROUP,
    MODULE-COMPLIANCE       FROM SNMPv2-CONF  -- RFC 2580
    TruthValue,
    DateAndTime,
    PhysAddress             FROM SNMPv2-TC  -- RFC 2579
    SnmpAdminString         FROM SNMP-FRAMEWORK-MIB --RFC 3411
    ifIndex                 FROM IF-MIB --RFC 2863
    clabProjDocsis          FROM CLAB-DEF-MIB
;
esafeMib MODULE-IDENTITY
    LAST-UPDATED "200702230000Z" -- February 23, 2007
    ORGANIZATION "Cable Television Laboratories, Inc."
    CONTACT-INFO
            "Postal: Cable Television Laboratories, Inc.
            858 Coal Creek Circle
            Louisville, CO 80027
            U.S.A.
            Phone: +1 303-661-9100
            Fax: +1 303-661-9199
            E-mail: mibs@cablelabs.com"
    DESCRIPTION
            "This MIB module provides the management objects necessary
            to configure functionality of eSAFE components of a device
            implementing an eDOCSIS compliant cable modem and one or 
            more eSAFE elements.
            Copyright 1999-2007 Cable Television Laboratories, Inc.
            All rights reserved."
    REVISION "200702230000Z" -- February 23, 2007
    DESCRIPTION
            "This revision is published as CM-SP-eDOCSIS-I11."
    REVISION "200607280000Z" -- July 28, 2006
    DESCRIPTION
            "This revision is published as CM-SP-eDOCSIS-I09."
    ::= { clabProjDocsis 14 }
-- Administrative assignments
-- esafeNotifications  OBJECT IDENTIFIER ::= { esafeMib 0 }
esafeMibObjects     OBJECT IDENTIFIER ::= { esafeMib 1 }
esafeBase           OBJECT IDENTIFIER ::= { esafeMibObjects 1 }
esafePsMibObjects   OBJECT IDENTIFIER ::= { esafeMibObjects 2 }
esafeMtaMibObjects  OBJECT IDENTIFIER ::= { esafeMibObjects 3 }
esafeStbMibObjects  OBJECT IDENTIFIER ::= { esafeMibObjects 4 }
esafeErouterMibObjects  OBJECT IDENTIFIER ::= { esafeMibObjects 5 }
-- Object Groups
--
-- eSAFE Base Objects
--
esafeProvisioningStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EsafeProvisioningStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains the current provisioning
            status of each implemented eSAFE, and information 
            about the last failure or exception condition in 
            the eSAFE provisioning process, if applicable."
    ::= { esafeBase 1 }
esafeProvisioningStatusEntry OBJECT-TYPE
    SYNTAX      EsafeProvisioningStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in this table is created for
            each eSAFE implemented in the eDOCSIS
            compliant device."
    INDEX { ifIndex }
    ::= { esafeProvisioningStatusTable 1 }
EsafeProvisioningStatusEntry ::=SEQUENCE
    {
    esafeProvisioningStatusProgress          INTEGER,
    esafeProvisioningStatusFailureFound      TruthValue,
    esafeProvisioningStatusFailureFlow       SnmpAdminString,
    esafeProvisioningStatusFailureEventID    Unsigned32,
    esafeProvisioningStatusFailureErrorText  SnmpAdminString,
    esafeProvisioningStatusLastUpdate        DateAndTime
    }
esafeProvisioningStatusProgress OBJECT-TYPE
    SYNTAX      INTEGER {
                    notInitiated(1),
                    inProgress(2),
                    finished(3)
                    }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The current state of the eSAFE provisioning process.
            notInitiated(1) indicates that the eSAFE has not yet
            begun its provisioning process.
            inProgress(2) indicates that the eSAFE is in the process
            of provisioning.
            finished(3) indicates that the eSAFE completed
            its provisioning process. Provisioning success 
            or failure information is provided by other
            objects, including 
            esafeProvisioningStatusFailureFound and
            cabhPsDevProvState."
    ::={ esafeProvisioningStatusEntry 1 }
esafeProvisioningStatusFailureFound OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "true(1) indicates that the eSAFE encountered
            an error condition during the provisioning
            process. An eSAFE could start a looping process
            from a previous flow step after a failure,
            therefore this value is retained until the 
            flow step that initially failed eventually
            passes or is updated with another error
            condition.
            The eSAFE device needs to reflect in the value of 
            'esafePsProvisioningStatusFailureFound' any recognized 
            errors even if it is still in the process of 
            provisioning, i.e., when 
            esafeProvisioningStatusProgress has a value of 
            inProgress(2)."
    REFERENCE
            "PacketCable Provisioning specification,
            Provisioning Overview section; CableHome
            specification, Provisioning Processes
            section, BSoD TDM Emulation Interface Specification,
            Provisioning section."
    ::={ esafeProvisioningStatusEntry 2 }
esafeProvisioningStatusFailureFlow OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "If esafeProvisioningStatusFailureFound
            is true(1), this object contains the 
            label for the provisioning flow step
            in which the error condition was
            encountered, otherwise an empty value 
            is reported.
            The value of this object corresponds to
            the provisioning sequence 'Flow Step' 
            designator for the associated eSAFE, as
            defined in the eSAFE specification. For
            example, an ePS will report a value like
            CHPSWMD-1, an eMTA will report a value
            such as MTA-1, and a TEA will report a value
            such as eTEA-1."
    REFERENCE
            "PacketCable Provisioning specification,
            Provisioning Overview section; CableHome
            specification, Provisioning Processes
            section; BSoD TDM Emulation Interface Specification,
            provisioning section."
    ::={ esafeProvisioningStatusEntry 3 }
esafeProvisioningStatusFailureEventID OBJECT-TYPE
    SYNTAX      Unsigned32 (0..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "If esafeProvisioningStatusFailureFound
            is true(1), this object contains the 
            eSAFE log error Event Identifier defined
            in the eSAFE specification, otherwise
            it returns a value '0'. For an eMTA type
            eSAFE, this object reports the PacketCable
            EventID value from the Provisioning Events
            table, e.g., 65535. For an ePS type eSAFE, 
            this object reports the EventID value from 
            the Defined Events for CableHome table, e.g.,
            68000100. For an eTEA type eSAFE, 
            this object reports the Event ID value from 
            the 'Event ID' column of the 
            DOCSIS Events Extensions table for BSoD TDM 
            Emulation Interface Specification, e.g., 8000100."
    REFERENCE
            "PacketCable Provisioning specification,
            Appendix I Provisioning Events; CableHome
            specification, Appendix II Format and Content
            for Event, SYSLOG, and SNMP Trap; BSoD TDM Emulation 
            Interface Specification, Annex A Event, SYSLOG,
            and SNMP Trap Extensions."
    ::={ esafeProvisioningStatusEntry 4 }
esafeProvisioningStatusFailureErrorText OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "If esafeProvisioningStatusFailureFound
            is true(1), this object contains the eSAFE
            log error messages based on the eSAFE
            specification, otherwise it returns an
            empty value. For an eMTA type eSAFE, this
            object reports the value from the
            'Comments' column of the Provisioning
            Events table, e.g., 'The DNS Response
            from the DNS server did not resolve
            the TFTP FQDN.' For an ePS type
            eSAFE this object reports the value
            from the 'Event Text' column of the 
            Defined Events for CableHome table, 
            e.g., 'DHCP Failed - Discover sent, 
            no offer received. For an eTEA type eSAFE, 
            this object reports the value from the
            'Event Message' column of the 
            DOCSIS Events Extensions table for BSoD TDM 
            Emulation Interface Specification, e.g., 
            'TFTP config file download error (eTEA-6).'"
    REFERENCE
            "PacketCable Provisioning specification,
            PacketCable Management Event Mechanism specification; 
            CableHome specification, Appendix II Format and Content
            for Event, SYSLOG, and SNMP Trap; BSoD TDM Emulation 
            Interface Specification, DOCSIS Events Extensions 
            Annex for Event, SYSLOG, and SNMP Trap Extensions."
    ::={ esafeProvisioningStatusEntry 5 }
esafeProvisioningStatusLastUpdate OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The value of the eCM docsDevDateTime when
            this row entry was last updated."
    ::={ esafeProvisioningStatusEntry 6 }
esafeDevStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EsafeDevStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains entries that provide the SNMP manager
            with status information pertaining to each implemented
            eSAFE device. While this table MUST be implemented by all
            eDOCSIS devices, the support for reporting such information
            and the status conditions supported will be determined by
            the corresponding eSAFE specifications. It is highly 
            recommended that the eSAFE MIBs themselves have objects 
            to specify more detailed information."
    ::= { esafeBase 2 }
esafeDevStatusEntry OBJECT-TYPE
    SYNTAX      EsafeDevStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in this table MUST be created for each eSAFE
            device behind the eCM. The index needs to be the
            corresponding index in the ifTable for the associated
            eSAFE device."
    INDEX { ifIndex }
    ::= { esafeDevStatusTable 1 }
esafeDevStatusEntry ::=SEQUENCE
    {
    esafeDevServiceIntImpact INTEGER,
    esafeDevServiceIntImpactInfo SnmpAdminString
    }
esafeDevServiceIntImpact OBJECT-TYPE
    SYNTAX      INTEGER {
                significant(1),
                none(2),
                unsupported(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The value of this MIB object indicates the service
            interruption impact assessment of the corresponding eSAFE
            device as determined by the current status of the eSAFE
            device, in accordance with the directives provided in the
            eSAFE specification. 
            If esafeDevServiceIntImpact is set to significant (1), it 
            indicates that the corresponding eSAFE device (as per the
            eSAFE specification) identifies a significant impact on the
            active services at the given point in time. This impact
            level is highly recommended for critical or real-time
            services, though the impact assessment is left to the
            directives provided by the associated eSAFE specification.
            If esafeDevServiceIntImpact is set to none (2), it
            indicates that the corresponding eSAFE device (as per the
            eSAFE specification) identifies no significant impact on
            the services offered at the given point in time.
            If esafeDevServiceIntImpact is unsupported(3), it indicates
            that the corresponding eSAFE device has no known interfaces
            to support this feature or the eSAFE specification does not
            recommend this feature. 
            If the eSAFE specification specifies the use of this
            mechanism, then it MUST define definitive states for the
            impacts (significant or none) and the value of
            unsupported(3) MUST not be used by the eDOCSIS device 
            for that eSAFE interface. 
            However, if the corresponding eSAFE specification does not
            provide any directives, then the value MUST be set to
            unsupported(3).
            If there exists multiple services being offered by an eSAFE
            device (Either multiple services or multiple instances of
            the same service), this MIB MUST indicate the highest
            possible impact and other impact information SHOULD be
            populated in the associated esafeDevServiceIntImpactInfo
            table."
    ::={ esafeDevStatusEntry 1 }
esafeDevServiceIntImpactInfo OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides more information to the SNMP Managers
            regarding the condition reported in
            esafeDevServiceIntImpact. The eSAFE device vendor could use
            this to fill in specific vendor strings or values that
            could add value or provide more information related to the
            status.
            Examples:
              For eMTA devices:
                Lines 1 and 3 have active connections, Line 2 is not 
                provisioned.
                <Value of the corresponding MIB object in the eMTA
                MIBs, if applicable>
                
              For other eSAFE devices:
                Critical video streaming in progress, please wait for
                5.30 minutes
                <Value of the corresponding MIB object in the eSAFE
                MIBs, if applicable>.
            The device MUST report 'No Additional Information' in case 
            the associated  eSAFE vendor cannot obtain information from
            the eSAFE device."
    ::={ esafeDevStatusEntry 2 }
--
-- Objects that apply to an eCM with an ePS type eSAFE.
--
esafePsCableHomeModeControl OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabledMode(1),
                    provSystem(2),
                    dormantCHMode(3)
                    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This object provides control over the mode of 
            operation of the CableHome ePS eSAFE element 
            of the eDOCSIS compliant device. 
            When this object is set to disabledMode(1), the 
            ePS eSAFE element is instructed to switch to
            CableHome Disabled Mode operation. 
            When this object is set to provSystem(2), the ePS 
            eSAFE element restarts its provisioning process.
            When this object is set to dormantCHMode(3), the ePS
            eSAFE element is instructed to switch to CableHome
            Dormant Mode operation. In this mode, the ePS restarts
            its provisioning process omitting CableHome-specific 
            DHCP Options 60 and 43 in the DHCP DISCOVER and 
            DHCP REQUEST messages, acquires an IP address lease from 
            the cable operator's DHCP server, and operates in unmanaged
            Dormant CableHome Mode regardless of the values of the file
            and siaddr fields or of the values of DHCP options that
            might otherwise configure the ePS to operate in DHCP
            Provisioning Mode or in SNMP Provisioning Mode.
            The value of this object MUST persist across cable modem
            resets."
    REFERENCE
           "CableHome specifications, CableHome Operational 
           Modes section."
    DEFVAL { dormantCHMode }
    ::= { esafePsMibObjects 1 }
esafePsCableHomeModeStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabledMode(1),
                    dormantCHMode(2),
                    cableHomeMode(3)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides visibility to the current 
            mode of operation of the CableHome ePS eSAFE 
            element of the eDOCSIS compliant device. 
            If the value of this object is disabledMode(1), the 
            ePS eSAFE element is currently operating in CableHome
            Disabled Mode. 
            If the value of this object is dormantCHMode(2), the 
            ePS is currently operating in Dormant CableHome Mode.
            If the value of this object is cableHomeMode(3), the ePS 
            is currently operating in CableHome mode."
    REFERENCE
            "CableHome specification, CableHome Operational Models
            section."
    ::= { esafePsMibObjects 2 }
--
-- Objects that apply to an eCM with an eRouter type eSAFE.
--
esafeErouterAdminMode OBJECT-TYPE
    SYNTAX      INTEGER {
        disabled(1),
        ipv4Only(2),
        ipv6Only(3),
        ipv4AndIpv6(4)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides visibility to the mode of 
            operation to which the DOCSIS eRouter eSAFE element 
            was set via TLV in the cable modem configuration file.
            If the value of this object is disabled(1), the
            eRouter was configured via TLV in the cable modem
            configuration file to not initialize as described
            in the eRouter Initialization section of the CableLabs
            IPv4 and IPv6 eRouter Specification.
            If the value of this object is ipv4Only(2), the
            eRouter was configured via TLV in the cable modem
            configuration file to operate with an IPv4 network 
            address and with the IPv4 stack operational and to 
            operate without an IPv6 network address and to not 
            run an IPv6 protocol stack.
            If the value of this object is ipv6Only(3), the
            eRouter was configured via TLV in the cable modem
            configuration file to operate with an IPv6 network
            address and with the IPv6 stack operational and to
            operate without an IPv4 network address and to not 
            run an IPv4 protocol stack.
            If the value of this object is ipv4AndIpv6(4), the
            eRouter was configured via TLV in the cable modem
            configuration file to operate with an IPv4 network
            address and an IPv6 network address and to run both
            IPv4 and IPv6 protocol stacks."
    REFERENCE
            "DOCSIS IPv4 and IPv6 eRouter Specification,
            CM-SP-eRouter-I02-070223."
    ::= { esafeErouterMibObjects 1 }
esafeErouterOperMode OBJECT-TYPE
    SYNTAX      INTEGER {
        disabled(1),
        ipv4OnlyFwding(2),
        ipv6OnlyFwding(3),
        ipv4AndIpv6Fwding(4),
        noIpv4AndNoIpv6Fwding(5)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides visibility to the current
            mode of operation of the DOCSIS eRouter eSAFE
            element of the eDOCSIS compliant device.
            If the value of this object is disabled(1), 
            the eRouter eSAFE element has been administratively
            Disabled. The eDOCSIS device will bridge traffic
            according to the configuration of the DOCSIS
            embedded cable modem (eCM)
            If the value of this object is ipv4OnlyFwding(2), 
            the eRouter eSAFE element is currently operating 
            with the IPv4 protocol stack operational, is
            forwarding IPv4 traffic, and is not running an
            IPv6 protocol stack and not forwarding IPv6 traffic.
            If the value of this object is ipv6OnlyFwding(3), 
            the eRouter eSAFE element is currently operating 
            with the IPv6 protocol stack operational, is
            forwarding IPv6 traffic, and is not running an
            IPv4 protocol stack and not forwarding IPv4 traffic.
            If the value of this object is ipv4AndIpv6Fwding(4), 
            the eRouter eSAFE element is currently operating 
            with both the IPv4 protocol stack and IPv6 protocol
            stack operational, and is forwarding IPv4 and IPv6 
            traffic.
            If the value of this object is noIpv4AndNoIpv6Fwding(5),
            the eRouter is currently operating with neither the IPv4
            nor IPv6 protocol stack running. The eRouter is unable to
            pass traffic between the Operator-Facing Interface and the
            Customer-Facing Interface. "
    REFERENCE
            "DOCSIS IPv4 and IPv6 eRouter Specification,
            CM-SP-eRouter-I02-070223."
    ::= { esafeErouterMibObjects 2 }
esafeErouterPhysAddress OBJECT-TYPE
    SYNTAX      PhysAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The physical address of the operator-facing interface
            of the DOCSIS eRouter eSAFE element."
    ::= { esafeErouterMibObjects 3 }
-- Conformance information 
esafeMibConformance     OBJECT IDENTIFIER ::= { esafeMib 2 }
esafeMibCompliances     OBJECT IDENTIFIER ::= { esafeMibConformance 1 }
esafeMibGroups          OBJECT IDENTIFIER ::= { esafeMibConformance 2 }
-- Compliance statements
esafeMibBasicCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
            "The compliance statement for eSAFE MIB objects."
MODULE    -- eSAFE-MIB
-- unconditionally mandatory groups
MANDATORY-GROUPS {
    esafeBaseGroup
    }
-- conditionally mandatory groups
GROUP esafePsMibGroup
    DESCRIPTION
            "This group is implemented only by eDOCSIS devices
            that implement an embedded Portal Services logical 
            element (ePS) compliant with CableLabs
            CableHome specifications."
GROUP esafeErouterMibGroup
    DESCRIPTION
            "This group is implemented only by eDOCSIS devices
            that implement a DOCSIS embedded router (eRouter)
            element compliant with CableLabs DOCSIS eRouter
            specifications."
    ::= { esafeMibCompliances 1 }
-- eSAFE Base Group Declarations
esafeBaseGroup OBJECT-GROUP
    OBJECTS {
            esafeProvisioningStatusProgress,
            esafeProvisioningStatusFailureFound,
            esafeProvisioningStatusFailureFlow,
            esafeProvisioningStatusFailureEventID,
            esafeProvisioningStatusFailureErrorText,
            esafeProvisioningStatusLastUpdate,
            esafeDevServiceIntImpact,
            esafeDevServiceIntImpactInfo
            }
    STATUS      current
    DESCRIPTION
            "Group of eSAFE Base objects in the eSAFE MIB."
    ::= { esafeMibGroups 1 }
--  PS MIB Group
esafePsMibGroup OBJECT-GROUP
    OBJECTS {
            esafePsCableHomeModeControl,
            esafePsCableHomeModeStatus
            }
    STATUS      current
    DESCRIPTION
            "Group of embedded PS-specific objects
            in the eSAFE MIB."
    ::= { esafeMibGroups 2 }
-- eRouter MIB Group
esafeErouterMibGroup OBJECT-GROUP
    OBJECTS {
            esafeErouterAdminMode,
            esafeErouterOperMode,
            esafeErouterPhysAddress
            }
    STATUS      current
    DESCRIPTION
            "Group of embedded Router-specific objects
            in the eSAFE MIB."
    ::= { esafeMibGroups 3 }
END