
-- *************************************************************
-- CISCO-IETF-IP-FORWARD-MIB
--
-- October 2001, Ashwini Dahiya
--
-- Copyright (c) 2001, 2002 by Cisco Systems, Inc.
-- All rights reserved.
-- *************************************************************
--
-- This mib was extracted from
-- draft-ietf-ipngwg-rfc2096-update-00.txt. In terms of object syntax
-- and semantics, the content of this Cisco MIB is the same as the
-- corresponding I-D revision. This Cisco MIB is created due to the
-- "subject to change" nature of the I-Ds. This Cisco MIB may later
-- be deprecated, and the stable RFC, which may replace the I-D, may
-- be implemented in its place.


CISCO-IETF-IP-FORWARD-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    IpAddress, Integer32, Gauge32,
    Unsigned32, Counter32              FROM SNMPv2-SMI
    RowStatus                          FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
    InterfaceIndex                     FROM IF-MIB
    IANAipRouteProtocol                FROM IANA-RTPROTO-MIB
    InetAddress, InetAddressType,
    InetAddressPrefixLength,
    InetAutonomousSystemNumber         FROM INET-ADDRESS-MIB
    ciscoExperiment                    FROM CISCO-SMI;

ciscoIetfIpForward MODULE-IDENTITY
    LAST-UPDATED "200201240000Z"
    ORGANIZATION "Cisco Systems, Inc."
    CONTACT-INFO
           "
            Cisco Systems
            Customer Service
            
            Postal:
            170 West Tasman Drive
            San Jose, CA 95134
            USA

            Phone: +1 800 553-NETS
            Email: <cs-snmp@cisco.com>"
    DESCRIPTION
           "The MIB module for the management of CIDR multipath IP
            Routes."
    ::= { ciscoExperiment 85 }

cInetCidrRouteNumber OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of current cInetCidrRouteTable entries that are
             not invalid."
    ::= { ciscoIetfIpForward 6 }

cInetCidrRouteDiscards OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of routing entries which were chosen to be
             discarded even though they are valid.  One possible reason
             for discarding such an entry could be to free-up buffer
             space for other routing entries."
    ::= { ciscoIetfIpForward 8 }

--  Inet CIDR Route Table

--  The Inet CIDR Route Table deprecates and replaces the ipCidrRoute
--  Table currently in the IP Forwarding Table MIB.
--  It adds IP protocol independence.

cInetCidrRouteTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CInetCidrRouteEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This entity's IP Routing table."
    REFERENCE
       "RFC 1213 Section 6.6, The IP Group"
    ::= { ciscoIetfIpForward 7 }

cInetCidrRouteEntry OBJECT-TYPE
    SYNTAX     CInetCidrRouteEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A particular route to a particular destination, under a
             particular policy."
    INDEX {
             cInetCidrRouteInstance,
             cInetCidrRouteDestType,
             cInetCidrRouteDest,
             cInetCidrRoutePfxLen,
             cInetCidrRouteNextHopType,
             cInetCidrRouteNextHop
        }
    ::= { cInetCidrRouteTable 1 }

CInetCidrRouteEntry ::= SEQUENCE {
        cInetCidrRouteInstance     Unsigned32,
        cInetCidrRouteDestType     InetAddressType,
        cInetCidrRouteDest         InetAddress,
        cInetCidrRoutePfxLen       InetAddressPrefixLength,
        cInetCidrRouteNextHopType  InetAddressType,
        cInetCidrRouteNextHop      InetAddress,
        cInetCidrRouteIfIndex      InterfaceIndex,
        cInetCidrRouteType         INTEGER,
        cInetCidrRouteProto        IANAipRouteProtocol,
        cInetCidrRouteAge          Integer32,
        cInetCidrRouteNextHopAS    InetAutonomousSystemNumber,
        cInetCidrRouteMetric1      Integer32,
        cInetCidrRouteMetric2      Integer32,
        cInetCidrRouteMetric3      Integer32,
        cInetCidrRouteMetric4      Integer32,
        cInetCidrRouteMetric5      Integer32,
        cInetCidrRouteStatus       RowStatus
    }

cInetCidrRouteInstance OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The instance identifier of the (conceptual) routing table
             containing this route.  This identifier may be used to
             represent multiple routing tables, type-of-service routing,
             scopes, or any other use of multiple tables.

             XXX This needs more discussion."
    ::= { cInetCidrRouteEntry 1 }

