-- *****************************************************************
-- CISCO-SDWAN-APP-ROUTE-MIB.my:
-- OID assignments for Cisco app route


-- July 2021, Richard Fu

-- Copyright (c) 2020-2021 by Cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-SDWAN-APP-ROUTE-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY, 
    OBJECT-TYPE,
    Integer32, 
    Unsigned32, 
    Counter64
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION 
        FROM SNMPv2-TC
    ciscoMgmt
        FROM CISCO-SMI;

ciscoSdwanAppRouteMIB MODULE-IDENTITY
    LAST-UPDATED    "202101260000Z"
    ORGANIZATION    "Cisco Systems, Inc. "
    CONTACT-INFO
            "       Cisco Systems
                    Customer Service

            Postal: 170 W Tasman Drive
                    San Jose, CA  95134
                    USA

               Tel: +1 800 553-NETS

            E-mail: cs-snmp@cisco.com"
    DESCRIPTION
            "This module defines the data model for Cisco SDWAN
             application-aware routing operational data"
    REVISION "202101260000Z"
    DESCRIPTION "Cisco SDWAN AppRoute Revision 0.0"
    ::= { ciscoMgmt 1001 }

UnsignedByte ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS      current
    DESCRIPTION "xs:unsignedByte"
    SYNTAX      Unsigned32 (0 .. 255)

UnsignedShort ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS      current
    DESCRIPTION "xs:unsignedShort"
    SYNTAX      Unsigned32 (0 .. 65535)

String ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "1t"
    STATUS      current
    DESCRIPTION "xs:string"
    SYNTAX      OCTET STRING

InetAddressIP ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION "confd:inetAddressIP"
    SYNTAX      OCTET STRING (SIZE (4|16))

ciscoSdwanAppRouteMIBObjects OBJECT IDENTIFIER
                          ::= { ciscoSdwanAppRouteMIB 1 }

ciscoSdwanAppRouteMIBConform  OBJECT IDENTIFIER
                          ::= { ciscoSdwanAppRouteMIB 3 }

-- appRoute OBJECT IDENTIFIER ::= { ciscoSdwanAppRouteMIBObjects 1 }
-- tagpath /app-route
--appRoute OBJECT IDENTIFIER ::= { ciscoSdwanAppRouteMIB 1 }

-- tagpath /app-route/statistics
appRouteStatisticsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AppRouteStatisticsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Statisticst table"
    ::= { ciscoSdwanAppRouteMIBObjects 2 }

-- tagpath /app-route/statistics
appRouteStatisticsEntry OBJECT-TYPE
    SYNTAX      AppRouteStatisticsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Statisticst table entry"
    INDEX { appRouteStatisticsSrcIp, 
            appRouteStatisticsDstIp, 
            appRouteStatisticsProto, 
            appRouteStatisticsSrcPort, 
            appRouteStatisticsDstPort }
        ::= { appRouteStatisticsTable 1 }

AppRouteStatisticsEntry ::=
    SEQUENCE {
        appRouteStatisticsSrcIp InetAddressIP,
        appRouteStatisticsDstIp InetAddressIP,
        appRouteStatisticsProto INTEGER,
        appRouteStatisticsSrcPort UnsignedShort,
        appRouteStatisticsDstPort UnsignedShort,
        appRouteStatisticsRemoteSystemIp InetAddressIP,
        appRouteStatisticsLocalColor INTEGER,
        appRouteStatisticsRemoteColor INTEGER,
        appRouteStatisticsMeanLoss UnsignedByte,
        appRouteStatisticsMeanLatency Unsigned32,
        appRouteStatisticsMeanJitter Unsigned32
    }

-- tagpath /app-route/statistics/src-ip
appRouteStatisticsSrcIp OBJECT-TYPE
    SYNTAX      InetAddressIP
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Local TLOC IP address"
    ::= { appRouteStatisticsEntry 1 }

-- tagpath /app-route/statistics/dst-ip
appRouteStatisticsDstIp OBJECT-TYPE
    SYNTAX      InetAddressIP
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Remote TLOC IP address"
    ::= { appRouteStatisticsEntry 2 }

-- tagpath /app-route/statistics/proto
appRouteStatisticsProto OBJECT-TYPE
    SYNTAX      INTEGER {gre(1),
                         ipsec(2)}
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Protocol or encap"
    ::= { appRouteStatisticsEntry 3 }

-- tagpath /app-route/statistics/src-port
appRouteStatisticsSrcPort OBJECT-TYPE
    SYNTAX      UnsignedShort
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Local port number"
    ::= { appRouteStatisticsEntry 4 }

-- tagpath /app-route/statistics/dst-port
appRouteStatisticsDstPort OBJECT-TYPE
    SYNTAX      UnsignedShort
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Remote port number"
    ::= { appRouteStatisticsEntry 5 }

-- tagpath /app-route/statistics/remote-system-ip
appRouteStatisticsRemoteSystemIp OBJECT-TYPE
    SYNTAX      InetAddressIP
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Remote system IP address"
    ::= { appRouteStatisticsEntry 6 }

