IPI-WATCHDOG-MIB DEFINITIONS ::= BEGIN

IMPORTS
      OBJECT-TYPE, MODULE-IDENTITY,
      Gauge32, Counter32, Integer32, Unsigned32,
      IpAddress, Counter64,
      TimeTicks, NOTIFICATION-TYPE
          FROM SNMPv2-SMI
      DateAndTime, DisplayString,
      PhysAddress, RowStatus, TEXTUAL-CONVENTION
          FROM SNMPv2-TC
      MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
          FROM SNMPv2-CONF
      snmpTraps
          FROM SNMPv2-MIB
      enterprises, OBJECT-IDENTITY
          FROM SNMPv2-SMI
      Ipv6Address
          FROM IPV6-TC
      ipi  FROM IPI-MODULE-MIB
      cmmChassisObject  FROM IPI-CMM-CHASSIS-MIB;

cmmSoftwareObjects MODULE-IDENTITY
   LAST-UPDATED "202207190000Z"

ORGANIZATION "IP Infusion"
CONTACT-INFO "support@ipinfusion.com"
   DESCRIPTION 
      "This MIB module is for managing This module manages protocol processes status and watchdogs"

   REVISION      "202207190000Z"
   DESCRIPTION 
      "Update if-feature for Notification"

   REVISION      "202206010000Z"
   DESCRIPTION 
      "Updated the yang file with feature"

   REVISION      "202111300000Z"
   DESCRIPTION 
      "Attribute watchdog-status changed to watchdog-status-disabled"

   REVISION      "202111080000Z"
   DESCRIPTION 
      "Fix the watchdog process state to display runtime information about all process"

   REVISION      "202110110000Z"
   DESCRIPTION 
      "Attribute watchdog-enable changed to watchdog-disabled"

   REVISION      "202108090000Z"
   DESCRIPTION 
      "Some attributes of watchdog-modules-process-state changed name and type"

   REVISION      "202107300000Z"
   DESCRIPTION 
      "PSERV restructured"
   ::= { cmmChassisObject  4 } 

watchdogWatchdogStatus OBJECT-TYPE
	SYNTAX INTEGER {disabled(0), enabled(1)} 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Status of software watchdog monitoring. If enabled, software watchdog is active and is monitoring software anomalies for modules."
	::= { cmmSoftwareObjects 1 }

watchdogAllProcessesStatus OBJECT-TYPE
	SYNTAX INTEGER {notrunning(0), allrunning(1)} 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Global process status of all modules. If all process are running, this value will be true. Otherwise it wil be false."
	::= { cmmSoftwareObjects 2 }


softwaremoduleTable OBJECT-TYPE 
	SYNTAX SEQUENCE OF SoftwaremoduleEntry
	MAX-ACCESS not-accessible
	STATUS current
	DESCRIPTION 
		"This table provides information for List of modules"
	::= { cmmSoftwareObjects 3 }

softwaremoduleEntry OBJECT-TYPE
	SYNTAX SoftwaremoduleEntry
	MAX-ACCESS not-accessible
	STATUS current
	DESCRIPTION 
		"An entry containing information for List of modules"
	INDEX { softwareModuleName }
	::= { softwaremoduleTable 1 }

SoftwaremoduleEntry::= SEQUENCE { 
	softwareModuleName INTEGER,
	softwareModuleModuleWatchdogStatusDisabled Unsigned32,
	processProcessName INTEGER,
	processProcessStatus INTEGER,
	processStartTime DateAndTime,
	processDownReason OCTET STRING	}

softwareModuleName OBJECT-TYPE
	SYNTAX INTEGER {nsm(1), ripd(2), ripngd(3), ospfd(4), ospf6d(5), isisd(6), hostpd(7), ldpd(8), rsvpd(9), mribd(10), pimd(11), authd(13), mstpd(17), imi(18), onmd(24), hsl(26), oamd(28), vlogd(30), ptpd(34), synced(37), vrrpd(39), ndd(40), ribd(42), bgpd(44), l2mribd(46), lagd(49), sflow(50), udld(51), cmld(52), cmmd(69), pcepd(72)} 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Enable software watchdog functionality for a particular software module."
	::= { softwaremoduleEntry 1 }

softwareModuleModuleWatchdogStatusDisabled OBJECT-TYPE
	SYNTAX Unsigned32 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Enable software watchdog functionality for a particular software module."
	::= { softwaremoduleEntry 2 }

processProcessName OBJECT-TYPE
	SYNTAX INTEGER {nsm(1), ripd(2), ripngd(3), ospfd(4), ospf6d(5), isisd(6), hostpd(7), ldpd(8), rsvpd(9), mribd(10), pimd(11), authd(13), mstpd(17), imi(18), onmd(24), hsl(26), oamd(28), vlogd(30), ptpd(34), synced(37), vrrpd(39), ndd(40), ribd(42), bgpd(44), l2mribd(46), lagd(49), sflow(50), udld(51), cmld(52), cmmd(69), pcepd(72)} 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Protocol module identification."
	::= { softwaremoduleEntry 3 }

processProcessStatus OBJECT-TYPE
	SYNTAX INTEGER {notrunning(0), running(1)} 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Process state."
	::= { softwaremoduleEntry 4 }

processStartTime OBJECT-TYPE
	SYNTAX DateAndTime 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Starting time of a protocol module."
	::= { softwaremoduleEntry 5 }

processDownReason OBJECT-TYPE
	SYNTAX OCTET STRING 
	MAX-ACCESS read-only
	STATUS current 
	DESCRIPTION 
		"Reason for process to shutdown. This value will be the signal description."
	::= { softwaremoduleEntry 6 }


--
-- Notifications
--

cmmSoftwareObjectsNotificationsPrefix OBJECT IDENTIFIER ::=
        { cmmSoftwareObjects 0 }

protocolmoduledown NOTIFICATION-TYPE
   OBJECTS { softwareModuleName, processProcessName, processDownReason }
   STATUS  current
   DESCRIPTION
           "protocol-module-down event is generated when a protocol module crashes."
   ::= { cmmSoftwareObjectsNotificationsPrefix 1 }

protocolmodulerestarted NOTIFICATION-TYPE
   OBJECTS { softwareModuleName, processProcessName, processStartTime }
   STATUS  current
   DESCRIPTION
           "protocol-module-restarted event is generated when a protocol module recovers from down state."
   ::= { cmmSoftwareObjectsNotificationsPrefix 2 }
END
