IP-FORWARD-MIB DEFINITIONS ::= BEGIN

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

    ipForward MODULE-IDENTITY
        LAST-UPDATED "200402091200Z"
        ORGANIZATION
               "IETF IPv6 Working Group
                http://www.ietf.org/html.charters/ipv6-charter.html"
        CONTACT-INFO
               "Editor:
                Brian Haberman
                Caspian Networks
                753 Bridgewater Drive
                Sykesville, MD  21784

                Phone: +1 410 552-1421
                Email: brian@innovationslab.net

                Send comments to <ipv6@ietf.org>"
        DESCRIPTION
               "The MIB module for the management of CIDR multipath IP
                Routes.

                Copyright (C) The Internet Society (2004). This version
                of this MIB module is a part of RFC xxxx; see the RFC
                itself for full legal notices."
        -- RFC Ed : replace xxxx with actual RFC number & remove note

        REVISION      "200402091200Z"
        DESCRIPTION
               "IPv4/v6 version-independent revision.  Minimal changes
                were made to the original RFC 2096 MIB, to allow easy
                upgrade of existing IPv4 implementations to the
                version-independent MIB.  These changes include:

                Adding inetCidrRouteDiscards as a replacement for the
                deprecated ipRoutingDiscards and ipv6DiscardedRoutes
                objects.
                Adding a new conformance statement to support the
                implementation of the IP Forwarding MIB in a
                read-only mode.

                The inetCidrRouteTable replaces the IPv4-specific
                ipCidrRouteTable, its related objects, and related
                conformance statements.

                Published as RFC xxxx."
        -- RFC Ed : replace xxxx with actual RFC number & remove note

        REVISION      "199609190000Z"
        DESCRIPTION
               "Revised to support CIDR routes.
                Published as RFC 2096."

        REVISION      "199207022156Z"
        DESCRIPTION
               "Initial version, published as RFC 1354."
        ::= { ip 24 }

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

    inetCidrRouteDiscards OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The number of valid route entries discarded from
                inetCidrRouteTable.  Discarded route entries do not
                appear in inetCidrRouteTable.  One possible reason for
                discarding an entry would be to free-up buffer space
                for other route table entries."
        ::= { ipForward 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.

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

    inetCidrRouteEntry OBJECT-TYPE
        SYNTAX     InetCidrRouteEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "A particular route to a particular destination, under a
                particular policy (as reflected in the
                inetCidrRoutePolicy object).

                Dynamically created rows will survive an agent reboot.

                Implementers need to be aware that if the total number
                of elements (octets or sub-identifiers) in
                inetCidrRouteDest, inetCidrRoutePolicy, and
                inetCidrRouteNextHop exceeds 111 then OIDs of column
                instances in this table will have more than 128 sub-
                identifiers and cannot be accessed using SNMPv1,
                SNMPv2c, or SNMPv3."
        INDEX {
            inetCidrRouteDestType,
            inetCidrRouteDest,
            inetCidrRoutePfxLen,
            inetCidrRoutePolicy,
            inetCidrRouteNextHopType,
            inetCidrRouteNextHop
            }
        ::= { inetCidrRouteTable 1 }

    InetCidrRouteEntry ::= SEQUENCE {
            inetCidrRouteDestType     InetAddressType,
            inetCidrRouteDest         InetAddress,
            inetCidrRoutePfxLen       InetAddressPrefixLength,
            inetCidrRoutePolicy       OBJECT IDENTIFIER,
            inetCidrRouteNextHopType  InetAddressType,
            inetCidrRouteNextHop      InetAddress,
            inetCidrRouteIfIndex      InterfaceIndexOrZero,
            inetCidrRouteType         INTEGER,
            inetCidrRouteProto        IANAipRouteProtocol,
            inetCidrRouteAge          Gauge32,
            inetCidrRouteNextHopAS    InetAutonomousSystemNumber,
            inetCidrRouteMetric1      Integer32,
            inetCidrRouteMetric2      Integer32,
            inetCidrRouteMetric3      Integer32,
            inetCidrRouteMetric4      Integer32,
            inetCidrRouteMetric5      Integer32,
            inetCidrRouteStatus       RowStatus
        }

    inetCidrRouteDestType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "The type of the inetCidrRouteDest address, as defined
                in the InetAddress MIB.

                Only those address types that may appear in an actual
                routing table are allowed as values of this object."
        REFERENCE "RFC 3291"
        ::= { inetCidrRouteEntry 1 }

    inetCidrRouteDest OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "The destination IP address of this route.

                The type of this address is determined by the value of
                the inetCidrRouteDestType object.

                The values for the index objects inetCidrRouteDest and
                inetCidrRoutePfxLen must be consistent.  When the value
                of inetCidrRouteDest (excluding the zone index, if one
                is present) is x, then the bitwise logical-AND
                of x with the value of the mask formed from the
                corresponding index object inetCidrRoutePfxLen MUST be
                equal to x.  If not, then the index pair is not
                consistent and an inconsistentName error must be
                returned on SET or CREATE requests."

        ::= { inetCidrRouteEntry 2 }

    inetCidrRoutePfxLen OBJECT-TYPE
        SYNTAX     InetAddressPrefixLength
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "Indicates 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
                inetCidrRouteDest field.

                The values for the index objects inetCidrRouteDest and
                inetCidrRoutePfxLen must be consistent.  When the value
                of inetCidrRouteDest (excluding the zone index, if one
                is present) is x, then the bitwise logical-AND
                of x with the value of the mask formed from the
                corresponding index object inetCidrRoutePfxLen MUST be
                equal to x.  If not, then the index pair is not
                consistent and an inconsistentName error must be
                returned on SET or CREATE requests."

        ::= { inetCidrRouteEntry 3 }
    inetCidrRoutePolicy OBJECT-TYPE
        SYNTAX     OBJECT IDENTIFIER
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "This object is an opaque object without any defined
                semantics.  Its purpose is to serve as an additional
                index which may delineate between multiple entries to
                the same destination.  The value { 0 0 } shall be used
                as the default value for this object."
        ::= { inetCidrRouteEntry 4 }

    inetCidrRouteNextHopType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "The type of the inetCidrRouteNextHop address, as
                defined in the InetAddress MIB.

                Value should be set to unknown(0) for non-remote
                routes.

                Only those address types that may appear in an actual
                routing table are allowed as values of this object."
        REFERENCE "RFC 3291"
        ::= { inetCidrRouteEntry 5 }

    inetCidrRouteNextHop OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "On remote routes, the address of the next system en
                route.  For non-remote routes, a zero length string.

                The type of this address is determined by the value of
                the inetCidrRouteNextHopType object."
        ::= { inetCidrRouteEntry 6 }

    inetCidrRouteIfIndex OBJECT-TYPE
        SYNTAX     InterfaceIndexOrZero
        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.  A value of 0 is valid and represents the
                scenario where no interface is specified."
        ::= { inetCidrRouteEntry 7 }

    inetCidrRouteType OBJECT-TYPE
        SYNTAX     INTEGER {
                    other    (1), -- not specified by this MIB
                    reject   (2), -- route which discards traffic and
                                  --   returns ICMP 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."
        ::= { inetCidrRouteEntry 8 }

    inetCidrRouteProto 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."
        ::= { inetCidrRouteEntry 9 }

    inetCidrRouteAge OBJECT-TYPE
        SYNTAX     Gauge32
        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."
        ::= { inetCidrRouteEntry 10 }

    inetCidrRouteNextHopAS 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 inetCidrRouteProto
                value. When this object is unknown or not relevant its
                value should be set to zero."
        DEFVAL { 0 }
        ::= { inetCidrRouteEntry 11 }

    inetCidrRouteMetric1 OBJECT-TYPE
        SYNTAX     Integer32
        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 inetCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { inetCidrRouteEntry 12 }

    inetCidrRouteMetric2 OBJECT-TYPE
        SYNTAX     Integer32
        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 inetCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { inetCidrRouteEntry 13 }

    inetCidrRouteMetric3 OBJECT-TYPE
        SYNTAX     Integer32
        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 inetCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { inetCidrRouteEntry 14 }

    inetCidrRouteMetric4 OBJECT-TYPE
        SYNTAX     Integer32
        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 inetCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { inetCidrRouteEntry 15 }

    inetCidrRouteMetric5 OBJECT-TYPE
        SYNTAX     Integer32
        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 inetCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { inetCidrRouteEntry 16 }

    inetCidrRouteStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
               "The row status variable, used according to row
                installation and removal conventions.

                A row entry cannot be modified when the status is
                marked as active(1)."
        ::= { inetCidrRouteEntry 17 }

    --  Conformance information

    ipForwardConformance
         OBJECT IDENTIFIER ::= { ipForward 5 }

    ipForwardGroups
         OBJECT IDENTIFIER ::= { ipForwardConformance 1 }

    ipForwardCompliances
         OBJECT IDENTIFIER ::= { ipForwardConformance 2 }

    --  Compliance statements

    ipForwardFullCompliance MODULE-COMPLIANCE
        STATUS     current
        DESCRIPTION
               "When this MIB is implemented for read-create, the
                implementation can claim full compliance.
                There are a number of INDEX objects that cannot be
                represented in the form of OBJECT clauses in SMIv2,
                but for which there are compliance requirements,
                expressed in OBJECT clause form in this description:

                -- OBJECT      inetCidrRouteDestType
                -- SYNTAX      InetAddressType (ipv4(1), ipv6(2),
                --                              ipv4z(3), ipv6z(4))
                -- DESCRIPTION
                --     This MIB requires support for global and
                --     non-global ipv4 and ipv6 addresses.
                --
                -- OBJECT      inetCidrRouteDest
                -- SYNTAX      InetAddress (SIZE (4 | 8 | 16 | 20))
                -- DESCRIPTION
                --     This MIB requires support for global and
                --     non-global IPv4 and IPv6 addresses.
                --
                -- OBJECT      inetCidrRouteNextHopType
                -- SYNTAX      InetAddressType (unknown(0), ipv4(1),
                --                              ipv6(2), ipv4z(3)
                --                              ipv6z(4))
                -- DESCRIPTION
                --     This MIB requires support for global and
                --     non-global ipv4 and ipv6 addresses.
                --
                -- OBJECT      inetCidrRouteNextHop
                -- SYNTAX      InetAddress (SIZE (0 | 4 | 8 | 16 | 20))
                -- DESCRIPTION
                --     This MIB requires support for global and
                --     non-global IPv4 and IPv6 addresses.
                "

       MODULE -- this module
       MANDATORY-GROUPS { inetForwardCidrRouteGroup }

       OBJECT        inetCidrRouteStatus
       SYNTAX        RowStatus
       WRITE-SYNTAX  RowStatus 
       DESCRIPTION  "Support for createAndWait is not required."

       ::= { ipForwardCompliances 3 }

    ipForwardReadOnlyCompliance MODULE-COMPLIANCE
       STATUS     current
       DESCRIPTION
               "When this MIB is implemented without support for read-
                create (i.e. in read-only mode), the implementation can
                claim read-only compliance."
       MODULE -- this module
       MANDATORY-GROUPS { inetForwardCidrRouteGroup }

       OBJECT      inetCidrRouteIfIndex
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteType
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteNextHopAS
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteMetric1
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteMetric2
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteMetric3
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteMetric4
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteMetric5
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       OBJECT      inetCidrRouteStatus
       SYNTAX      RowStatus
       MIN-ACCESS  read-only
       DESCRIPTION
          "Write access is not required."

       ::= { ipForwardCompliances 4 }

    -- units of conformance

    inetForwardCidrRouteGroup OBJECT-GROUP
        OBJECTS { inetCidrRouteDiscards,
                  inetCidrRouteIfIndex, inetCidrRouteType,
                  inetCidrRouteProto, inetCidrRouteAge,
                  inetCidrRouteNextHopAS, inetCidrRouteMetric1,
                  inetCidrRouteMetric2, inetCidrRouteMetric3,
                  inetCidrRouteMetric4, inetCidrRouteMetric5,
                  inetCidrRouteStatus, inetCidrRouteNumber
            }
        STATUS     current
        DESCRIPTION
               "The IP version-independent CIDR Route Table."
        ::= { ipForwardGroups 4 }

    --  Deprecated Objects

    ipCidrRouteNumber 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
                inetCidrRouteNumber and the inetCidrRouteTable."
        ::= { ipForward 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.

    ipCidrRouteTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF IpCidrRouteEntry
        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
                inetCidrRouteTable."
        REFERENCE
               "RFC 1213 Section 6.6, The IP Group"
        ::= { ipForward 4 }

    ipCidrRouteEntry OBJECT-TYPE
        SYNTAX     IpCidrRouteEntry
        MAX-ACCESS not-accessible
        STATUS     deprecated
        DESCRIPTION
               "A particular route to a particular destination, under a
                particular policy."
        INDEX {
            ipCidrRouteDest,
            ipCidrRouteMask,
            ipCidrRouteTos,
            ipCidrRouteNextHop
            }
        ::= { ipCidrRouteTable 1 }

    IpCidrRouteEntry ::= SEQUENCE {
            ipCidrRouteDest       IpAddress,
            ipCidrRouteMask       IpAddress,
            ipCidrRouteTos        Integer32,
            ipCidrRouteNextHop    IpAddress,
            ipCidrRouteIfIndex    Integer32,
            ipCidrRouteType       INTEGER,
            ipCidrRouteProto      INTEGER,
            ipCidrRouteAge        Integer32,
            ipCidrRouteInfo       OBJECT IDENTIFIER,
            ipCidrRouteNextHopAS  Integer32,
            ipCidrRouteMetric1    Integer32,
            ipCidrRouteMetric2    Integer32,
            ipCidrRouteMetric3    Integer32,
            ipCidrRouteMetric4    Integer32,
            ipCidrRouteMetric5    Integer32,
            ipCidrRouteStatus     RowStatus
        }

    ipCidrRouteDest 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 ipCidrRouteMask object is
                not equal to x."
        ::= { ipCidrRouteEntry 1 }

    ipCidrRouteMask 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 ipCidrRouteDest field.  For those systems that
                do not support arbitrary subnet masks, an agent
                constructs the value of the ipCidrRouteMask 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 ipCidrRouteDest object is
                not equal to ipCidrRouteDest."
        ::= { ipCidrRouteEntry 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.

    ipCidrRouteTos 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"
        ::= { ipCidrRouteEntry 3 }

    ipCidrRouteNextHop 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."
        ::= { ipCidrRouteEntry 4 }

    ipCidrRouteIfIndex OBJECT-TYPE
        SYNTAX     Integer32
        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 }
        ::= { ipCidrRouteEntry 5 }

    ipCidrRouteType 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."
        ::= { ipCidrRouteEntry 6 }

    ipCidrRouteProto 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."
        ::= { ipCidrRouteEntry 7 }

    ipCidrRouteAge OBJECT-TYPE
        SYNTAX     Integer32
        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 }
        ::= { ipCidrRouteEntry 8 }

    ipCidrRouteInfo 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 ipCidrRouteProto 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."
        ::= { ipCidrRouteEntry 9 }

    ipCidrRouteNextHopAS OBJECT-TYPE
        SYNTAX     Integer32
        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 ipCidrRouteProto
                value. When this object is unknown or not relevant its
                value should be set to zero."
        DEFVAL { 0 }
        ::= { ipCidrRouteEntry 10 }

    ipCidrRouteMetric1 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { ipCidrRouteEntry 11 }

    ipCidrRouteMetric2 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { ipCidrRouteEntry 12 }

    ipCidrRouteMetric3 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { ipCidrRouteEntry 13 }

    ipCidrRouteMetric4 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { ipCidrRouteEntry 14 }

    ipCidrRouteMetric5 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipCidrRouteProto
                value.  If this metric is not used, its value should be
                set to -1."
        DEFVAL { -1 }
        ::= { ipCidrRouteEntry 15 }

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



    -- compliance statements

    ipForwardCompliance MODULE-COMPLIANCE
        STATUS     deprecated
        DESCRIPTION
               "The compliance statement for SNMPv2 entities which
                implement the ipForward MIB.

                This compliance statement has been deprecated and
                replaced with ipForwardFullCompliance and
                ipForwardReadOnlyCompliance."

       MODULE  -- this module
       MANDATORY-GROUPS { ipForwardCidrRouteGroup }

       ::= { ipForwardCompliances 1 }

    -- units of conformance

    ipForwardCidrRouteGroup OBJECT-GROUP
        OBJECTS { ipCidrRouteNumber,
                  ipCidrRouteDest, ipCidrRouteMask, ipCidrRouteTos,
                  ipCidrRouteNextHop, ipCidrRouteIfIndex,
                  ipCidrRouteType, ipCidrRouteProto, ipCidrRouteAge,
                  ipCidrRouteInfo,ipCidrRouteNextHopAS,
                  ipCidrRouteMetric1, ipCidrRouteMetric2,
                  ipCidrRouteMetric3, ipCidrRouteMetric4,
                  ipCidrRouteMetric5, ipCidrRouteStatus
            }
        STATUS     deprecated
        DESCRIPTION
               "The CIDR Route Table.

                This group has been deprecated and replaced with
                inetForwardCidrRouteGroup."
        ::= { ipForwardGroups 3 }
    -- Obsoleted Definitions - Objects

    ipForwardNumber OBJECT-TYPE
        SYNTAX     Gauge32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
               "The number of current ipForwardTable entries that are
                not invalid."
        ::= { ipForward 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.

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

    ipForwardEntry OBJECT-TYPE
        SYNTAX     IpForwardEntry
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
               "A particular route to a particular destination, under a
                particular policy."
        INDEX {
            ipForwardDest,
            ipForwardProto,
            ipForwardPolicy,
            ipForwardNextHop
            }
        ::= { ipForwardTable 1 }

    IpForwardEntry ::= SEQUENCE {
            ipForwardDest       IpAddress,
            ipForwardMask       IpAddress,
            ipForwardPolicy     Integer32,
            ipForwardNextHop    IpAddress,
            ipForwardIfIndex    Integer32,
            ipForwardType       INTEGER,
            ipForwardProto      INTEGER,
            ipForwardAge        Integer32,
            ipForwardInfo       OBJECT IDENTIFIER,
            ipForwardNextHopAS  Integer32,
            ipForwardMetric1    Integer32,
            ipForwardMetric2    Integer32,
            ipForwardMetric3    Integer32,
            ipForwardMetric4    Integer32,
            ipForwardMetric5    Integer32
        }

    ipForwardDest 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 ipForwardMask object is
                not equal to x."
        ::= { ipForwardEntry 1 }

    ipForwardMask 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 ipForwardDest field.  For those systems that do
                not support arbitrary subnet masks, an agent constructs
                the value of the ipForwardMask 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 ipForwardDest object is
                not equal to ipForwardDest."
        DEFVAL { '00000000'H }      -- 0.0.0.0
        ::= { ipForwardEntry 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.

    ipForwardPolicy 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."
        ::= { ipForwardEntry 3 }

    ipForwardNextHop 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."
        ::= { ipForwardEntry 4 }

    ipForwardIfIndex OBJECT-TYPE
        SYNTAX     Integer32
        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 }
        ::= { ipForwardEntry 5 }

    ipForwardType 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
                ipForwardTable 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 ipForwardType object."
        DEFVAL { invalid }
        ::= { ipForwardEntry 6 }

    ipForwardProto 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."
        ::= { ipForwardEntry 7 }

    ipForwardAge OBJECT-TYPE
        SYNTAX     Integer32
        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 }
        ::= { ipForwardEntry 8 }

    ipForwardInfo 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 ipForwardProto 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."
        ::= { ipForwardEntry 9 }

    ipForwardNextHopAS OBJECT-TYPE
        SYNTAX     Integer32
        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 ipForwardProto, zero."
        DEFVAL { 0 }
        ::= { ipForwardEntry 10 }
    ipForwardMetric1 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipForwardProto value.
                If this metric is not used, its value should be set to
                -1."
        DEFVAL { -1 }
        ::= { ipForwardEntry 11 }

    ipForwardMetric2 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipForwardProto value.
                If this metric is not used, its value should be set to
                -1."
        DEFVAL { -1 }
        ::= { ipForwardEntry 12 }

    ipForwardMetric3 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipForwardProto value.
                If this metric is not used, its value should be set to
                -1."
        DEFVAL { -1 }
        ::= { ipForwardEntry 13 }

    ipForwardMetric4 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipForwardProto value.
                If this metric is not used, its value should be set to
                -1."
        DEFVAL { -1 }
        ::= { ipForwardEntry 14 }

    ipForwardMetric5 OBJECT-TYPE
        SYNTAX     Integer32
        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 ipForwardProto value.
                If this metric is not used, its value should be set to
                -1."
        DEFVAL { -1 }
        ::= { ipForwardEntry 15 }

    -- Obsoleted Definitions - Groups
    -- compliance statements

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

       MODULE  -- this module
       MANDATORY-GROUPS { ipForwardMultiPathGroup }

       ::= { ipForwardCompliances 2 }

    ipForwardMultiPathGroup OBJECT-GROUP
        OBJECTS { ipForwardNumber,
                  ipForwardDest, ipForwardMask, ipForwardPolicy,
                  ipForwardNextHop, ipForwardIfIndex, ipForwardType,
                  ipForwardProto, ipForwardAge, ipForwardInfo,
                  ipForwardNextHopAS,
                  ipForwardMetric1, ipForwardMetric2, ipForwardMetric3,
                  ipForwardMetric4, ipForwardMetric5
            }
        STATUS     obsolete
        DESCRIPTION
               "IP Multipath Route Table."
        ::= { ipForwardGroups 2 }

    END



