-- *****************************************************************
-- MIRROR-MIB:  Cisco private MIB
-- ****************************************************************

CIE1000-MIRROR-MIB DEFINITIONS ::= BEGIN

IMPORTS
    NOTIFICATION-GROUP, MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
    NOTIFICATION-TYPE, MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI
    TEXTUAL-CONVENTION FROM SNMPv2-TC
    cie1000SwitchMgmt FROM CISCO-IE1000-MIB
    CIE1000InterfaceIndex FROM CIE1000-TC
    CIE1000PortList FROM CIE1000-TC
    CIE1000Unsigned16 FROM CIE1000-TC
    CIE1000VlanListQuarter FROM CIE1000-TC
    Integer32 FROM SNMPv2-SMI
    TruthValue FROM SNMPv2-TC
    ;

cie1000MirrorMib MODULE-IDENTITY
    LAST-UPDATED "201407010000Z"
    ORGANIZATION
        "Cisco Systems, Inc."
    CONTACT-INFO
        "Cisco Systems
	 Customer Service

	 Postal: 170 West Tasman Drive
	 San Jose, CA  95134
	 USA

	 Tel: +1 800 553-NETS

	 E-mail: cs-snmp@cisco.com"
    DESCRIPTION
        "This is a private version of Mirror"
    REVISION    "201407010000Z"
    DESCRIPTION
        "Initial version"
    ::= { cie1000SwitchMgmt 15 }


CIE1000mirrorSessionType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the session type in Mirror function."
    SYNTAX      INTEGER { mirror(0), rMirrorSource(1),
                          rMirrorDestination(2) }

cie1000MirrorMibObjects OBJECT IDENTIFIER
    ::= { cie1000MirrorMib 1 }

cie1000MirrorCapabilities OBJECT IDENTIFIER
    ::= { cie1000MirrorMibObjects 1 }

cie1000MirrorCapabilitiesSessionCountMax OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of sessions."
    ::= { cie1000MirrorCapabilities 1 }

cie1000MirrorCapabilitiesSessionSourceCountMax OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of Mirror and RMirror source sessions."
    ::= { cie1000MirrorCapabilities 2 }

cie1000MirrorCapabilitiesRMirrorSuport OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicate if RMirror feature is supported or not. true means supported.
         false means not supported."
    ::= { cie1000MirrorCapabilities 3 }

cie1000MirrorCapabilitiesInternalReflectorPortSupport OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicate if Internal reflector port is supported or not. true means
         supported. false means not supported."
    ::= { cie1000MirrorCapabilities 4 }

cie1000MirrorCapabilitiesCpuMirrorSupport OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicate if mirroring CPU traffic is supported or not. true means
         supported. false means not supported."
    ::= { cie1000MirrorCapabilities 5 }

cie1000MirrorConfig OBJECT IDENTIFIER
    ::= { cie1000MirrorMibObjects 2 }

cie1000MirrorConfigSessionTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CIE1000MirrorConfigSessionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a table of configuration per session"
    ::= { cie1000MirrorConfig 1 }

cie1000MirrorConfigSessionEntry OBJECT-TYPE
    SYNTAX      CIE1000MirrorConfigSessionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each session has a set of parameters"
    INDEX       { cie1000MirrorConfigSessionSessionId }
    ::= { cie1000MirrorConfigSessionTable 1 }

CIE1000MirrorConfigSessionEntry ::= SEQUENCE {
    cie1000MirrorConfigSessionSessionId            Integer32,
    cie1000MirrorConfigSessionMode                 TruthValue,
    cie1000MirrorConfigSessionType                 CIE1000mirrorSessionType,
    cie1000MirrorConfigSessionRMirrorVlan          CIE1000Unsigned16,
    cie1000MirrorConfigSessionReflectorPort        CIE1000InterfaceIndex,
    cie1000MirrorConfigSessionStripInnerTag        TruthValue,
    cie1000MirrorConfigSessionSourceVlans0KTo1K    CIE1000VlanListQuarter,
    cie1000MirrorConfigSessionSourceVlans1KTo2K    CIE1000VlanListQuarter,
    cie1000MirrorConfigSessionSourceVlans2KTo3K    CIE1000VlanListQuarter,
    cie1000MirrorConfigSessionSourceVlans3KTo4K    CIE1000VlanListQuarter,
    cie1000MirrorConfigSessionSourcePortListRx     CIE1000PortList,
    cie1000MirrorConfigSessionSourcePortListTx     CIE1000PortList,
    cie1000MirrorConfigSessionCpuRx                TruthValue,
    cie1000MirrorConfigSessionCpuTx                TruthValue,
    cie1000MirrorConfigSessionDestinationPortList  CIE1000PortList
}

