-------------------------------------------------------------------------------
-- ACMEPACKET-DIAMETER-MIB.txt:  Acme Packet Diameter MIB
--
-- July 2011
--
-- Copyright (c) by Acme Packet, Inc.
-- All rights reserved.
-------------------------------------------------------------------------------
-- 

AP-DIAMETER-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Integer32, Gauge32, Counter32, Unsigned32, IpAddress
                    FROM SNMPv2-SMI
        TEXTUAL-CONVENTION
                    FROM SNMPv2-TC
    DisplayString
                    FROM SNMPv2-TC
        InterfaceIndexOrZero
                    FROM IF-MIB
        MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                    FROM SNMPv2-CONF
    acmepacketMgmt
                    FROM ACMEPACKET-SMI

    InetAddress, InetAddressType, InetPortNumber             
        FROM INET-ADDRESS-MIB

    ApTransportType, ApDiamResultCode
                    FROM ACMEPACKET-TC
    SysMgmtPercentage
                    FROM APSYSMGMT-MIB;
     
apDiameterModule   MODULE-IDENTITY
           LAST-UPDATED     "201107060000Z"
           ORGANIZATION     "Acme Packet, Inc"
           CONTACT-INFO
              "         Customer Service
                        Postal: Acme Packet, Inc
                                100 Crosby Drive
                                Bedford, MA 01730
                                US
                        Tel:    1-781-328-4400
                        E-mail: support@acmepacket.com"
        DESCRIPTION
            "The Accounting MIB for Acme Packet."
        ::= { acmepacketMgmt 13 }

apDiamMIBModule OBJECT IDENTIFIER ::= { apDiameterModule 1 }
apDiamMIBObjects OBJECT IDENTIFIER ::= { apDiamMIBModule 1 }
apDiamNotificationObjects OBJECT IDENTIFIER ::= { apDiamMIBModule 2 }
apDiamNotifObjects OBJECT IDENTIFIER ::= { apDiamNotificationObjects 1 }
apDiamNotifPrefix  OBJECT IDENTIFIER ::= { apDiamNotificationObjects 2 }
apDiamNotifications  OBJECT IDENTIFIER ::= { apDiamNotifPrefix 0 }

-- Textual Conventions
apDiamiMIBTabularObjects OBJECT IDENTIFIER ::= {apDiamMIBObjects 2}

-- conformance information

apDiamConformance OBJECT IDENTIFIER ::= { apDiamMIBModule 3 }    
apDiamObjectGroups OBJECT IDENTIFIER ::= { apDiamConformance 1 }      
apDiamNotificationGroups OBJECT IDENTIFIER ::= { apDiamObjectGroups 2 }

-- Tables

apDiamClfErrorStatsTable OBJECT-TYPE
        SYNTAX          	SEQUENCE OF ApDiamClfErrorStatsEntry
        MAX-ACCESS      	not-accessible
        STATUS         	 	current
        DESCRIPTION
	    "Error Stats per external policy server."
        ::= { apDiamiMIBTabularObjects 1 }

apDiamClfErrorStatsEntry  OBJECT-TYPE
        SYNTAX          	ApDiamClfErrorStatsEntry
        MAX-ACCESS      	not-accessible
        STATUS          	current
        DESCRIPTION
	    "A table entry designed to hold error status data"
        INDEX { apDiamClfExtPolSvrIndex }
        ::= { apDiamClfErrorStatsTable 1 }

ApDiamClfErrorStatsEntry ::= SEQUENCE {
	apDiamClfExtPolSvrIndex			INTEGER,
	apDiamClfExtPolSvrName			DisplayString,	
	apDiamClfErrorsRecent                   Gauge32,
	apDiamClfErrorsTotal                    Counter32,
	apDiamClfErrorsPerMax                   Counter32
}

apDiamClfExtPolSvrIndex OBJECT-TYPE
        SYNTAX			INTEGER (1..2147483647)
        MAX-ACCESS		not-accessible
        STATUS			current
        DESCRIPTION
	    "An integer for the sole purpose of indexing the external policy servers."
	::= {apDiamClfErrorStatsEntry 1}


apDiamClfExtPolSvrName OBJECT-TYPE
	SYNTAX 			DisplayString (SIZE (0..255))
	MAX-ACCESS		read-only
	STATUS			current
	DESCRIPTION
	    "Ext policy server name"
	::= { apDiamClfErrorStatsEntry   2}

