IEEE8021-Preemption-MIB DEFINITIONS ::= BEGIN

-- =============================================================
-- MIB for support of the frame preemption enhancements
-- for IEEE 802.1Q Bridges.
-- =============================================================

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    ieee802dot1mibs,
    IEEE8021PriorityValue
        FROM IEEE8021-TC-MIB
    ieee8021BridgeBaseComponentId,
    ieee8021BridgeBasePort
        FROM IEEE8021-BRIDGE-MIB
    ;

ieee8021PreemptionMib MODULE-IDENTITY
    LAST-UPDATED "201806210000Z" -- June 21, 2018
    ORGANIZATION "IEEE 802.1 Working Group"
    CONTACT-INFO
        "  WG-URL: http://www.ieee802.org/1/
         WG-EMail: STDS-802-1-L@ieee.org

          Contact: IEEE 802.1 Working Group Chair
           Postal: C/O IEEE 802.1 Working Group
                   IEEE Standards Association
                   445 Hoes Lane
                   Piscataway
                   NJ 08854
                   USA
           E-mail: STDS-802-1-L@ieee.org"
    DESCRIPTION
        "The Bridge MIB module for managing devices that support
        the frame preemption enhancements
        for IEEE 802.1Q Bridges.

        Unless otherwise indicated, the references in this MIB
        module are to IEEE Std 802.1Q.

        Copyright (C) IEEE (2018).
        This version of this MIB module is part of IEEE Std 802.1Q;
        see the draft itself for full legal notices."

    REVISION "201806210000Z" -- June 21, 2018

    
    DESCRIPTION
            "Published as part of IEEE Std 802.1Q 2017 revision.
            Cross references updated and corrected."

    REVISION "201608150000Z" -- August 15, 2016
    DESCRIPTION
            "Initial version published as part of IEEE Std 802.1Qbu."
            
       ::= { ieee802dot1mibs 29 } 


-- =============================================================
-- subtrees in the Preemption MIB
-- =============================================================

ieee8021PreemptionNotifications
    OBJECT IDENTIFIER ::= { ieee8021PreemptionMib 0 }

ieee8021PreemptionObjects
    OBJECT IDENTIFIER ::= { ieee8021PreemptionMib 1 }

ieee8021PreemptionConformance
    OBJECT IDENTIFIER ::= { ieee8021PreemptionMib 2 }

ieee8021PreemptionParameters
    OBJECT IDENTIFIER ::= { ieee8021PreemptionObjects 1 }

-- =============================================================
-- The ieee8021PreemptionNotifications subtree
-- This subtree defines any notifications necessary for the management
-- of frame preemption on a Port. This subtree is currently unused, 
-- but is retained as a place-holder for future standardisation.
-- =============================================================


-- =============================================================
-- The ieee8021PreemptionParameters subtree
-- This subtree defines the objects necessary for the management
-- of the frame preemption parameters for each priority value 
-- on a Port.
-- =============================================================

-- =============================================================
-- the ieee8021PreemptionParameterTable
-- =============================================================

ieee8021PreemptionParameterTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Ieee8021PreemptionParameterEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table containing a set of frame preemption 
        parameters, one for each priority value.
        All writeable objects in this table must be
        persistent over power up restart/reboot."
    REFERENCE   "6.7.2, 12.30.1"
    ::= { ieee8021PreemptionParameters 1 }

ieee8021PreemptionParameterEntry OBJECT-TYPE
    SYNTAX      Ieee8021PreemptionParameterEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of objects containing preemption parameters 
        for each  priority value."
    INDEX  { ieee8021BridgeBaseComponentId,
             ieee8021BridgeBasePort,
             ieee8021PreemptionPriority  }
    ::= { ieee8021PreemptionParameterTable 1 }

Ieee8021PreemptionParameterEntry ::=
    SEQUENCE {
        ieee8021PreemptionPriority
            IEEE8021PriorityValue,
        ieee8021FramePreemptionAdminStatus
            INTEGER
        }

ieee8021PreemptionPriority OBJECT-TYPE
    SYNTAX      IEEE8021PriorityValue
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The priority number associated with the row of
        the table.

        A row in this table is created for each priority value."
    REFERENCE   "6.7.2, 12.30.1"
    ::= { ieee8021PreemptionParameterEntry 1 }


