IPI-PORT-XC-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, enterprises, Counter64, Unsigned32
     FROM SNMPv2-SMI
    DisplayString
     FROM SNMPv2-TC
    ifIndex
     FROM IF-MIB
    ipi FROM IPI-MODULE-MIB;

    ipiXCMib MODULE-IDENTITY
    LAST-UPDATED "202101071200Z"  -- Jan 07, 2021 11:30:00 GMT
    ORGANIZATION "IP Infusion"
    CONTACT-INFO "support@ipinfusion.com"
    DESCRIPTION
       "IPI XC MIB."
    REVISION "202101071200Z"
    DESCRIPTION
      "Complying to level 3 of SMILINT. And add PortXC, Vlan XC cntrs"
    ::= { ipi 109 }

ipiXcObjects OBJECT IDENTIFIER ::={ ipiXCMib 1 }

ipiPortXCTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF IpiPortXCEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing Cross-connect information
             given by the Cross-connect name."
    ::= { ipiXcObjects 1 }

ipiPortXCEntry  OBJECT-TYPE
    SYNTAX      IpiPortXCEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing PORT-XC information
             given by the XC name."
    INDEX   { portXCIndex }
    ::= { ipiPortXCTable 1 }

IpiPortXCEntry ::=
    SEQUENCE {
                 portXCIndex             Unsigned32,
                 portXCName              DisplayString,
                 portXCEp1               DisplayString,
                 portXCEp2               DisplayString,
                 portXCBkpEp1            DisplayString,
                 portXCBkpEp2            DisplayString,
                 portXCAdminStatus       INTEGER,
                 portXCOperStatus        INTEGER,
                 portEP1RXPKTS           Counter64,
                 portEP1RXBYTES          Counter64,
                 portEP1TXPKTS           Counter64,
                 portEP1TXBYTES          Counter64,
                 portEP2RXPKTS           Counter64,
                 portEP2RXBYTES          Counter64,
                 portEP2TXPKTS           Counter64,
                 portEP2TXBYTES          Counter64,
                 portBKPEP1RXPKTS        Counter64,
                 portBKPEP1RXBYTES       Counter64,
                 portBKPEP1TXPKTS        Counter64,
                 portBKPEP1TXBYTES       Counter64,
                 portBKPEP2RXPKTS        Counter64,
                 portBKPEP2RXBYTES       Counter64,
                 portBKPEP2TXPKTS        Counter64,
                 portBKPEP2TXBYTES       Counter64,
                 portXCRevertive         INTEGER,
                 portXCLfpt              INTEGER
             }

portXCIndex  OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A unique number corresponding to an PORT-XC."
    ::= { ipiPortXCEntry 1 }

portXCName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Name given to the PORT XC."
    ::= { ipiPortXCEntry 2 }

portXCEp1 OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "XC Endpoint1 name."
    ::= { ipiPortXCEntry 3 }

portXCEp2 OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "XC Endpoint2 name."
    ::= { ipiPortXCEntry 4 }

portXCBkpEp1 OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "XC Backup Endpoint1 name."
    ::= { ipiPortXCEntry 5 }

portXCBkpEp2 OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "XC Backup Endpoint2 name."
    ::= { ipiPortXCEntry 6 }
portXCAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    up(0),       -- ready to pass packets
                   down(1)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object specifies admin status of XC."
    ::= { ipiPortXCEntry 7 }

portXCOperStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    up (1),       -- cross-connect is up.
                   down(0)        -- cross-connect is down.
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object specifies operational status of XC."
    ::= { ipiPortXCEntry 8 }

portEP1RXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets received on EP1. Applicable for port
           cross-connect entry."
    ::= { ipiPortXCEntry 9 }

portEP1RXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes received on EP1. Applicable for port
           cross-connect entry"
    ::= { ipiPortXCEntry 10 }

portEP1TXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets transmitted from EP1. Applicable for
           port cross-connect entry."
    ::= { ipiPortXCEntry 11 }