apDiamClfErrorsRecent OBJECT-TYPE
	SYNTAX			Gauge32
	MAX-ACCESS 		read-only
	STATUS			current
	DESCRIPTION
	    "Number of diameter errors in recent period received on e2 interface with the CLF."
	::= { apDiamClfErrorStatsEntry   3}

apDiamClfErrorsTotal OBJECT-TYPE
	SYNTAX			Counter32
	MAX-ACCESS 		read-only
	STATUS			current
	DESCRIPTION
	    "Total number of diameter errors in life time received on e2 interface with the CLF."
	::= { apDiamClfErrorStatsEntry   4}

apDiamClfErrorsPerMax OBJECT-TYPE
	SYNTAX			Counter32
	MAX-ACCESS 		read-only
	STATUS			current
	DESCRIPTION
	    "PerMax count of diameter errors in life time received on e2 interface with the CLF."
	::= { apDiamClfErrorStatsEntry   5}
    
apDiamInterfaceStatsTable OBJECT-TYPE
        SYNTAX          	SEQUENCE OF ApDiamInterfaceStatsEntry
        MAX-ACCESS      	not-accessible
        STATUS         	 	current
        DESCRIPTION	    
	    "The table of DIAMETER statistics per interface."
        ::= { apDiamiMIBTabularObjects 2 }

apDiamInterfaceStatsEntry  OBJECT-TYPE
        SYNTAX          	ApDiamInterfaceStatsEntry
        MAX-ACCESS      	not-accessible
        STATUS          	current
        DESCRIPTION
	    "A table entry designed to hold interface stats data"        
	INDEX { apDiamInterfaceType, apDiamInterfaceAddress }
        ::= { apDiamInterfaceStatsTable 1 }

ApDiamInterfaceStatsEntry ::=
        SEQUENCE {
	        apDiamInterfaceType		        InetAddressType,
		apDiamInterfaceAddress			InetAddress,		
		apDiamMessagesSent			Unsigned32,
		apDiamMessagesSentFailed		Unsigned32,
		apDiamMessagesReSent			Unsigned32,
		apDiamMessagesReceived			Unsigned32,
		apDiamMessagesProcessed			Unsigned32,
		apDiamConnectionTimeouts		Unsigned32,
		apDiamBadStateDrops			Unsigned32,
		apDiamBadTypeDrops			Unsigned32,
		apDiamBadIDDrops			Unsigned32,
		apDiamAuthFailDrops			Unsigned32,
		apDiamInvalidPeerMessages		Unsigned32
		}

apDiamInterfaceType OBJECT-TYPE
        SYNTAX		InetAddressType
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "IPAddress type of the DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 1 }

apDiamInterfaceAddress OBJECT-TYPE
        SYNTAX		InetAddress
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
		"IPAddress of the DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 2 }

apDiamMessagesSent OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of messages sent to this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 3 }

apDiamMessagesSentFailed OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of messages sent failed to this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 4 }

apDiamMessagesReSent OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of messages resent to this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 5 }

apDiamMessagesReceived OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of messages received from this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 6 }

apDiamMessagesProcessed OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of messages processed from this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 7 }

apDiamConnectionTimeouts OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of connection timeouts on this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 8 }

apDiamBadStateDrops OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of bad state drops from this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 9 }

apDiamBadTypeDrops OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of bad type drops from this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 10 }

apDiamBadIDDrops OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of bad id drops from this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 11 }

apDiamAuthFailDrops OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of authentication failure drops on this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 12 }

apDiamInvalidPeerMessages OBJECT-TYPE
        SYNTAX		Unsigned32
        MAX-ACCESS	read-only
        STATUS		current
        DESCRIPTION
                "Number of invalid peer messages received from this DIAMETER server"
        ::= { apDiamInterfaceStatsEntry 13 }

-- Notifications

apDiamAcctSrvrHostName OBJECT-TYPE
        SYNTAX                  DisplayString (SIZE (1..255)) 
        MAX-ACCESS              accessible-for-notify
        STATUS                  current
        DESCRIPTION
                "The Diameter Accounting Server host name."
        ::= { apDiamNotifObjects 1 }

apDiamAcctSrvrIPPort OBJECT-TYPE
        SYNTAX                  DisplayString (SIZE (1..255))
        MAX-ACCESS              accessible-for-notify
        STATUS                  current
        DESCRIPTION
                "The Diameter Accounting Server IP address and port number:
                 XX.XX.XX.XX:P"
        ::= { apDiamNotifObjects 2 }
        