cie1000MirrorConfigSessionSessionId OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "Session ID. Valid range is (1..maximum). The maximum is
         platform-specific and can be retrieved from the Mirror capabilities."
    ::= { cie1000MirrorConfigSessionEntry 1 }

cie1000MirrorConfigSessionMode OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls whether this session is enabled or disabled. true is to enable
         the function. false is to disable it.
         
         Multiple criteria must be fulfilled in order to be able to enable a
         session.The criteria depend on the 'SessionType'."
    ::= { cie1000MirrorConfigSessionEntry 2 }

cie1000MirrorConfigSessionType OBJECT-TYPE
    SYNTAX      CIE1000mirrorSessionType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Session type in Mirror. 'mirror' means to do the Mirror function on the
         device.
         
         'rMirrorSource' means the device acts as source node for monitor flow.
         
         'rMirrorDestination' means the device acts as end node for monitor
         flow.
         
         "
    ::= { cie1000MirrorConfigSessionEntry 3 }

cie1000MirrorConfigSessionRMirrorVlan OBJECT-TYPE
    SYNTAX      CIE1000Unsigned16
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The VLAN ID points out where the monitor packet will copy to. The
         remote Mirror VLAN ID. Only used for RMirror types.
         
         RMirror source session:
         
         The mirrored traffic is copied onto this VLAN ID.
         
         Traffic will flood to all ports that are members of the remote Mirror
         VLAN ID.
         
         RMirror destination session:
         
         The #destination_port_list contains the port(s) that the Mirror VLAN
         will be copied to
         
         in addition to ports that are already configured (through the VLAN
         module) to be members of this VLAN."
    ::= { cie1000MirrorConfigSessionEntry 4 }

cie1000MirrorConfigSessionReflectorPort OBJECT-TYPE
    SYNTAX      CIE1000InterfaceIndex
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A reflector port is a port that the administrator may have to specify
         in case the device does not have internal (unused) ports available.
         Whether this is the case or not for this device can be derived from
         Mirror capabilities. When 'ReflectorPort' is used, it must be specified
         when an RMirror source session is enabled. In this case, the reflector
         port will be shut down for normal front port usage, because the switch
         needs a port where it can loop frames in order to get mirrored traffic
         copied onto a particular VLAN ID (the 'RMirrorVlan')."
    ::= { cie1000MirrorConfigSessionEntry 5 }

cie1000MirrorConfigSessionStripInnerTag OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This configuration is used to strip the original VLAN ID of the
         mirrored traffic or not. When it is set to TRUE, the the original VLAN
         ID of the mirrored traffic will be stripped, otherwise the original
         VLAN ID will be carried to destination interface. It may have to
         specify in case the device does not have internal (unused) ports
         available. Whether this is the case or not for this device can be
         derived from Mirror capabilities."
    ::= { cie1000MirrorConfigSessionEntry 6 }

cie1000MirrorConfigSessionSourceVlans0KTo1K OBJECT-TYPE
    SYNTAX      CIE1000VlanListQuarter
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "First quarter of bit-array indicating source VLAN list. All traffic in
         the VLANs specified in this list will get mirrored onto either the
         destination port (Mirror session) or the destination VLAN (RMirror
         source session). It's a bit-mask that indicates the VLANs. A '1'
         indicates the VLAN ID is selected, a '0' indicates that the VLAN ID
         isn't selected. "
    ::= { cie1000MirrorConfigSessionEntry 7 }

cie1000MirrorConfigSessionSourceVlans1KTo2K OBJECT-TYPE
    SYNTAX      CIE1000VlanListQuarter
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Second quarter of bit-array indicating source VLAN list. All traffic in
         the VLANs specified in this list will get mirrored onto either the
         destination port (Mirror session) or the destination VLAN (RMirror
         source session). It's a bit-mask that indicates the VLANs. A '1'
         indicates the VLAN ID is selected, a '0' indicates that the VLAN ID
         isn't selected. "
    ::= { cie1000MirrorConfigSessionEntry 8 }

cie1000MirrorConfigSessionSourceVlans2KTo3K OBJECT-TYPE
    SYNTAX      CIE1000VlanListQuarter
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Third quarter of bit-array indicating source VLAN list. All traffic in
         the VLANs specified in this list will get mirrored onto either the
         destination port (Mirror session) or the destination VLAN (RMirror
         source session). It's a bit-mask that indicates the VLANs. A '1'
         indicates the VLAN ID is selected, a '0' indicates that the VLAN ID
         isn't selected. "
    ::= { cie1000MirrorConfigSessionEntry 9 }

