
MBG-MGMT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, Unsigned32 FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF
    mbgSnmpRoot FROM MBG-SNMP-ROOT-MIB
    DisplayString FROM SNMPv2-TC
    TEXTUAL-CONVENTION FROM SNMPv2-TC
    sysName FROM SNMPv2-MIB;

mbgManagement MODULE-IDENTITY
    LAST-UPDATED "201711090707Z"
    ORGANIZATION "Meinberg Radio Clocks GmbH & Co. KG"
    CONTACT-INFO
         "postal:   Meinberg Funkuhren
                    Lange Wand 9
                    31812 Bad Pyrmont
                    Germany

          email:    info@meinberg.de
            web:    http://www.meinberg.de
            tel:    +49 (0) 52 81 / 93 09 - 0
            fax:    +49 (0) 52 81 / 93 09 - 30"
    DESCRIPTION
        " Meinberg LANTIME2 SNMP Management Information Base "

    REVISION    "201711090707Z"
    DESCRIPTION
        " Rev 1.0.0  11 Nov 2017 07:07 UTC Philipp Rahns
          Initial revision"

    ::= { mbgSnmpRoot 7 }


-- Textual conventions


NtpTimestamp ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "255a"
    STATUS current
    DESCRIPTION
        "Representing a NTP timestamp in format 'yyyy-mm-dd, hh:mm:ss.us'"
    SYNTAX OCTET STRING (SIZE (27))

YesNo ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Simple boolean representation of an integer"
    SYNTAX INTEGER { no(0), yes(1) }

NtpReach ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "o"
    STATUS current
    DESCRIPTION
        "NTP's reach value as octal representation"
    SYNTAX Integer32


-- System wide objects


mbgMgmtObjects              OBJECT IDENTIFIER    ::= { mbgManagement 1 }

mbgMgmtNtp OBJECT IDENTIFIER ::= { mbgMgmtObjects 1 }

mbgMgmtNtpConfig OBJECT IDENTIFIER ::= { mbgMgmtNtp 1 }

mbgMgmtNtpState OBJECT IDENTIFIER ::= { mbgMgmtNtp 2 }

mbgMgmtNtpSysState OBJECT IDENTIFIER ::= { mbgMgmtNtpState 1 }