apDiamAcctSrvrOriginRealm OBJECT-TYPE
        SYNTAX                  DisplayString (SIZE (1..255)) 
        MAX-ACCESS              accessible-for-notify
        STATUS                  current
        DESCRIPTION
                "The Diameter Accounting Server Origin Realm."
        ::= { apDiamNotifObjects 3 }

apDiamAcctSrvrOriginHost OBJECT-TYPE
        SYNTAX                  DisplayString (SIZE (1..255)) 
        MAX-ACCESS              accessible-for-notify
        STATUS                  current
        DESCRIPTION
                "The Diameter Accounting Server Origin Host."
        ::= { apDiamNotifObjects 4 }

apDiamAcctSrvrTransportType OBJECT-TYPE
        SYNTAX                  ApTransportType
        MAX-ACCESS              accessible-for-notify
        STATUS                  current
        DESCRIPTION
                "The Diameter Accounting Server Transport Type."
        ::= { apDiamNotifObjects 5 }

apAcctMsgQueueAvailCurrent OBJECT-TYPE
       SYNTAX                SysMgmtPercentage
       MAX-ACCESS            accessible-for-notify
       STATUS                current
       DESCRIPTION
              "The current measured percentage value of
              space available."
       ::= { apDiamNotifObjects 6 }

apAcctMsgQueueMinorThreshold OBJECT-TYPE
       SYNTAX                SysMgmtPercentage
       MAX-ACCESS            accessible-for-notify
       STATUS                current
       DESCRIPTION
              "The current configured minor threshold value."
       ::= { apDiamNotifObjects 7 }

apAcctMsgQueueMajorThreshold OBJECT-TYPE
       SYNTAX                SysMgmtPercentage
       MAX-ACCESS            accessible-for-notify
       STATUS                current
       DESCRIPTION
              "The current configured major threshold value."
       ::= { apDiamNotifObjects 8 }

apAcctMsgQueueCriticalThreshold OBJECT-TYPE
       SYNTAX                SysMgmtPercentage
       MAX-ACCESS            accessible-for-notify
       STATUS                current
       DESCRIPTION
              "The current configured critical threshold value"
       ::= { apDiamNotifObjects 9 }
       
apDiameterResultCode OBJECT-TYPE
       SYNTAX                ApDiamResultCode
       MAX-ACCESS            accessible-for-notify
       STATUS                current
       DESCRIPTION
              "The Result-Code AVP (268) value 
               RFC 3588, 7.1. Result-Code AVP"
       ::= { apDiamNotifObjects 10 }
       

apDiameterAcctSrvrUpTrap       NOTIFICATION-TYPE
        OBJECTS         { apDiamAcctSrvrHostName,
                          apDiamAcctSrvrIPPort,
                          apDiamAcctSrvrOriginRealm,
                          apDiamAcctSrvrOriginHost,
                          apDiamAcctSrvrTransportType
                        }
        STATUS          current
        DESCRIPTION
            " The trap will be generated when the Diameter Accounting Server
              goes up"
        ::= { apDiamNotifications 1 }
        
apDiameterAcctSrvrDownTrap       NOTIFICATION-TYPE
        OBJECTS         { apDiamAcctSrvrHostName,
                          apDiamAcctSrvrIPPort,
                          apDiamAcctSrvrOriginRealm,
                          apDiamAcctSrvrOriginHost,
                          apDiamAcctSrvrTransportType
                        }
        STATUS          current
        DESCRIPTION
            " The trap will be generated when the Diameter Accounting Server
              goes down"
        ::= { apDiamNotifications 2 }

apAcctMsgQueueFullTrap        NOTIFICATION-TYPE
        OBJECTS         { apAcctMsgQueueAvailCurrent,
                          apAcctMsgQueueMinorThreshold,
                          apAcctMsgQueueMajorThreshold,
                          apAcctMsgQueueCriticalThreshold
                        }
        STATUS          current
        DESCRIPTION
            "The trap will be generated when the accounting message 
             queue is full and all accounting servers are down"
        ::= { apDiamNotifications 3 }

apAcctMsgQueueFullClearTrap        NOTIFICATION-TYPE
        OBJECTS         { apAcctMsgQueueAvailCurrent,
                          apAcctMsgQueueMinorThreshold,
                          apAcctMsgQueueMajorThreshold,
                          apAcctMsgQueueCriticalThreshold
                        }
        STATUS          current
        DESCRIPTION
            "The trap will be generated when the apAcctMsgQueueFullTrap condition clears"
        ::= { apDiamNotifications 4 }