cInetCidrRouteDestType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The type of cInetCidrRouteDest.  Only IPv4 and IPv6
             addresses are expected."
    ::= { cInetCidrRouteEntry 2 }

cInetCidrRouteDest OBJECT-TYPE
    SYNTAX     InetAddress (SIZE(0..36))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The destination IP address of this route.

             Any assignment (implicit or otherwise) of an instance of
             this object to a value x must be rejected if the bitwise
             logical-AND of x with the value of the mask formed from the
             corresponding instance of the cInetCidrRoutePfxLen object
             is not equal to x."
    ::= { cInetCidrRouteEntry 3 }

cInetCidrRoutePfxLen OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Indicate the number of leading one bits which form the mask
             to be logical-ANDed with the destination address before
             being compared to the value in the cInetCidrRouteDest
             field.

             Any assignment (implicit or otherwise) of an instance of
             this object to a value x must be rejected if the bitwise
             logical-AND of the mask formed from x with the value of the
             corresponding instance of the cInetCidrRouteDest object is
             not equal to cInetCidrRouteDest."
    ::= { cInetCidrRouteEntry 4 }

cInetCidrRouteNextHopType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of inetCidrRouteNextHop.  Must be the same
             as that of cInetCidrRouteDestType, or unknown if there is
             no next hop."
    ::= { cInetCidrRouteEntry 5 }

cInetCidrRouteNextHop OBJECT-TYPE
    SYNTAX     InetAddress (SIZE(0..36))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "On remote routes, the address of the next system en route;
             Otherwise, a zero-length string."
    ::= { cInetCidrRouteEntry 6 }

cInetCidrRouteIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The ifIndex value which identifies the local interface
             through which the next hop of this route should be
             reached."
    ::= { cInetCidrRouteEntry 7 }

cInetCidrRouteType OBJECT-TYPE
    SYNTAX     INTEGER {
                other    (1), -- not specified by this MIB
                reject   (2), -- route which discards traffic and
                              --  returns notification
                local    (3), -- local interface
                remote   (4), -- remote destination
                blackhole(5)  -- route which discards traffic silently
             }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The type of route.  Note that local(3) refers to a route
             for which the next hop is the final destination; remote(4)
             refers to a route for which the next hop is not the final
             destination.

             Routes which do not result in traffic forwarding or
             rejection should not be displayed even if the
             implementation keeps them stored internally.

             reject(2) refers to a route which, if matched, discards the
             message as unreachable and returns a notification (e.g.
             ICMP error) to the message sender.  This is used in some
             protocols as a means of correctly aggregating routes.
             blackhole(5) refers to a route which, if matched, discards
             the message silently."
    ::= { cInetCidrRouteEntry 8 }

cInetCidrRouteProto OBJECT-TYPE
    SYNTAX     IANAipRouteProtocol
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The routing mechanism via which this route was learned.
             Inclusion of values for gateway routing protocols is not
             intended to imply that hosts should support those
             protocols."
    ::= { cInetCidrRouteEntry 9 }