portEP1TXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes transmitted from EP1. Applicable for port
           cross-connect entry."
    ::= { ipiPortXCEntry 12 }

portEP2RXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets received on EP2. Applicable for port
           cross-connect entry."
    ::= { ipiPortXCEntry 13 }

portEP2RXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes received on EP2. Applicable for port
           cross-connect entry."
    ::= { ipiPortXCEntry 14 }

portEP2TXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets transmitted from EP2. Applicable for
           port cross-connect entry."
    ::= { ipiPortXCEntry 15 }

portEP2TXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes transmitted from EP2. Applicable for
           port cross-connect entry."
    ::= { ipiPortXCEntry 16 }

portBKPEP1RXPKTS          OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of packets received on Backup EP1. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 17 }

portBKPEP1RXBYTES         OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of bytes received on Backup EP1. Applicable
           for port cross-connect entry"
    ::= { ipiPortXCEntry 18 }

portBKPEP1TXPKTS          OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of packets transmitted from Backup EP1. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 19 }

portBKPEP1TXBYTES         OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of bytes transmitted from Backup EP1. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 20 }

portBKPEP2RXPKTS          OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of packets received on Backup EP2. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 21 }

portBKPEP2RXBYTES         OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of bytes received on Backup EP2. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 22 }

portBKPEP2TXPKTS          OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of packets transmitted from Backup EP2. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 23 }

portBKPEP2TXBYTES         OBJECT-TYPE
     SYNTAX               Counter64
     MAX-ACCESS           read-only
     STATUS               current
     DESCRIPTION
           "The total number of bytes transmitted from Backup EP2. Applicable
           for port cross-connect entry."
    ::= { ipiPortXCEntry 24 }