-- tagpath /app-route/statistics/local-color
appRouteStatisticsLocalColor OBJECT-TYPE
    SYNTAX      INTEGER {default(1),
                         mpls(2),
                         metroEthernet(3),
                         bizInternet(4),
                         publicInternet(5),
                         lte(6),
                         threeG(7),
                         red(8),
                         green(9),
                         blue(10),
                         gold(11),
                         silver(12),
                         bronze(13),
                         custom1(14),
                         custom2(15),
                         custom3(16),
                         private1(17),
                         private2(18),
                         private3(19),
                         private4(20),
                         private5(21),
                         private6(22)}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Local TLOC color"
    ::= { appRouteStatisticsEntry 7 }

-- tagpath /app-route/statistics/remote-color
appRouteStatisticsRemoteColor OBJECT-TYPE
    SYNTAX      INTEGER {default(1),
                         mpls(2),
                         metroEthernet(3),
                         bizInternet(4),
                         publicInternet(5),
                         lte(6),
                         threeG(7),
                         red(8),
                         green(9),
                         blue(10),
                         gold(11),
                         silver(12),
                         bronze(13),
                         custom1(14),
                         custom2(15),
                         custom3(16),
                         private1(17),
                         private2(18),
                         private3(19),
                         private4(20),
                         private5(21),
                         private6(22)}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Remote TLOC color"
    ::= { appRouteStatisticsEntry 8 }

-- tagpath /app-route/statistics/mean-loss
appRouteStatisticsMeanLoss OBJECT-TYPE
    SYNTAX      UnsignedByte
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Average loss in percentage 
                 across all the polling intervals"
    ::= { appRouteStatisticsEntry 9 }

-- tagpath /app-route/statistics/mean-latency
appRouteStatisticsMeanLatency OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Average latency across all the polling intervals"
    ::= { appRouteStatisticsEntry 10 }

-- tagpath /app-route/statistics/mean-jitter
appRouteStatisticsMeanJitter OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Average jitter across all polling intervals"
    ::= { appRouteStatisticsEntry 12 }

-- tagpath /app-route/statistics/interval
appRouteStatisticsIntervalTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AppRouteStatisticsIntervalEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Statistics interval table"
    ::= { ciscoSdwanAppRouteMIBObjects 3 }

-- tagpath /app-route/statistics/interval
appRouteStatisticsIntervalEntry OBJECT-TYPE
    SYNTAX      AppRouteStatisticsIntervalEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Statistics interval table entry"
    INDEX { appRouteStatisticsSrcIp, 
            appRouteStatisticsDstIp, 
            appRouteStatisticsProto,
	    appRouteStatisticsSrcPort, 
	    appRouteStatisticsDstPort, 
	    appRouteStatisticsIntervalIndex }
        ::= { appRouteStatisticsIntervalTable 1 }

AppRouteStatisticsIntervalEntry ::=
    SEQUENCE {
        appRouteStatisticsIntervalIndex UnsignedByte,
        appRouteStatisticsIntervalTotalPackets Integer32,
        appRouteStatisticsIntervalLoss Integer32,
        appRouteStatisticsIntervalAverageLatency Counter64,
        appRouteStatisticsIntervalAverageJitter Counter64,
        appRouteStatisticsIntervalTxDataPkts Counter64,
        appRouteStatisticsIntervalRxDataPkts Counter64,
        appRouteStatisticsIntervalIpv6TxDataPkts Counter64,
        appRouteStatisticsIntervalIpv6RxDataPkts Counter64
    }

-- tagpath /app-route/statistics/interval/index
appRouteStatisticsIntervalIndex OBJECT-TYPE
    SYNTAX      UnsignedByte
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Polling interval index"
    ::= { appRouteStatisticsIntervalEntry 1 }

-- tagpath /app-route/statistics/interval/total-packets
appRouteStatisticsIntervalTotalPackets OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Total packets sent"
    ::= { appRouteStatisticsIntervalEntry 2 }

-- tagpath /app-route/statistics/interval/loss
appRouteStatisticsIntervalLoss OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Packets lost"
    ::= { appRouteStatisticsIntervalEntry 3 }

-- tagpath /app-route/statistics/interval/average-latency
appRouteStatisticsIntervalAverageLatency OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Average latency"
    ::= { appRouteStatisticsIntervalEntry 4 }

-- tagpath /app-route/statistics/interval/average-jitter
appRouteStatisticsIntervalAverageJitter OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Average jitter"
    ::= { appRouteStatisticsIntervalEntry 5 }

-- tagpath /app-route/statistics/interval/tx-data-pkts
appRouteStatisticsIntervalTxDataPkts OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Data packets transmitted"
    ::= { appRouteStatisticsIntervalEntry 6 }

-- tagpath /app-route/statistics/interval/rx-data-pkts
appRouteStatisticsIntervalRxDataPkts OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Data packets received"
    ::= { appRouteStatisticsIntervalEntry 7 }