-- XXX new type?  TimeTicks?
cInetCidrRouteAge OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of seconds since this route was last updated or
             otherwise determined to be correct.  Note that no semantics
             of `too old' can be implied except through knowledge of the
             routing protocol by which the route was learned."
    ::= { cInetCidrRouteEntry 10 }

cInetCidrRouteNextHopAS OBJECT-TYPE
    SYNTAX     InetAutonomousSystemNumber
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The Autonomous System Number of the Next Hop.  The
             semantics of this object are determined by the
             routing-protocol specified in the route's
             cInetCidrRouteProto value. When this object is unknown
             or not relevant its value should be set to zero."
    DEFVAL { 0 }
    ::= { cInetCidrRouteEntry 11 }

cInetCidrRouteMetric1 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483648..2147483647)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The primary routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cInetCidrRouteProto value.  If
             this metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cInetCidrRouteEntry 12 }

cInetCidrRouteMetric2 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483648..2147483647)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cInetCidrRouteProto value. If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cInetCidrRouteEntry 13 }

cInetCidrRouteMetric3 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483648..2147483647)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cInetCidrRouteProto value. If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cInetCidrRouteEntry 14 }

cInetCidrRouteMetric4 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483648..2147483647)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cInetCidrRouteProto value. If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cInetCidrRouteEntry 15 }

cInetCidrRouteMetric5 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483648..2147483647)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cInetCidrRouteProto value. If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cInetCidrRouteEntry 16 }

cInetCidrRouteStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The row status variable, used according to row installation
             and removal conventions."
    ::= { cInetCidrRouteEntry 17 }



--  Conformance information

cIpForwardConformance OBJECT IDENTIFIER ::= { ciscoIetfIpForward 5 }

cIpForwardGroups      OBJECT IDENTIFIER ::= { cIpForwardConformance 1 }
cIpForwardCompliances OBJECT IDENTIFIER ::= { cIpForwardConformance 2 }

--  Compliance statements

cIpForwardCompliance2 MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
            "The compliance statement for systems which have routing
             tables.  XXX is this right?"
   MODULE  -- this module
   MANDATORY-GROUPS { cInetForwardCidrRouteGroup }
   ::= { cIpForwardCompliances 3 }

-- units of conformance

cInetForwardCidrRouteGroup OBJECT-GROUP
    OBJECTS { cInetCidrRouteNumber, cInetCidrRouteDiscards,
              cInetCidrRouteIfIndex, cInetCidrRouteType,
              cInetCidrRouteProto, cInetCidrRouteAge,
              cInetCidrRouteNextHopAS, cInetCidrRouteMetric1,
              cInetCidrRouteMetric2, cInetCidrRouteMetric3,
              cInetCidrRouteMetric4, cInetCidrRouteMetric5,
              cInetCidrRouteStatus
        }
    STATUS     current
    DESCRIPTION
            "The IP version independent CIDR Route Table."
    ::= { cIpForwardGroups 4 }

--  Deprecated Objects

cIpCidrRouteNumber OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "The number of current ipCidrRouteTable entries that are not
             invalid.  This object is deprecated in favor of
             cInetCidrRouteNumber and the cInetCidrRouteTable."
    ::= { ciscoIetfIpForward 3 }

--  IP CIDR Route Table

--  The IP CIDR Route Table obsoletes and replaces the ipRoute
--  Table current in MIB-I and MIB-II and the IP Forwarding Table.
--  It adds knowledge of the autonomous system of the next hop,
--  multiple next hops, and policy routing, and Classless
--  Inter-Domain Routing.

cIpCidrRouteTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CIpCidrRouteEntry
    MAX-ACCESS not-accessible
    STATUS     deprecated
    DESCRIPTION
            "This entity's IP Routing table.  This table has been
             deprecated in favor of the IP version neutral
             cInetCidrRouteTable."
    REFERENCE
       "RFC 1213 Section 6.6, The IP Group"
    ::= { ciscoIetfIpForward 4 }

cIpCidrRouteEntry OBJECT-TYPE
    SYNTAX     CIpCidrRouteEntry
    MAX-ACCESS not-accessible
    STATUS     deprecated
    DESCRIPTION
            "A particular route to a particular destination, under a
             particular policy."
    INDEX {
            cIpCidrRouteDest,
            cIpCidrRouteMask,
            cIpCidrRouteTos,
            cIpCidrRouteNextHop
        }
    ::= { cIpCidrRouteTable 1 }

CIpCidrRouteEntry ::= SEQUENCE {
        cIpCidrRouteDest       IpAddress,
        cIpCidrRouteMask       IpAddress,
        cIpCidrRouteTos        Integer32,
        cIpCidrRouteNextHop    IpAddress,
        cIpCidrRouteIfIndex    Integer32,
        cIpCidrRouteType       INTEGER,
        cIpCidrRouteProto      INTEGER,
        cIpCidrRouteAge        Integer32,
        cIpCidrRouteInfo       OBJECT IDENTIFIER,
        cIpCidrRouteNextHopAS  Integer32,
        cIpCidrRouteMetric1    Integer32,
        cIpCidrRouteMetric2    Integer32,
        cIpCidrRouteMetric3    Integer32,
        cIpCidrRouteMetric4    Integer32,
        cIpCidrRouteMetric5    Integer32,
        cIpCidrRouteStatus     RowStatus
    }

cIpCidrRouteDest OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "The destination IP address of this route.

             This object may not take a Multicast (Class D) address
             value.

             Any assignment (implicit or otherwise) of an instance of
             this object to a value x must be rejected if the bitwise
             logical-AND of x with the value of the corresponding
             instance of the cIpCidrRouteMask object is not equal to x."
    ::= { cIpCidrRouteEntry 1 }

cIpCidrRouteMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "Indicate the mask to be logical-ANDed with the destination
             address before being compared to the value in the
             cIpCidrRouteDest field.  For those systems that do not
             support arbitrary subnet masks, an agent constructs the
             value of the cIpCidrRouteMask by reference to the IP
             Address Class.

             Any assignment (implicit or otherwise) of an instance of
             this object to a value x must be rejected if the bitwise
             logical-AND of x with the value of the corresponding
             instance of the cIpCidrRouteDest object is not equal to
             cIpCidrRouteDest."
    ::= { cIpCidrRouteEntry 2 }

-- The following convention is included for specification
-- of TOS Field contents.  At this time, the Host Requirements
-- and the Router Requirements documents disagree on the width
-- of the TOS field.  This mapping describes the Router
-- Requirements mapping, and leaves room to widen the TOS field
-- without impact to fielded systems.

cIpCidrRouteTos OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "The policy specifier is the IP TOS Field.  The encoding
             of IP TOS is as specified by the following convention.
             Zero indicates the default path if no more specific
             policy applies.

             +-----+-----+-----+-----+-----+-----+-----+-----+
             |                 |                       |     |
             |   PRECEDENCE    |    TYPE OF SERVICE    |  0  |
             |                 |                       |     |
             +-----+-----+-----+-----+-----+-----+-----+-----+

                IP TOS                IP TOS
                Field     Policy      Field     Policy
                Contents    Code      Contents    Code
                0 0 0 0  ==>   0      0 0 0 1  ==>   2
                0 0 1 0  ==>   4      0 0 1 1  ==>   6
                0 1 0 0  ==>   8      0 1 0 1  ==>  10
                0 1 1 0  ==>  12      0 1 1 1  ==>  14
                1 0 0 0  ==>  16      1 0 0 1  ==>  18
                1 0 1 0  ==>  20      1 0 1 1  ==>  22
                1 1 0 0  ==>  24      1 1 0 1  ==>  26
                1 1 1 0  ==>  28      1 1 1 1  ==>  30"
    ::= { cIpCidrRouteEntry 3 }

cIpCidrRouteNextHop OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "On remote routes, the address of the next system en route;
             Otherwise, 0.0.0.0."
    ::= { cIpCidrRouteEntry 4 }

cIpCidrRouteIfIndex OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "The ifIndex value which identifies  the local interface
             through which the next hop of this route should be
             reached."
    DEFVAL { 0 }
    ::= { cIpCidrRouteEntry 5 }

cIpCidrRouteType OBJECT-TYPE
    SYNTAX     INTEGER {
                other    (1), -- not specified by this MIB
                reject   (2), -- route which discards traffic
                local    (3), -- local interface
                remote   (4)  -- remote destination
             }
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "The type of route.  Note that local(3) refers to a route
             for which the next hop is the final destination; remote(4)
             refers to a route for which the next hop is not the final
             destination.

             Routes which do not result in traffic forwarding or
             rejection should not be displayed even if the
             implementation keeps them stored internally.

             reject (2) refers to a route which, if matched, discards
             the message as unreachable. This is used in some
             protocols as a means of correctly aggregating routes."
    ::= { cIpCidrRouteEntry 6 }

cIpCidrRouteProto OBJECT-TYPE
    SYNTAX     INTEGER {
                other     (1),  -- not specified
                local     (2),  -- local interface
                netmgmt   (3),  -- static route
                icmp      (4),  -- result of ICMP Redirect

                        -- the following are all dynamic
                        -- routing protocols
                egp        (5),  -- Exterior Gateway Protocol
                ggp        (6),  -- Gateway-Gateway Protocol
                hello      (7),  -- FuzzBall HelloSpeak
                rip        (8),  -- Berkeley RIP or RIP-II
                isIs       (9),  -- Dual IS-IS
                esIs       (10), -- ISO 9542
                ciscoIgrp  (11), -- Cisco IGRP
                bbnSpfIgp  (12), -- BBN SPF IGP
                ospf       (13), -- Open Shortest Path First
                bgp        (14), -- Border Gateway Protocol
                idpr       (15), -- InterDomain Policy Routing
                ciscoEigrp (16)  -- Cisco EIGRP
             }
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "The routing mechanism via which this route was learned.
             Inclusion of values for gateway routing protocols is not
             intended to imply that hosts should support those
             protocols."
    ::= { cIpCidrRouteEntry 7 }

cIpCidrRouteAge OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "The number of seconds since this route was last updated or
             otherwise determined to be correct.  Note that no semantics
             of `too old' can be implied except through knowledge of the
             routing protocol by which the route was learned."
    DEFVAL  { 0 }
    ::= { cIpCidrRouteEntry 8 }