cie1000MirrorConfigSessionSourceVlans3KTo4K OBJECT-TYPE
    SYNTAX      CIE1000VlanListQuarter
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Fourth quarter of bit-array indicating source VLAN list. All traffic in
         the VLANs specified in this list will get mirrored onto either the
         destination port (Mirror session) or the destination VLAN (RMirror
         source session). It's a bit-mask that indicates the VLANs. A '1'
         indicates the VLAN ID is selected, a '0' indicates that the VLAN ID
         isn't selected. "
    ::= { cie1000MirrorConfigSessionEntry 10 }

cie1000MirrorConfigSessionSourcePortListRx OBJECT-TYPE
    SYNTAX      CIE1000PortList
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A bit-mask that controls whether a given port is enabled for mirroring
         of incoming traffic. A '1' indicates that the port is included, whereas
         a '0' indicates it isn't. Only source sessions (Mirror and RMirror
         Source) use this value. "
    ::= { cie1000MirrorConfigSessionEntry 11 }

cie1000MirrorConfigSessionSourcePortListTx OBJECT-TYPE
    SYNTAX      CIE1000PortList
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A bit-mask that controls whether a given port is enabled for mirroring
         of outgoing traffic. A '1' indicates that the port is included, whereas
         a '0' indicates it isn't. Only source sessions (Mirror and RMirror
         Source) use this value. "
    ::= { cie1000MirrorConfigSessionEntry 12 }

cie1000MirrorConfigSessionCpuRx OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls whether mirroring of traffic received by the internal CPU is
         enabled or disabled. It is supported or not can be derived from Mirror
         capabilities.Only source sessions (Mirror and RMirror Source) use this
         value. "
    ::= { cie1000MirrorConfigSessionEntry 13 }

cie1000MirrorConfigSessionCpuTx OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls whether mirroring of traffic transmitted by the internal CPU
         is enabled or disabled. It is supported or not can be derived from
         Mirror capabilities.Only source sessions (Mirror and RMirror Source)
         use this value. "
    ::= { cie1000MirrorConfigSessionEntry 14 }

cie1000MirrorConfigSessionDestinationPortList OBJECT-TYPE
    SYNTAX      CIE1000PortList
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Destination port list implemented as a bit-mask, where a '1' indicates
         that the port is included and a '0' indicates that it isn't. Only used
         in plain Mirror sessions and RMirror destination sessions.
         
         Mirror session:
         
         At most one bit may be set in this mask.
         
         RMirror destination session:
         
         Zero or more bits may be set in this mask."
    ::= { cie1000MirrorConfigSessionEntry 15 }

cie1000MirrorMibConformance OBJECT IDENTIFIER
    ::= { cie1000MirrorMib 2 }

cie1000MirrorMibCompliances OBJECT IDENTIFIER
    ::= { cie1000MirrorMibConformance 1 }

cie1000MirrorMibGroups OBJECT IDENTIFIER
    ::= { cie1000MirrorMibConformance 2 }

cie1000MirrorCapabilitiesInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000MirrorCapabilitiesSessionCountMax,
                  cie1000MirrorCapabilitiesSessionSourceCountMax,
                  cie1000MirrorCapabilitiesRMirrorSuport,
                  cie1000MirrorCapabilitiesInternalReflectorPortSupport,
                  cie1000MirrorCapabilitiesCpuMirrorSupport }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000MirrorMibGroups 1 }

cie1000MirrorConfigSessionTableInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000MirrorConfigSessionSessionId,
                  cie1000MirrorConfigSessionMode,
                  cie1000MirrorConfigSessionType,
                  cie1000MirrorConfigSessionRMirrorVlan,
                  cie1000MirrorConfigSessionReflectorPort,
                  cie1000MirrorConfigSessionStripInnerTag,
                  cie1000MirrorConfigSessionSourceVlans0KTo1K,
                  cie1000MirrorConfigSessionSourceVlans1KTo2K,
                  cie1000MirrorConfigSessionSourceVlans2KTo3K,
                  cie1000MirrorConfigSessionSourceVlans3KTo4K,
                  cie1000MirrorConfigSessionSourcePortListRx,
                  cie1000MirrorConfigSessionSourcePortListTx,
                  cie1000MirrorConfigSessionCpuRx,
                  cie1000MirrorConfigSessionCpuTx,
                  cie1000MirrorConfigSessionDestinationPortList }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000MirrorMibGroups 2 }

cie1000MirrorMibCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for the implementation."

    MODULE      -- this module

    MANDATORY-GROUPS { cie1000MirrorCapabilitiesInfoGroup,
                       cie1000MirrorConfigSessionTableInfoGroup }

    ::= { cie1000MirrorMibCompliances 1 }

END