apDiameterSrvrErrorResultTrap       NOTIFICATION-TYPE
        OBJECTS         { apDiamAcctSrvrHostName,
                          apDiamAcctSrvrIPPort,
                          apDiamAcctSrvrOriginRealm,
                          apDiamAcctSrvrOriginHost,
                          apDiamAcctSrvrTransportType,
                          apDiameterResultCode
                        }
        STATUS          current
        DESCRIPTION
            " The trap can be generated when the Diameter Server
              returns 3xxx (Protocol Errors), 4xxx (Transient Failures), or
              5xxx (Permanent Failure) Result-Code AVP (268)"
        ::= { apDiamNotifications 5 }

apDiameterSrvrSuccessResultTrap       NOTIFICATION-TYPE
        OBJECTS         { apDiamAcctSrvrHostName,
                          apDiamAcctSrvrIPPort,
                          apDiamAcctSrvrOriginRealm,
                          apDiamAcctSrvrOriginHost,
                          apDiamAcctSrvrTransportType,
                          apDiameterResultCode
                        }
        STATUS          current
        DESCRIPTION
            " The trap can be generated when the Diameter Server
              returns a 2xxx (Success) Result-Code AVP (268) 
              after an error result"
        ::= { apDiamNotifications 6 }

-- compliance statements

-- units of conformance


----------------------------------------------------
--
-- apDiamACCTNotificationGroups
--
----------------------------------------------------

apDiamACCTObjectsGroup OBJECT-GROUP
     OBJECTS {
             apDiamAcctSrvrHostName,
             apDiamAcctSrvrIPPort,
             apDiamAcctSrvrOriginRealm,
             apDiamAcctSrvrOriginHost,
             apDiamAcctSrvrTransportType
             }
     STATUS     current
     DESCRIPTION
     "A collection of mib objects accessible only to traps."
      ::= { apDiamNotificationGroups 1 }

apDiamACCTNotificationsGroup NOTIFICATION-GROUP
     NOTIFICATIONS {
           apDiameterAcctSrvrUpTrap,
           apDiameterAcctSrvrDownTrap,
           apAcctMsgQueueFullTrap,
           apAcctMsgQueueFullClearTrap
           }
     STATUS     current
      DESCRIPTION
      "A collection of traps defined for ACCT."
      ::= { apDiamNotificationGroups 2 }

apDiamACCTResultObjectsGroup OBJECT-GROUP
     OBJECTS {
             apDiameterResultCode
             }
     STATUS     current
     DESCRIPTION
     "A collection of mib objects accessible only to traps."
      ::= { apDiamNotificationGroups 3 }

apDiamACCTResultNotificationsGroup NOTIFICATION-GROUP
     NOTIFICATIONS {
           apDiameterSrvrErrorResultTrap,
           apDiameterSrvrSuccessResultTrap
           }
     STATUS     current
      DESCRIPTION
      "A collection of traps defined for ACCT Result Code."
      ::= { apDiamNotificationGroups 4 }

----------------------------------------------------
--
-- apDiamObjectGroups
--
----------------------------------------------------

apDiamClfErrorStatsGroup OBJECT-GROUP
    OBJECTS {
    	apDiamClfExtPolSvrName,
	apDiamClfErrorsRecent ,
	apDiamClfErrorsTotal,
	apDiamClfErrorsPerMax	          
	     }
      STATUS		current
      DESCRIPTION
	  "A collection of statistics for CLF errors perr ext pol svr."
      ::= {  apDiamObjectGroups 1 }

apDiamInterfaceStatsGroup OBJECT-GROUP
    OBJECTS {	
	apDiamMessagesSent,
	apDiamMessagesSentFailed,
	apDiamMessagesReSent,
	apDiamMessagesReceived,
	apDiamMessagesProcessed,
	apDiamConnectionTimeouts,
	apDiamBadStateDrops,
	apDiamBadTypeDrops,
	apDiamBadIDDrops,
	apDiamAuthFailDrops,
	apDiamInvalidPeerMessages
	     }
      STATUS		current
      DESCRIPTION
	  "A collection of statistics for DIAMETER server."
      ::= {  apDiamObjectGroups 2 }

END