cIpCidrRouteInfo OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "A reference to MIB definitions specific to the particular
             routing protocol which is responsible for this route, as
             determined by the value specified in the route's
             cIpCidrRouteProto value.  If this information is not
             present, its value should be set to the OBJECT IDENTIFIER
             { 0 0 }, which is a syntactically valid object identifier,
             and any implementation conforming to ASN.1 and the Basic
             Encoding Rules must be able to generate and recognize this
             value."
    ::= { cIpCidrRouteEntry 9 }

cIpCidrRouteNextHopAS OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "The Autonomous System Number of the Next Hop.  The
             semantics of this object are determined by the
             routing-protocol specified in the route's
             cIpCidrRouteProto value. When this object is unknown or
             not relevant its value should be set to zero."
    DEFVAL { 0 }
    ::= { cIpCidrRouteEntry 10 }

cIpCidrRouteMetric1 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "The primary routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpCidrRouteProto value.  If
             this metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpCidrRouteEntry 11 }

cIpCidrRouteMetric2 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpCidrRouteProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpCidrRouteEntry 12 }

cIpCidrRouteMetric3 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpCidrRouteProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpCidrRouteEntry 13 }

cIpCidrRouteMetric4 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpCidrRouteProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpCidrRouteEntry 14 }