ieee8021FramePreemptionAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {express (1), preemptible (2)}
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of the framePreemptionAdminStatus parameter
        for the traffic class.

        The default value of the framePreemptionAdminStatus parameter 
        is express (1).

        The value of this object MUST be retained across
        reinitializations of the management system."
    REFERENCE   "6.7.2, 12.30.1"
    ::= { ieee8021PreemptionParameterEntry 2}


-- =============================================================
-- the ieee8021PreemptionConfigTable
-- =============================================================

ieee8021PreemptionConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Ieee8021PreemptionConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table containing a set of frame preemption 
        parameters, one for each Port.
        All writeable objects in this table must be
        persistent over power up restart/reboot."
    REFERENCE   "6.7.2, 12.30.1"
    ::= { ieee8021PreemptionParameters 2 }

ieee8021PreemptionConfigEntry OBJECT-TYPE
    SYNTAX      Ieee8021PreemptionConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of objects containing preemption parameters 
        for each Port."
    INDEX  { ieee8021BridgeBaseComponentId,
             ieee8021BridgeBasePort }
    ::= { ieee8021PreemptionConfigTable 1 }

Ieee8021PreemptionConfigEntry ::=
    SEQUENCE {
        ieee8021FramePreemptionHoldAdvance
            Unsigned32,
        ieee8021FramePreemptionReleaseAdvance
            Unsigned32,
        ieee8021FramePreemptionActive
            INTEGER,
        ieee8021FramePreemptionHoldRequest
            INTEGER
        }

ieee8021FramePreemptionHoldAdvance OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the holdAdvance parameter
        for the Port in nanoseconds.

        There is no default value; the holdAdvance is 
        a property of the underlying MAC."
    REFERENCE   "6.7.2, 12.30.1.2"
    ::= { ieee8021PreemptionConfigEntry 1 }


ieee8021FramePreemptionReleaseAdvance OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the releaseAdvance parameter
        for the Port in nanoseconds.

        There is no default value; the releaseAdvance is 
        a property of the underlying MAC."
    REFERENCE   "6.7.2, 12.30.1.3"
    ::= { ieee8021PreemptionConfigEntry 2}

ieee8021FramePreemptionActive OBJECT-TYPE
    SYNTAX      INTEGER {idle (1), active (2)}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value is active (2) when preemption is operationally
        active for the Port, and idle (1) otherwise."
    REFERENCE   "6.7.2, 12.30.1.4"
    ::= { ieee8021PreemptionConfigEntry 3}

ieee8021FramePreemptionHoldRequest OBJECT-TYPE
    SYNTAX      INTEGER {hold (1), release (2)}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value is hold (1) when the sequence of gate operations
        for the Port has executed a Set-And-Hold-MAC operation,
        and release (2) when the sequence of gate operations has 
        executed a Set-And-Release-MAC operation. The 
        value of this object is release (2) on system
        initialization."
    REFERENCE   "6.7.2, Table 8-7, 12.30.1.5"
    ::= { ieee8021PreemptionConfigEntry 4}


-- =============================================================
-- IEEE8021 Preemption MIB - Conformance Information
-- =============================================================

ieee8021PreemptionCompliances
    OBJECT IDENTIFIER ::= { ieee8021PreemptionConformance 1 }
ieee8021PreemptionGroups
    OBJECT IDENTIFIER ::= { ieee8021PreemptionConformance 2 }

-- =============================================================
-- units of conformance
-- =============================================================

-- =============================================================
-- the ieee8021PreemptionGroup group
-- =============================================================

ieee8021PreemptionGroup OBJECT-GROUP
    OBJECTS {
        ieee8021FramePreemptionAdminStatus,
        ieee8021FramePreemptionHoldAdvance,
        ieee8021FramePreemptionReleaseAdvance,
        ieee8021FramePreemptionActive,
        ieee8021FramePreemptionHoldRequest
    }
    STATUS      current
    DESCRIPTION
        "Objects that allow management of frame preemption."
    ::= { ieee8021PreemptionGroups 1 }


-- =============================================================
-- compliance statements
-- =============================================================

ieee8021PreemptionCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for devices supporting 
        frame preemption. 

        Support of the objects defined in this MIB module
        also requires support of the IEEE8021-BRIDGE-MIB; the
        provisions of 17.3.2 apply to implementations claiming
        support of this MIB. "

    MODULE -- this module
        MANDATORY-GROUPS {
            ieee8021PreemptionGroup
        }

    ::= { ieee8021PreemptionCompliances 1 }

END