portXCRevertive OBJECT-TYPE
    SYNTAX      INTEGER {
                    disable (0),
                    enable  (1)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object specifies switchmode of XC."
    ::= { ipiPortXCEntry 25 }

portXCLfpt OBJECT-TYPE
    SYNTAX      INTEGER {
                    enable (1),       -- Link-fault pass through enable.
                    disable (0)        -- Link-fault pass through disable.
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object specifies lfpt status of XC."
    ::= { ipiPortXCEntry 26 }

ipiVlanXcTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF IPIVlanXcEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
    "A Table object containing match ranges & statistics per
    vlan xc entry."
    ::= { ipiXcObjects 2 }

ipiVlanXcEntry       OBJECT-TYPE
    SYNTAX           IPIVlanXcEntry
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
    "A Table object containing match ranges & statistics per
    vlan xc entry."
    INDEX   { portXCIndex, vlanXCindex }
    ::= { ipiVlanXcTable 1 }

IPIVlanXcEntry ::=
SEQUENCE {
          vlanXCindex                  Unsigned32,
          vlanXCovid                   INTEGER,
          vlanXCMaxOvid                INTEGER,
          vlanXCivid                   INTEGER,
          vlanXCMaxIvid                INTEGER,
          vlanEP1RXPKTS                Counter64,
          vlanEP1RXBYTES               Counter64,
          vlanEP1TXPKTS                Counter64,
          vlanEP1TXBYTES               Counter64,
          vlanEP2RXPKTS                Counter64,
          vlanEP2RXBYTES               Counter64,
          vlanEP2TXPKTS                Counter64,
          vlanEP2TXBYTES               Counter64
         }

vlanXCindex         OBJECT-TYPE
  SYNTAX            Unsigned32 (1..4294967295)
  MAX-ACCESS        not-accessible
  STATUS            current
  DESCRIPTION
    "A unique number corresponding to a Vlan Cross-connect entry."
  ::= { ipiVlanXcEntry 1 }

vlanXCovid          OBJECT-TYPE
  SYNTAX            INTEGER
  MAX-ACCESS        read-only
  STATUS            current
  DESCRIPTION
    "outer vlan id or min outer vlan of vlan range for vlan cross-connect entry."
  ::= { ipiVlanXcEntry 2 }

vlanXCMaxOvid       OBJECT-TYPE
  SYNTAX            INTEGER
  MAX-ACCESS        read-only
  STATUS            current
  DESCRIPTION
    "max outer vlan for Vlan Cross-connect entry. Applicable for vlan ranges."
  ::= { ipiVlanXcEntry 3 }

vlanXCivid          OBJECT-TYPE
  SYNTAX            INTEGER
  MAX-ACCESS        read-only
  STATUS            current
  DESCRIPTION
    "inner vlan id or min inner vlan of vlan range for vlan cross-connect entry."
  ::= { ipiVlanXcEntry 4 }

vlanXCMaxIvid       OBJECT-TYPE
  SYNTAX            INTEGER
  MAX-ACCESS        read-only
  STATUS            current
  DESCRIPTION
    "max inner vlan for Vlan Cross-connect entry. Applicable for vlan ranges."
  ::= { ipiVlanXcEntry 5 }

vlanEP1RXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets received on EP1. Applicable for vlan
           cross-connect entry."
    ::= { ipiVlanXcEntry 6 }

vlanEP1RXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes received on EP1. Applicable for vlan
           cross-connect entry."
    ::= { ipiVlanXcEntry 7 }

vlanEP1TXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets transmitted from EP1. Applicable for
           vlan cross-connect entry."
    ::= { ipiVlanXcEntry 8 }

vlanEP1TXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes transmitted from EP1. Applicable for vlan
           cross-connect entry"
    ::= { ipiVlanXcEntry 9 }

vlanEP2RXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets received on EP2. Aplicable for vlan
           cross-connect entry."
    ::= { ipiVlanXcEntry 10 }

vlanEP2RXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes received on EP2. Applicable for vlan
           cross-connect entry."
    ::= { ipiVlanXcEntry 11 }

vlanEP2TXPKTS          OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of packets transmitted from EP2. Applicable for
           vlan cross-connect entry."
    ::= { ipiVlanXcEntry 12 }

vlanEP2TXBYTES         OBJECT-TYPE
     SYNTAX            Counter64
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
           "The total number of bytes transmitted from EP2. Applicable for vlan
           cross-connect entry."
    ::= { ipiVlanXcEntry 13 }

    xcAlarmObjects       OBJECT IDENTIFIER ::={ ipiXcObjects 3 }
    --
    -- ## Notifications
    --
    xcAlarmVariable               OBJECT IDENTIFIER ::= {xcAlarmObjects 0 }
    xcAlarmMibNotifications     OBJECT IDENTIFIER ::= {xcAlarmObjects 1 }

    xcAlarmVarInteger OBJECT-TYPE
    SYNTAX       INTEGER
    MAX-ACCESS   accessible-for-notify
    STATUS       current
    DESCRIPTION
    "An generic INTEGER value in the TRAP object"
    ::= { xcAlarmVariable 1 }

    xcAlarmVarString OBJECT-TYPE
    SYNTAX       OCTET STRING
    MAX-ACCESS   accessible-for-notify
    STATUS       current
    DESCRIPTION
    "An generic string value in the TRAP object"
    ::= {xcAlarmVariable  2 }

    xcOperStatusUpDown     NOTIFICATION-TYPE
    OBJECTS      {
                  portXCName,
                  portXCOperStatus
                 }
   STATUS       current
   DESCRIPTION
        "Trap to send operational state change of cross-connect entity"
   ::= { xcAlarmMibNotifications 1 }

   xcSwitchEp     NOTIFICATION-TYPE
   OBJECTS      {
                 portXCName,
                 portXCEp1,
                 portXCEp2
                }
   STATUS       current
   DESCRIPTION
        "Trap to send endpoint change of cross-connect entity"
   ::= { xcAlarmMibNotifications 2 }

END