-- tagpath /app-route/statistics/interval/ipv6-tx-data-pkts
appRouteStatisticsIntervalIpv6TxDataPkts OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "IPv6 Data packets transmitted"
    ::= { appRouteStatisticsIntervalEntry 8 }

-- tagpath /app-route/statistics/interval/ipv6-rx-data-pkts
appRouteStatisticsIntervalIpv6RxDataPkts OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "IPv6 Data packets received"
    ::= { appRouteStatisticsIntervalEntry 9 }

-- tagpath /app-route/sla-class
appRouteSlaClassTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AppRouteSlaClassEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "SLA class table"
    ::= { ciscoSdwanAppRouteMIBObjects 4 }

-- tagpath /app-route/sla-class
appRouteSlaClassEntry OBJECT-TYPE
    SYNTAX      AppRouteSlaClassEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "SLA class table entry"
    INDEX { appRouteSlaClassIndex }
        ::= { appRouteSlaClassTable 1 }

AppRouteSlaClassEntry ::=
    SEQUENCE {
        appRouteSlaClassIndex UnsignedByte,
        appRouteSlaClassName String,
        appRouteSlaClassLoss UnsignedByte,
        appRouteSlaClassLatency Unsigned32,
        appRouteSlaClassJitter Unsigned32
    }

-- tagpath /app-route/sla-class/index
appRouteSlaClassIndex OBJECT-TYPE
    SYNTAX      UnsignedByte
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "SLA class index"
    ::= { appRouteSlaClassEntry 1 }

-- tagpath /app-route/sla-class/name
appRouteSlaClassName OBJECT-TYPE
    SYNTAX      String
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Name of the SLA class"
    ::= { appRouteSlaClassEntry 2 }

-- tagpath /app-route/sla-class/loss
appRouteSlaClassLoss OBJECT-TYPE
    SYNTAX      UnsignedByte
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Configured loss, in percentage"
    ::= { appRouteSlaClassEntry 3 }

-- tagpath /app-route/sla-class/latency
appRouteSlaClassLatency OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Configured latency, in milliseconds"
    ::= { appRouteSlaClassEntry 4 }

-- tagpath /app-route/sla-class/jitter
appRouteSlaClassJitter OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Configured jitter, in milliseconds"
    ::= { appRouteSlaClassEntry 5 }

-- *******************************************************************
-- *    Compliance statements
-- *******************************************************************

ciscoSdwanAppRouteMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoSdwanAppRouteMIBConform 1 }

ciscoSdwanAppRouteMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoSdwanAppRouteMIBConform 2 }

ciscoSdwanAppRouteMIBCompliance MODULE-COMPLIANCE
    STATUS         current
    DESCRIPTION
        "The compliance statement for the SNMP entities
         that implement the ciscoSdwanAppRouteMIB module."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        cSdwanAppRouteStatisticsGroup,
                        cSdwanAppRouteStatisticsIntervalGroup,
                        cSdwanAppRouteSlaClassGroup
                    }
    ::= { ciscoSdwanAppRouteMIBCompliances 1 }

-- *******************************************************************
-- *    Units of conformance
-- *******************************************************************

cSdwanAppRouteStatisticsGroup OBJECT-GROUP
    OBJECTS         {
                       appRouteStatisticsRemoteSystemIp,
                       appRouteStatisticsLocalColor,
                       appRouteStatisticsRemoteColor,
                       appRouteStatisticsMeanLoss,
                       appRouteStatisticsMeanLatency,
                       appRouteStatisticsMeanJitter
                    }
    STATUS          current
    DESCRIPTION
        "This is a collection of objects of AppRoute statistics."
    ::= { ciscoSdwanAppRouteMIBGroups 1 }

cSdwanAppRouteStatisticsIntervalGroup OBJECT-GROUP
    OBJECTS         {
                       appRouteStatisticsIntervalTotalPackets,
                       appRouteStatisticsIntervalLoss,
                       appRouteStatisticsIntervalAverageLatency,
                       appRouteStatisticsIntervalAverageJitter,
                       appRouteStatisticsIntervalTxDataPkts,
                       appRouteStatisticsIntervalRxDataPkts,
                       appRouteStatisticsIntervalIpv6TxDataPkts,
                       appRouteStatisticsIntervalIpv6RxDataPkts
                    }
    STATUS          current
    DESCRIPTION
        "This is a collection of objects of AppRoute
         statistics interval."
    ::= { ciscoSdwanAppRouteMIBGroups 2 }

cSdwanAppRouteSlaClassGroup OBJECT-GROUP
    OBJECTS         {
                       appRouteSlaClassName,
                       appRouteSlaClassLoss,
                       appRouteSlaClassLatency,
                       appRouteSlaClassJitter
                    }
    STATUS          current
    DESCRIPTION
        "This is a collection of objects of AppRoute SLA class."
    ::= { ciscoSdwanAppRouteMIBGroups 3 }

END