mbgMgmtNtpSysStateMain OBJECT-TYPE
    SYNTAX INTEGER {
        init(0),
        sync(1),
        notSync(2),
        stopped(3)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Current NTP major daemon state"
    ::= { mbgMgmtNtpSysState 1 }

mbgMgmtNtpSysStateRefId OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Current NTP daemon's reference ID"
    ::= { mbgMgmtNtpSysState 2 }

mbgMgmtNtpSysStateStratum OBJECT-TYPE
    SYNTAX Integer32 (1..16)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Current NTP daemon's stratum level"
    ::= { mbgMgmtNtpSysState 3 }

mbgMgmtNtpSysStateLeapIndicator OBJECT-TYPE
    SYNTAX INTEGER {
        none(0),
        addSecond(1),
        deleteSecond(2),
        alarm(3)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Current NTP daemon's leap indicator"
    ::= { mbgMgmtNtpSysState 4 }

mbgMgmtNtpSysStateAssocId OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Current NTP daemon's selected association ID for synchronization"
    ::= { mbgMgmtNtpSysState 5 }

mbgMgmtNtpSysStateTime OBJECT-TYPE
    SYNTAX NtpTimestamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "See textual convention NtpTimestamp"
    ::= { mbgMgmtNtpSysState 6 }

mbgMgmtNtpSysStateRootDelay OBJECT-TYPE
    SYNTAX Integer32
    UNITS "us"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Total roundtrip delay to the system peer"
    ::= { mbgMgmtNtpSysState 7 }

mbgMgmtNtpSysStateRootDispersion OBJECT-TYPE
    SYNTAX Integer32
    UNITS "us"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Total dispersion to the system peer"
    ::= { mbgMgmtNtpSysState 8 }

mbgMgmtNtpRefclkStates OBJECT IDENTIFIER ::= { mbgMgmtNtpState 2 }

mbgMgmtNtpRefclkStateTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MbgMgmtNtpRefclkStateTableEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
         "NTP refclock state table"
    ::= { mbgMgmtNtpRefclkStates 1 }

mbgMgmtNtpRefclkStateTableEntry OBJECT-TYPE
    SYNTAX MbgMgmtNtpRefclkStateTableEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
         "List of NTP refclock state table entries"
    INDEX { mbgMgmtNtpRefclkStateIndex }
    ::= { mbgMgmtNtpRefclkStateTable 1 }

MbgMgmtNtpRefclkStateTableEntry ::=
    SEQUENCE {
        mbgMgmtNtpRefclkStateIndex Unsigned32,
        mbgMgmtNtpRefclkStateValid YesNo,
        mbgMgmtNtpRefclkStateRefId DisplayString,
        mbgMgmtNtpRefclkStateStratum Integer32,
        mbgMgmtNtpRefclkStateReach NtpReach,
        mbgMgmtNtpRefclkStateAssocId Integer32,
        mbgMgmtNtpRefclkStateTime NtpTimestamp,
        mbgMgmtNtpRefclkOffset Integer32,
        mbgMgmtNtpRefclkDelay Integer32,
        mbgMgmtNtpRefclkDispersion Integer32,
        mbgMgmtNtpRefclkJitter Integer32
      }

mbgMgmtNtpRefclkStateIndex OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
       "Row index"
    ::= { mbgMgmtNtpRefclkStateTableEntry 1 }

mbgMgmtNtpRefclkStateValid OBJECT-TYPE
    SYNTAX YesNo
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Always check this value first to determine whether row data is valid
       and can be interpreted or not"
    ::= { mbgMgmtNtpRefclkStateTableEntry 2 }

mbgMgmtNtpRefclkStateRefId OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP refclock's reference ID"
    ::= { mbgMgmtNtpRefclkStateTableEntry 3 }

mbgMgmtNtpRefclkStateStratum OBJECT-TYPE
    SYNTAX Integer32 (0..16)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP refclock's stratum value. Please note that a, for example,
        GPS synchronized refclock has got a stratum value of 0"
    ::= { mbgMgmtNtpRefclkStateTableEntry 4 }

mbgMgmtNtpRefclkStateReach OBJECT-TYPE
    SYNTAX NtpReach
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP refclock's reach value"
    ::= { mbgMgmtNtpRefclkStateTableEntry 5 }

mbgMgmtNtpRefclkStateAssocId OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP refclock's association ID given by NTP"
    ::= { mbgMgmtNtpRefclkStateTableEntry 6 }

mbgMgmtNtpRefclkStateTime OBJECT-TYPE
    SYNTAX NtpTimestamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP refclock's internal time"
    ::= { mbgMgmtNtpRefclkStateTableEntry 7 }

mbgMgmtNtpRefclkOffset OBJECT-TYPE
    SYNTAX Integer32
    UNITS "ns"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP refclock's offset"
    ::= { mbgMgmtNtpRefclkStateTableEntry 8 }

mbgMgmtNtpRefclkDelay OBJECT-TYPE
    SYNTAX Integer32
    UNITS "ns"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP refclock's delay"
    ::= { mbgMgmtNtpRefclkStateTableEntry 9 }

mbgMgmtNtpRefclkDispersion OBJECT-TYPE
    SYNTAX Integer32
    UNITS "us"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP refclock's dispersion"
    ::= { mbgMgmtNtpRefclkStateTableEntry 10 }

mbgMgmtNtpRefclkJitter OBJECT-TYPE
    SYNTAX Integer32
    UNITS "us"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP refclock's jitter"
    ::= { mbgMgmtNtpRefclkStateTableEntry 11 }

mbgMgmtNtpPeerStates OBJECT IDENTIFIER ::= { mbgMgmtNtpState 3 }

mbgMgmtNtpPeerStateTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MbgMgmtNtpPeerStateTableEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
         "NTP peer state table"
    ::= { mbgMgmtNtpPeerStates 1 }

mbgMgmtNtpPeerStateTableEntry OBJECT-TYPE
    SYNTAX MbgMgmtNtpPeerStateTableEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
         "List of NTP peer state table entries"
    INDEX { mbgMgmtNtpPeerStateIndex }
    ::= { mbgMgmtNtpPeerStateTable 1 }

MbgMgmtNtpPeerStateTableEntry ::=
    SEQUENCE {
        mbgMgmtNtpPeerStateIndex Unsigned32,
        mbgMgmtNtpPeerStateValid YesNo,
        mbgMgmtNtpPeerStateRefId DisplayString,
        mbgMgmtNtpPeerStateStratum Integer32,
        mbgMgmtNtpPeerStateReach NtpReach,
        mbgMgmtNtpPeerStateAssocId Integer32,
        mbgMgmtNtpPeerStateTime NtpTimestamp,
        mbgMgmtNtpPeerOffset Integer32,
        mbgMgmtNtpPeerDelay Integer32,
        mbgMgmtNtpPeerDispersion Integer32,
        mbgMgmtNtpPeerJitter Integer32
      }

mbgMgmtNtpPeerStateIndex OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
       "Row index"
    ::= { mbgMgmtNtpPeerStateTableEntry 1 }

mbgMgmtNtpPeerStateValid OBJECT-TYPE
    SYNTAX YesNo
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "Always check this value first to determine whether row data is valid
       and can be interpreted or not"
    ::= { mbgMgmtNtpPeerStateTableEntry 2 }

mbgMgmtNtpPeerStateRefId OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP peer's reference ID"
    ::= { mbgMgmtNtpPeerStateTableEntry 3 }

mbgMgmtNtpPeerStateStratum OBJECT-TYPE
    SYNTAX Integer32 (0..16)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP peer's stratum value"
    ::= { mbgMgmtNtpPeerStateTableEntry 4 }

mbgMgmtNtpPeerStateReach OBJECT-TYPE
    SYNTAX NtpReach
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP peer's reach value"
    ::= { mbgMgmtNtpPeerStateTableEntry 5 }

mbgMgmtNtpPeerStateAssocId OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
       "NTP peer's association ID given by NTP"
    ::= { mbgMgmtNtpPeerStateTableEntry 6 }

mbgMgmtNtpPeerStateTime OBJECT-TYPE
    SYNTAX NtpTimestamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP peers's internal time"
    ::= { mbgMgmtNtpPeerStateTableEntry 7 }

mbgMgmtNtpPeerOffset OBJECT-TYPE
    SYNTAX Integer32
    UNITS "ns"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP peer's offset"
    ::= { mbgMgmtNtpPeerStateTableEntry 8 }

mbgMgmtNtpPeerDelay OBJECT-TYPE
    SYNTAX Integer32
    UNITS "ns"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP peers's delay"
    ::= { mbgMgmtNtpPeerStateTableEntry 9 }

mbgMgmtNtpPeerDispersion OBJECT-TYPE
    SYNTAX Integer32
    UNITS "us"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP peer's dispersion"
    ::= { mbgMgmtNtpPeerStateTableEntry 10 }

mbgMgmtNtpPeerJitter OBJECT-TYPE
    SYNTAX Integer32
    UNITS "us"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "NTP peer's jitter"
    ::= { mbgMgmtNtpPeerStateTableEntry 11 }


-- Notifications


mbgMgmtNotifications OBJECT IDENTIFIER ::= { mbgManagement 2 }

mbgMgmtTraps OBJECT IDENTIFIER ::= { mbgMgmtNotifications 0 }

mbgMgmtTrapNtpMainState NOTIFICATION-TYPE
    OBJECTS {
        mbgMgmtNtpSysStateMain,
        sysName
    }
    STATUS  current
    DESCRIPTION
        "NTP daemon state trap"
    ::= { mbgMgmtTraps 1 }

mbgMgmtTrapHeartbeat NOTIFICATION-TYPE
    OBJECTS {
        sysName
    }
    STATUS  current
    DESCRIPTION
        "Cyclic (1s) notification to inform system is alive"
    ::= { mbgMgmtTraps 2 }


-- Conformance and compliance


mbgMgmtConformance  OBJECT IDENTIFIER ::= { mbgManagement 90 }
mbgMgmtCompliances  OBJECT IDENTIFIER ::= { mbgMgmtConformance 1 }
mbgMgmtGroups       OBJECT IDENTIFIER ::= { mbgMgmtConformance 2 }

mbgMgmtCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for SNMP entities"
    MODULE  -- this module
        MANDATORY-GROUPS {
            mbgMgmtObjectsGroup,
            mbgMgmtNotificationGroup
        }
    ::= { mbgMgmtCompliances 1 }


mbgMgmtObjectsGroup OBJECT-GROUP
    OBJECTS {
        mbgMgmtNtpSysStateMain,
        mbgMgmtNtpSysStateRefId,
        mbgMgmtNtpSysStateStratum,
        mbgMgmtNtpSysStateLeapIndicator,
        mbgMgmtNtpSysStateAssocId,
        mbgMgmtNtpSysStateTime,
        mbgMgmtNtpSysStateRootDelay,
        mbgMgmtNtpSysStateRootDispersion,
        mbgMgmtNtpRefclkStateValid,
        mbgMgmtNtpRefclkStateRefId,
        mbgMgmtNtpRefclkStateStratum,
        mbgMgmtNtpRefclkStateReach,
        mbgMgmtNtpRefclkStateAssocId,
        mbgMgmtNtpRefclkStateTime,
        mbgMgmtNtpRefclkOffset,
        mbgMgmtNtpRefclkDelay,
        mbgMgmtNtpRefclkDispersion,
        mbgMgmtNtpRefclkJitter,
        mbgMgmtNtpPeerStateValid,
        mbgMgmtNtpPeerStateRefId,
        mbgMgmtNtpPeerStateStratum,
        mbgMgmtNtpPeerStateReach,
        mbgMgmtNtpPeerStateAssocId,
        mbgMgmtNtpPeerStateTime,
        mbgMgmtNtpPeerOffset,
        mbgMgmtNtpPeerDelay,
        mbgMgmtNtpPeerDispersion,
        mbgMgmtNtpPeerJitter
    }
    STATUS current
    DESCRIPTION
        "The collection of objects for Meinberg's management MIB"
    ::= { mbgMgmtGroups 1 }


mbgMgmtNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        mbgMgmtTrapNtpMainState,
        mbgMgmtTrapHeartbeat
    }
    STATUS current
    DESCRIPTION
        "The collection of notifications for Meinberg's management MIB"
    ::= { mbgMgmtGroups 2 }

END


