COROSYNC-MIB DEFINITIONS ::= BEGIN

--
-- MIB objects for Corosync
--

IMPORTS
    MODULE-IDENTITY,NOTIFICATION-TYPE,
    Integer32,enterprises,OBJECT-TYPE,
    Counter64                                   FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP                          FROM SNMPv2-CONF
;

corosync MODULE-IDENTITY
    LAST-UPDATED    "201801121241Z"
    ORGANIZATION    "www.corosync.org"
    CONTACT-INFO    "name:  Yuki Sato
                     email: users@clusterlabs.org"
    DESCRIPTION     "*RRP* related staff has changed to *Link* staff"
    REVISION        "201801121241Z"
    DESCRIPTION     "Add cluster quorum traps, fix smilint errors, and fix notification block ID"
    REVISION        "201101211300Z"
    DESCRIPTION     "MIB objects for Corosync"
    REVISION        "201003251209Z"
    DESCRIPTION     "First draft"
    REVISION        "200911061318Z"
    DESCRIPTION
        "Private Enterprise Number has been assigned."
        ::= { enterprises 35488 }

--
-- top level structure
--
corosyncNotices OBJECT IDENTIFIER ::= { corosync 0 }
corosyncObjects OBJECT IDENTIFIER ::= { corosync 1 }
corosyncConformance OBJECT IDENTIFIER ::= { corosync 200 }

--
--  Corosync MIB entries
--

--
-- Node Information
--
corosyncObjectsNodeName OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(1..64))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "Hostname of the cluster node."
::= { corosyncObjects 1 }

corosyncObjectsNodeID OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The unique integer of the node."
::= { corosyncObjects 2 }

corosyncObjectsNodeStatus OBJECT-TYPE
    SYNTAX	OCTET STRING
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The status of the node."
::= { corosyncObjects 3 }

corosyncObjectsNodeAddress OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The address of the node."
::= { corosyncObjects 4 }

corosyncObjectsLocalNodeID OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The unique integer of local node."
::= { corosyncObjects 5 }

--
-- Quorum Information
--
--

-- not currently used, but here for future use
corosyncObjectsRingSeq OBJECT-TYPE
    SYNTAX	Counter64
    MAX-ACCESS	accessible-for-notify
    STATUS	current
    DESCRIPTION
	"Ring ID Sequence number"
::= { corosyncObjects 20 }

corosyncObjectsQuorumStatus OBJECT-TYPE
    SYNTAX	OCTET STRING
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
	"Quorum Status"
::= { corosyncObjects 21 }

--
-- Link Information
---

corosyncObjectsIfaceNo OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION "The integer of interface."
::= { corosyncObjects 60 }

corosyncObjectsLinkStatus OBJECT-TYPE
    SYNTAX	OCTET STRING
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
	"Link Status"
::= { corosyncObjects 61 }

--
-- Application Information
--
corosyncObjectsAppName OBJECT-TYPE
    SYNTAX	OCTET STRING
    MAX-ACCESS	accessible-for-notify
    STATUS	current
    DESCRIPTION
	"Application name"
::= { corosyncObjects 40 }

corosyncObjectsAppStatus OBJECT-TYPE
    SYNTAX	OCTET STRING
    MAX-ACCESS	accessible-for-notify
    STATUS	current
    DESCRIPTION
	"Application status"
::= { corosyncObjects 41 }

--
-- Notification Information
--
corosyncNoticesNodeStatus NOTIFICATION-TYPE
    OBJECTS	{ corosyncObjectsNodeName,
		  corosyncObjectsNodeID,
		  corosyncObjectsNodeAddress,
		  corosyncObjectsNodeStatus }
    STATUS      current
    DESCRIPTION
      "Produced when a node 'corosyncObjectsNodeName' joins or leaves
       the cluster.

       The notification includes the node name, nodeid, the node's
       IP address and the status (either 'joined' or 'left')."
::= { corosyncNotices 1 }

corosyncNoticesQuorumStatus NOTIFICATION-TYPE
    OBJECTS	{ corosyncObjectsNodeName,
		  corosyncObjectsNodeID,
		  corosyncObjectsQuorumStatus }
    STATUS  current
    DESCRIPTION
      "Produced when the quorum state changes.

       The notification also includes the node name, nodeid
       and the new state (either 'quorate' or 'NOT quorate')."
::= { corosyncNotices 2 }

corosyncNoticesAppStatus NOTIFICATION-TYPE
    OBJECTS	{ corosyncObjectsNodeName,
		  corosyncObjectsNodeID,
		  corosyncObjectsAppName, 
		  corosyncObjectsAppStatus }
    STATUS  current
    DESCRIPTION
      "Produced when a client application 'corosyncObjectsAppName' connects or
       disconnects from Corosync.

       The notification also includes the node name, nodeid, the application
       name and the new state (either 'connected' or 'disconnected')."
::= { corosyncNotices 3 }

corosyncNoticesLinkStatus NOTIFICATION-TYPE
    OBJECTS	{ corosyncObjectsNodeName,
		  corosyncObjectsLocalNodeID,
		  corosyncObjectsNodeID,
		  corosyncObjectsIfaceNo,
		  corosyncObjectsLinkStatus }
    STATUS  current
    DESCRIPTION
      "Produced when the interface of Link is marked failed or operational.

       The notification also includes the node name, nodeid, iface number
       and the new state (either 'failed' or 'operational')."
::= { corosyncNotices 4 }

--
-- Compliance Information
--
corosyncCompliances OBJECT IDENTIFIER ::= { corosyncConformance 1 }

corosyncConformanceGroups OBJECT IDENTIFIER ::= { corosyncConformance 2 }

corosyncCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION "Corosync compliance information"
    MODULE    -- this module
    MANDATORY-GROUPS { corosyncObjectGroup, corosyncNotificationGroup }
::= { corosyncCompliances 1 }

corosyncObjectGroup OBJECT-GROUP
    OBJECTS { corosyncObjectsNodeName,
              corosyncObjectsNodeID,
              corosyncObjectsNodeStatus,
              corosyncObjectsNodeAddress,
              corosyncObjectsRingSeq,
              corosyncObjectsQuorumStatus,
	      corosyncObjectsAppName,
	      corosyncObjectsAppStatus,
	      corosyncObjectsIfaceNo,
	      corosyncObjectsLinkStatus
            }
    STATUS      current
    DESCRIPTION "Corosync Object Conformance Group"
::= { corosyncConformanceGroups 1 }

corosyncNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { corosyncNoticesNodeStatus,
                    corosyncNoticesQuorumStatus,
		    corosyncNoticesAppStatus,
		    corosyncNoticesLinkStatus
                  }
    STATUS      current
    DESCRIPTION "Corosync Notification Conformance Group"
::= { corosyncConformanceGroups 2 }

END