cIpCidrRouteMetric5 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpCidrRouteProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpCidrRouteEntry 15 }

cIpCidrRouteStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "The row status variable, used according to row installation
             and removal conventions."
    ::= { cIpCidrRouteEntry 16 }



-- compliance statements

cIpForwardCompliance MODULE-COMPLIANCE
    STATUS     deprecated
    DESCRIPTION
            "The compliance statement for SNMPv2 entities which
             implement the ipForward MIB."
   MODULE  -- this module
   MANDATORY-GROUPS { cIpForwardCidrRouteGroup }

   ::= { cIpForwardCompliances 1 }

-- units of conformance

cIpForwardCidrRouteGroup OBJECT-GROUP
    OBJECTS { cIpCidrRouteNumber, cIpCidrRouteDest,
              cIpCidrRouteMask, cIpCidrRouteTos,
              cIpCidrRouteNextHop, cIpCidrRouteIfIndex,
              cIpCidrRouteType, cIpCidrRouteProto,
              cIpCidrRouteAge, cIpCidrRouteInfo,
              cIpCidrRouteNextHopAS, cIpCidrRouteMetric1,
              cIpCidrRouteMetric2, cIpCidrRouteMetric3,
              cIpCidrRouteMetric4, cIpCidrRouteMetric5,
              cIpCidrRouteStatus
        }
    STATUS     deprecated
    DESCRIPTION
            "The CIDR Route Table."
    ::= { cIpForwardGroups 3 }

-- Obsoleted Definitions - Objects

cIpForwardNumber OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
            "The number of current cIpForwardTable entries that are not
             invalid."
    ::= { ciscoIetfIpForward 1 }

--  IP Forwarding Table

--  The IP Forwarding Table obsoletes and replaces the ipRoute
--  Table current in MIB-I and MIB-II.  It adds knowledge of
--  the autonomous system of the next hop, multiple next hop
--  support, and policy routing support.

cIpForwardTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CIpForwardEntry
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
            "This entity's IP Routing table."
    REFERENCE
       "RFC 1213 Section 6.6, The IP Group"
    ::= { ciscoIetfIpForward 2 }

cIpForwardEntry OBJECT-TYPE
    SYNTAX     CIpForwardEntry
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
            "A particular route to a particular destination, under a
             particular policy."
    INDEX {
        cIpForwardDest,
        cIpForwardProto,
        cIpForwardPolicy,
        cIpForwardNextHop
        }
    ::= { cIpForwardTable 1 }

