/* Copyright (C) 2001-2025 IP Infusion, Inc. All Rights Reserved. */

IPI-VRF-MIB DEFINITIONS ::= BEGIN

IMPORTS
  MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, Counter64,
  Integer32, TimeTicks, mib-2,
  NOTIFICATION-TYPE                        FROM SNMPv2-SMI
  TEXTUAL-CONVENTION, DisplayString,
  PhysAddress, TruthValue, RowStatus   FROM SNMPv2-TC
  InterfaceIndex                           FROM IF-MIB
  ipi                                      FROM IPI-MODULE-MIB;

  ipiVrfMib MODULE-IDENTITY
  LAST-UPDATED "202506051535Z"
  ORGANIZATION "IP Infusion"
  CONTACT-INFO "support@ipinfusion.com"
  DESCRIPTION
    "IPI VRF MIB."

  ::= { ipi 2 }
 
ipiVrf   OBJECT IDENTIFIER ::={ ipiVrfMib 1 }
ipiVrfObjects   OBJECT IDENTIFIER ::={ ipiVrf 1 }
ipiVrfTableObjects OBJECT IDENTIFIER ::={ipiVrfObjects 1}
ipiVrfInterfaceTableObjects OBJECT IDENTIFIER ::={ipiVrfObjects 2}
ipiVrfNotificationObjects  OBJECT IDENTIFIER ::= { ipiVrfMib 30 }
ipiVrfIfNotificationObjects OBJECT IDENTIFIER ::= { ipiVrfNotificationObjects 0 }

ipiVrfTable  OBJECT-TYPE
  SYNTAX      SEQUENCE OF IpiVrfEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "The vrf information."
   ::= { ipiVrfTableObjects 1 }

ipiVrfEntry  OBJECT-TYPE
  SYNTAX      IpiVrfEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "A Table object containing vrf information."
  INDEX           { ipiVrfIndex }
  ::= { ipiVrfTable 1 }
 
IpiVrfEntry::=
  SEQUENCE {
          ipiVrfIndex  Unsigned32,
          ipiVrfName   DisplayString,
          ipiVrfOperStatus INTEGER,
          ipiVrfRouteDistProt OCTET STRING,
          ipiVrfStroageType INTEGER,
          ipiVrfRowStatus INTEGER
		  }
ipiVrfIndex  OBJECT-TYPE
  SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "VRF Index"
  ::= { ipiVrfEntry 1 }
 
ipiVrfName    OBJECT-TYPE
  SYNTAX      DisplayString
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the VRF name."
  ::= { ipiVrfEntry 2 }
 
ipiVrfOperStatus OBJECT-TYPE
  SYNTAX     INTEGER {
          up(1),
          down(2)
           }
   MAX-ACCESS read-only
   STATUS     current
   DESCRIPTION
   "VRF operational Status."
   ::= { ipiVrfEntry 3 }

ipiVrfRouteDistProt    OBJECT-TYPE
  SYNTAX      OCTET STRING
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object specifies the route distribution protocol enabled in this VRF.
  More than one protocol can be enabled at the same time.
  Each bit in the octet string represents a different protocol:

  Bit 0  - VRF_NONE
  Bit 1  - VRF_OTHER
  Bit 2  - VRF_STATIC
  Bit 3  - VRF_OSPF
  Bit 4  - VRF_BGP
  Bit 5  - VRF_PIM
  Bit 6  - VRF_IGMP
  Bit 7  - VRF_ISIS
  Bit 8  - VRF_RIP

  A set bit indicates the protocol is enabled for route distribution in this VRF."
  ::= { ipiVrfEntry 4 }
  
ipiVrfStroageType OBJECT-TYPE
  SYNTAX     INTEGER {other(1),
                      volatile(2),
                      non-volatile(3),
                      permanent(4),
                      read-only(5)
                     }
MAX-ACCESS read-only
   STATUS     current
   DESCRIPTION
   " Storage Type."
   ::= { ipiVrfEntry 5 }
   
ipiVrfRowStatus OBJECT-TYPE
  SYNTAX     INTEGER {active(1),
                      notInService(2),
                      notReady(3),
                      createAndGo(4),
                      createAndWait(5),
                      destroy(6) 
                     }
   MAX-ACCESS read-write
   STATUS     current
   DESCRIPTION
   " This variable is used to create, modify, and/or
   delete a row in this table."
   ::= { ipiVrfEntry 6 }
  
ipiVrfInterfaceTable  OBJECT-TYPE
  SYNTAX      SEQUENCE OF IpiVrfInterfaceEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "The vrf interface information."
   ::= { ipiVrfInterfaceTableObjects 1 }

ipiVrfInterfaceEntry  OBJECT-TYPE
  SYNTAX      IpiVrfInterfaceEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "A Table object containing vrf information."
  INDEX           { ipiVrfInterfaceIndex }
  ::= { ipiVrfInterfaceTable 1 }
 
IpiVrfInterfaceEntry::=
  SEQUENCE {
             ipiVrfInterfaceIndex  InterfaceIndex,
             ipiInterfaceVrfName   DisplayString,
             ipiVrfInterfaceStroageType INTEGER,
             ipiVrfInterfaceRowStatus INTEGER
          }

ipiVrfInterfaceIndex  OBJECT-TYPE
  SYNTAX      InterfaceIndex
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "Interface index bound to VRF"
  ::= { ipiVrfInterfaceEntry 1 }
 
ipiInterfaceVrfName    OBJECT-TYPE
  SYNTAX      DisplayString
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "VRF name to which the interface ipiVrfInterfaceIndex is bound to."
  ::= { ipiVrfInterfaceEntry 2 }
 
ipiVrfInterfaceStroageType OBJECT-TYPE
  SYNTAX     INTEGER {other(1),
                      volatile(2),
                      non-volatile(3),
                      permanent(4),
                      read-only(5)
                     }
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
  " Storage Type."
  ::= { ipiVrfInterfaceEntry 3 }
 
ipiVrfInterfaceRowStatus OBJECT-TYPE
  SYNTAX     INTEGER {active(1),
                      notInService(2),
                      notReady(3),
                      createAndGo(4),
                      createAndWait(5),
                      destroy(6) 
                     }
   MAX-ACCESS read-write
   STATUS     current
   DESCRIPTION
   " This variable is used to create, modify, and/or
   delete a row in this table."
   ::= { ipiVrfInterfaceEntry 4 }

ipiVrfIfUpNotification NOTIFICATION-TYPE
        OBJECTS { ipiVrfInterfaceIndex,
                  ipiInterfaceVrfName
                }
        STATUS  current
        DESCRIPTION
                "The vrfIfUpNotification event is generated
                 when the interface ifOperStatus object for
                 one of its communication links has transitioned
                 from down to up state."

        ::= { ipiVrfIfNotificationObjects 1 }

ipiVrfIfDownNotification NOTIFICATION-TYPE
        OBJECTS { ipiVrfInterfaceIndex,
                  ipiInterfaceVrfName
                }
        STATUS  current
        DESCRIPTION
                "The vrfIfUpNotification event is generated
                 when the interface ifOperStatus object for
                 one of its communication links has transitioned
                 from up to down state."
 
        ::= { ipiVrfIfNotificationObjects 2 }
 
END