CIpForwardEntry ::= SEQUENCE {
        cIpForwardDest       IpAddress,
        cIpForwardMask       IpAddress,
        cIpForwardPolicy     Integer32,
        cIpForwardNextHop    IpAddress,
        cIpForwardIfIndex    Integer32,
        cIpForwardType       INTEGER,
        cIpForwardProto      INTEGER,
        cIpForwardAge        Integer32,
        cIpForwardInfo       OBJECT IDENTIFIER,
        cIpForwardNextHopAS  Integer32,
        cIpForwardMetric1    Integer32,
        cIpForwardMetric2    Integer32,
        cIpForwardMetric3    Integer32,
        cIpForwardMetric4    Integer32,
        cIpForwardMetric5    Integer32
    }

cIpForwardDest OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
            "The destination IP address of this route.  An entry with a
             value of 0.0.0.0 is considered a default route.

             This object may not take a Multicast (Class D) address
             value.

             Any assignment (implicit or otherwise) of an instance of
             this object to a value x must be rejected if the bitwise
             logical-AND of x with the value of the corresponding
             instance of the cIpForwardMask object is not equal to x."
    ::= { cIpForwardEntry 1 }

cIpForwardMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "Indicate the mask to be logical-ANDed with the destination
             address before being compared to the value in the
             cIpForwardDest field.  For those systems that do not
             support arbitrary subnet masks, an agent constructs the
             value of the cIpForwardMask by reference to the IP
             Address Class.

             Any assignment (implicit or otherwise) of an instance of
             this object to a value x must be rejected if the bitwise
             logical-AND of x with the value of the corresponding
             instance of the cIpForwardDest object is not equal to
             cIpForwardDest."
    DEFVAL { '00000000'h }      -- 0.0.0.0
    ::= { cIpForwardEntry 2 }

-- The following convention is included for specification
-- of TOS Field contents.  At this time, the Host Requirements
-- and the Router Requirements documents disagree on the width
-- of the TOS field.  This mapping describes the Router
-- Requirements mapping, and leaves room to widen the TOS field
-- without impact to fielded systems.

cIpForwardPolicy OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
            "The general set of conditions that would cause
             the selection of one multipath route (set of
             next hops for a given destination) is referred
             to as 'policy'.

             Unless the mechanism indicated by ipForwardProto
             specifies otherwise, the policy specifier is
             the IP TOS Field.  The encoding of IP TOS is as
             specified by the following convention.  Zero
             indicates the default path if no more specific
             policy applies.

             +-----+-----+-----+-----+-----+-----+-----+-----+
             |                 |                       |     |
             |   PRECEDENCE    |    TYPE OF SERVICE    |  0  |
             |                 |                       |     |
             +-----+-----+-----+-----+-----+-----+-----+-----+

               IP TOS                IP TOS
               Field     Policy      Field     Policy
               Contents    Code      Contents    Code
               0 0 0 0  ==>   0      0 0 0 1  ==>   2
               0 0 1 0  ==>   4      0 0 1 1  ==>   6
               0 1 0 0  ==>   8      0 1 0 1  ==>  10
               0 1 1 0  ==>  12      0 1 1 1  ==>  14
               1 0 0 0  ==>  16      1 0 0 1  ==>  18
               1 0 1 0  ==>  20      1 0 1 1  ==>  22
               1 1 0 0  ==>  24      1 1 0 1  ==>  26
               1 1 1 0  ==>  28      1 1 1 1  ==>  30

             Protocols defining 'policy' otherwise must either
             define a set of values which are valid for
             this object or must implement an integer-instanced
             policy table for which this object's
             value acts as an index."
    ::= { cIpForwardEntry 3 }

cIpForwardNextHop OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
            "On remote routes, the address of the next system en route;
             Otherwise, 0.0.0.0."
    ::= { cIpForwardEntry 4 }

cIpForwardIfIndex OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "The ifIndex value which identifies the local interface
             through which the next hop of this route should be
             reached."
    DEFVAL { 0 }
    ::= { cIpForwardEntry 5 }

cIpForwardType OBJECT-TYPE
    SYNTAX     INTEGER {
                other    (1), -- not specified by this MIB
                invalid  (2), -- logically deleted
                local    (3), -- local interface
                remote   (4)  -- remote destination
             }
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "The type of route.  Note that local(3) refers to a route
             for which the next hop is the final destination; remote(4)
             refers to a route for which the next hop is not the final
             destination.

             Setting this object to the value invalid(2) has the effect
             of invalidating the corresponding entry in the
             cIpForwardTable object.  That is, it effectively
             disassociates the destination identified with said entry
             from the route identified with said entry.  It is an
             implementation-specific matter as to whether the agent
             removes an invalidated entry from the table.  Accordingly,
             management stations must be prepared to receive tabular
             information from agents that corresponds to entries not
             currently in use.  Proper interpretation of such entries
             requires examination of the relevant cIpForwardType
             object."
    DEFVAL { invalid }
    ::= { cIpForwardEntry 6 }

cIpForwardProto OBJECT-TYPE
    SYNTAX     INTEGER {
                other     (1),  -- not specified
                local     (2),  -- local interface
                netmgmt   (3),  -- static route
                icmp      (4),  -- result of ICMP Redirect

                        -- the following are all dynamic
                        -- routing protocols
                egp       (5),  -- Exterior Gateway Protocol
                ggp       (6),  -- Gateway-Gateway Protocol
                hello     (7),  -- FuzzBall HelloSpeak
                rip       (8),  -- Berkeley RIP or RIP-II
                is-is     (9),  -- Dual IS-IS
                es-is     (10), -- ISO 9542
                ciscoIgrp (11), -- Cisco IGRP
                bbnSpfIgp (12), -- BBN SPF IGP
                ospf      (13), -- Open Shortest Path First
                bgp       (14), -- Border Gateway Protocol
                idpr      (15)  -- InterDomain Policy Routing
             }
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
            "The routing mechanism via which this route was learned.
             Inclusion of values for gateway routing protocols is not
             intended to imply that hosts should support those
             protocols."
    ::= { cIpForwardEntry 7 }

cIpForwardAge OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
            "The number of seconds since this route was last updated or
             otherwise determined to be correct.  Note that no semantics
             of `too old' can be implied except through knowledge of the
             routing protocol by which the route was learned."
    DEFVAL  { 0 }
    ::= { cIpForwardEntry 8 }

cIpForwardInfo OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "A reference to MIB definitions specific to the particular
             routing protocol which is responsible for this route, as
             determined by the value specified in the route's
             cIpForwardProto value.  If this information is not present,
             its value should be set to the OBJECT IDENTIFIER { 0 0 },
             which is a syntactically valid object identifier, and any
             implementation conforming to ASN.1 and the Basic Encoding
             Rules must be able to generate and recognize this value."
    ::= { cIpForwardEntry 9 }

cIpForwardNextHopAS OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "The Autonomous System Number of the Next Hop.  When this is
             unknown or not relevant to the protocol indicated by
             cIpForwardProto, zero."
    DEFVAL { 0 }
    ::= { cIpForwardEntry 10 }

cIpForwardMetric1 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "The primary routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpForwardProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpForwardEntry 11 }

cIpForwardMetric2 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpForwardProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpForwardEntry 12 }

cIpForwardMetric3 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpForwardProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpForwardEntry 13 }

cIpForwardMetric4 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpForwardProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpForwardEntry 14 }

cIpForwardMetric5 OBJECT-TYPE
    SYNTAX     Integer32 (-2147483647..2147483647)
    MAX-ACCESS read-create
    STATUS     obsolete
    DESCRIPTION
            "An alternate routing metric for this route.  The semantics
             of this metric are determined by the routing-protocol
             specified in the route's cIpForwardProto value.  If this
             metric is not used, its value should be set to -1."
    DEFVAL { -1 }
    ::= { cIpForwardEntry 15 }



-- Obsoleted Definitions - Groups
-- compliance statements

cIpForwardOldCompliance MODULE-COMPLIANCE
    STATUS     obsolete
    DESCRIPTION
            "The compliance statement for SNMP entities which implement
             the ipForward MIB."

   MODULE  -- this module
   MANDATORY-GROUPS { cIpForwardMultiPathGroup }

   ::= { cIpForwardCompliances 2 }

cIpForwardMultiPathGroup OBJECT-GROUP
    OBJECTS { cIpForwardNumber,
              cIpForwardDest, cIpForwardMask, cIpForwardPolicy,
              cIpForwardNextHop, cIpForwardIfIndex, cIpForwardType,
              cIpForwardProto, cIpForwardAge, cIpForwardInfo,
              cIpForwardNextHopAS,
              cIpForwardMetric1, cIpForwardMetric2, cIpForwardMetric3,
              cIpForwardMetric4, cIpForwardMetric5
        }
    STATUS     obsolete
    DESCRIPTION
            "IP Multipath Route Table."
    ::= { cIpForwardGroups 2 }

END
